Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack šŸŽ‰ Learn more
LibreChat

Estrutura do Objeto de Servidores MCP

Exemplo

# Example MCP Servers Object Structure
mcpServers:
  everything:
    # type: sse # type can optionally be omitted
    url: http://localhost:3001/sse
  googlesheets:
    type: sse
    url: https://mcp.composio.dev/googlesheets/some-endpoint
    requiresOAuth: true
    headers:
      X-User-ID: '{{LIBRECHAT_USER_ID}}'
      X-API-Key: '${SOME_API_KEY}'
    serverInstructions: true # Use server-provided instructions
  puppeteer:
    type: stdio
    command: npx
    args:
      - -y
      - '@modelcontextprotocol/server-puppeteer'
    serverInstructions: 'Do not access any local files or local/internal IP addresses'
  filesystem:
    # type: stdio
    command: npx
    args:
      - -y
      - '@modelcontextprotocol/server-filesystem'
      - /home/user/LibreChat/
    iconPath: /home/user/LibreChat/client/public/assets/logo.svg
    # The ā€œwrenchā€ icon shows up if no icon is provided as it is the default rendering.
  mcp-obsidian:
    command: npx
    args:
      - -y
      - 'mcp-obsidian'
      - /path/to/obsidian/vault
  streamable-http-server:
    type: streamable-http
    url: https://example.com/api/
    proxy: '${MCP_PROXY_URL}'
  per-user-credentials-example:
    type: streamable-http
    url: 'https://example.com/api/'
    headers:
      X-Auth-Token: '{{MY_SERVICE_API_KEY}}'
    customUserVars:
      MY_SERVICE_API_KEY:
        title: 'My Service API Key'
        description: "Enter your personal API key for the service. You can generate one at <a href='https://myservice.example.com/developer/keys' target='_blank'>Service Developer Portal</a>."
        sensitive: true
      MY_SERVICE_PROJECT:
        title: 'Project ID'
        description: 'Enter the project ID used by this service.'
        sensitive: false
  oauth-example:
    type: streamable-http
    url: https://api.example.com/mcp/
    oauth:
      authorization_url: https://example.com/oauth/authorize
      token_url: https://example.com/oauth/token
      client_id: your_client_id
      client_secret: your_client_secret
      redirect_uri: http://localhost:3080/api/mcp/oauth-example/oauth/callback
      scope: 'read execute'
  obo-example:
    type: streamable-http
    url: https://api.example.com/mcp/
    obo:
      scopes: 'api://mcp-server-id/Mcp.Tools.ReadWrite'

<serverName>

Chave:

KeyTypeDescriptionExample
<serverName>ObjectCada chave sob `mcpServers` representa uma configuração individual de servidor MCP, identificada por um nome único. Este nome é usado para referenciar a configuração do servidor dentro da aplicação.

Subchaves

KeyTypeDescriptionExample
titleString(Opcional) Nome de exibição personalizado para o servidor MCP na interface. Se não for especificado, o nome da chave do servidor serÔ usado.title: "My Custom Server"
descriptionString(Opcional) Descrição do servidor MCP, exibida na interface para ajudar os usuÔrios a entender seu propósito.description: "Provides file system access"
typeStringEspecifica o tipo de conexão com o servidor MCP. As opções vÔlidas são `"stdio"`, `"websocket"`, `"streamable-http"` ou `"sse"`. Se omitido, o padrão é definido com base na presença e no formato de `url` ou `command`.type: "stdio"
commandString(Para o tipo `stdio`) O comando ou executƔvel a ser executado para iniciar o servidor MCP.command: "npx"
argsArray of Strings(Para o tipo `stdio`) Argumentos de linha de comando para passar ao `command`.args: ["-y", "@modelcontextprotocol/server-puppeteer"]
urlString(Para o tipo `websocket`, `streamable-http` ou `sse`) A URL para conectar ao servidor MCP.url: "http://localhost:3001/sse"
proxyString(Opcional, para tipos `sse` e `streamable-http`) URL de proxy de saĆ­da para este servidor MCP remoto. Suporta URLs `http://`, `https://`, `socks://` e `socks5://`.proxy: "${MCP_PROXY_URL}"
headersObject(Opcional, para tipos `sse` e `streamable-http`) Cabeçalhos personalizados para enviar com a requisição. Suporta substituição dinâmica de campos do usuÔrio com placeholders `{{LIBRECHAT_USER_*}}` e variÔveis de ambiente com `${ENV_VAR}`.headers: X-User-ID: "{{LIBRECHAT_USER_ID}}" X-API-Key: "${SOME_API_KEY}"
apiKeyObject(Opcional, para tipos `sse` e `streamable-http`) Configuração de autenticação por chave de API para o servidor MCP.See apiKey section below
iconPathString(Opcional) Define o ícone de exibição da ferramenta mostrado na caixa de diÔlogo de seleção de ferramentas.iconPath: "/path/to/icon.svg"
chatMenuBoolean(Opcional) Quando definido como `false`, exclui o servidor MCP do menu suspenso da Ôrea de chat (MCPSelect) para acesso rÔpido e fÔcil. O padrão é `true`.chatMenu: false
serverInstructionsBoolean or String(Opcional) Controla como as instruções do servidor MCP são injetadas no contexto do agente. As instruções do servidor fornecem orientações de uso de alto nível para todo o servidor MCP, complementando as descrições individuais das ferramentas.serverInstructions: true # or serverInstructions: "Custom instructions"
timeoutInteger(Opcional) Tempo limite em milissegundos para solicitações de servidor MCP. Deve ser um número inteiro não negativo.timeout: 30000
initTimeoutInteger(Opcional) Tempo limite em milissegundos para a inicialização do servidor MCP. Deve ser um número inteiro não negativo.initTimeout: 10000
envObject(Opcional, apenas tipo `stdio`) VariƔveis de ambiente para usar ao iniciar o processo.env: NODE_ENV: "production"
requiresOAuthBoolean(Opcional, transportes remotos: `sse`, `streamable-http`, `websocket`) Se este servidor requer autenticação OAuth. Se não for especificado, serÔ detectado automaticamente durante a inicialização do servidor. Embora opcional, é melhor definir este valor explicitamente se você souber se o servidor requer OAuth ou não. Definir `requiresOAuth: false` é útil para servidores protegidos por um cabeçalho `Authorization` estÔtico, para ignorar a detecção automÔtica que, de outra forma, os classificaria incorretamente como protegidos por OAuth.requiresOAuth: false
stderrString or Integer(Opcional, apenas tipo `stdio`) Como lidar com o `stderr` do processo filho. Opções: `"pipe"`, `"ignore"`, `"inherit"`, ou um número inteiro não negativo (descritor de arquivo). O padrão é `"inherit"`.stderr: "inherit"
customUserVarsObject(Opcional) Define variÔveis personalizadas que os usuÔrios podem configurar para este servidor MCP, permitindo credenciais ou configurações por usuÔrio (por exemplo, chaves de API). Essas variÔveis podem então ser referenciadas nos campos `headers` ou `env`.customUserVars: API_KEY: title: "API Key" description: "Your personal API key."
oauthObject(Opcional) Configuração OAuth2 para autenticação com o servidor MCP. Quando configurado, os usuÔrios serão solicitados a autenticar via fluxo OAuth.oauth: authorization_url: "https://example.com/oauth/authorize" token_url: "https://example.com/oauth/token"
oauth_headersObject(Opcional) Mapa de nomes e valores de cabeçalho usados apenas para solicitações de fluxo OAuth, como registro dinâmico de cliente ou troca de token.oauth_headers: Authorization: "Bearer ${DCR_API_KEY}" X-Custom-Header: "custom_value"
oboObject(Opcional, para tipos `sse` e `streamable-http`) Configuração de troca de token On-Behalf-Of. Troca o token de acesso OpenID do usuÔrio atual por um token delegado downstream e o encaminha como um token Bearer.obo: scopes: "api://mcp-server-id/Mcp.Tools.ReadWrite"
startupBoolean(Opcional) Quando definido como false, este servidor MCP não serÔ conectado na inicialização do aplicativo.startup: false

title

  • Tipo: String (Opcional)
  • Descrição: Nome de exibição personalizado para o servidor MCP na interface. Se nĆ£o for especificado, o nome da chave do servidor serĆ” usado.
  • Exemplo:
    my-server:
      title: 'File System Access'
      command: npx
      args: ['-y', '@modelcontextprotocol/server-filesystem']

description

  • Tipo: String (Opcional)
  • Descrição: Descrição do servidor MCP, exibida na UI para ajudar os usuĆ”rios a entender seu propósito e capacidades.
  • Exemplo:
    my-server:
      title: 'File System Access'
      description: 'Provides read/write access to local files and directories'
      command: npx
      args: ['-y', '@modelcontextprotocol/server-filesystem']

type

  • Tipo: String
  • Descrição: Especifica o tipo de conexĆ£o com o servidor MCP. As opƧƵes vĆ”lidas sĆ£o "stdio", "websocket", "streamable-http" ou "sse".
  • Valor PadrĆ£o: Determinado com base na presenƧa e no formato de url ou command.

command

  • Tipo: String
  • Descrição: (Para o tipo stdio) O comando ou executĆ”vel a ser executado para iniciar o servidor MCP.

args

  • Tipo: Array de Strings
  • Descrição: (Para o tipo stdio) Argumentos de linha de comando a serem passados para o command.

url

  • Tipo: String
  • Descrição: (Para o tipo websocket, streamable-http ou sse) A URL para conectar ao servidor MCP. Suporta placeholders dinĆ¢micos de campos do usuĆ”rio ({{LIBRECHAT_USER_*}}) e substituição de variĆ”veis de ambiente (${ENV_VAR}).
  • Notas:
    • Para o tipo sse, a URL deve comeƧar com http:// ou https://.
    • Para o tipo streamable-http, a URL deve comeƧar com http:// ou https://.
    • Para o tipo websocket, a URL deve comeƧar com ws:// ou wss://.

proxy

  • Tipo: String (Opcional, para tipos sse e streamable-http)
  • Descrição: URL de proxy de saĆ­da para este servidor MCP remoto. O valor pode referenciar variĆ”veis de ambiente com ${ENV_VAR}.
  • Protocolos suportados: http://, https://, socks:// e socks5://
  • Nota de seguranƧa: proxy Ć© controlado pelo administrador. Ele resolve variĆ”veis de ambiente, mas nĆ£o resolve espaƧos reservados controlados pelo usuĆ”rio, como {{LIBRECHAT_USER_ID}} ou customUserVars.
  • Exemplo:
    mcpServers:
      remote-api:
        type: streamable-http
        url: https://api.example.com/mcp
        proxy: '${MCP_PROXY_URL}'

headers

  • Tipo: Objeto (Opcional, para os tipos sse e streamable-http)
  • Descrição: CabeƧalhos personalizados para enviar com a solicitação. Suporta vĆ”rios tipos de placeholders para substituição dinĆ¢mica de valores.
  • Suporte a Placeholder:
    • {{LIBRECHAT_USER_ID}}: SerĆ” substituĆ­do pelo ID do usuĆ”rio atual, permitindo suporte a mĆŗltiplos usuĆ”rios.
    • {{LIBRECHAT_USER_*}}: Placeholders de campo de usuĆ”rio dinĆ¢micos. Substitua * pela versĆ£o em MAIÚSCULAS de qualquer campo permitido.
    • {{LIBRECHAT_OPENID_*}}: Placeholders de token/sessĆ£o OpenID para servidores definidos em YAML.
    • {{LIBRECHAT_GRAPH_*}}: Placeholders de token do Microsoft Graph para servidores definidos em YAML.
    • {{LIBRECHAT_BODY_*}}: Placeholders de corpo de requisição para servidores definidos em YAML, como o conversationId, parentMessageId ou messageId atuais.
    • {{CUSTOM_VARIABLE_NAME}}: SubstituĆ­do pelo valor fornecido pelo usuĆ”rio para uma variĆ”vel definida em customUserVars (por exemplo, {{MY_API_KEY}}).
    • ${ENV_VAR}: SerĆ” substituĆ­do pelo valor da variĆ”vel de ambiente {{ENV_VAR}}.

Placeholders de Campo de UsuƔrio Disponƭveis:

PlaceholderUser FieldTypeDescrição
{{LIBRECHAT_USER_NAME}}nameStringNome de exibição do usuÔrio
{{LIBRECHAT_USER_USERNAME}}usernameStringNome de usuƔrio
{{LIBRECHAT_USER_EMAIL}}emailStringEndereƧo de e-mail do usuƔrio
{{LIBRECHAT_USER_PROVIDER}}providerStringProvedor de autenticação (ex: "email", "google", "github")
{{LIBRECHAT_USER_ROLE}}roleStringFunção do usuÔrio (ex: "user", "admin")
{{LIBRECHAT_USER_GOOGLEID}}googleIdStringID da conta Google
{{LIBRECHAT_USER_FACEBOOKID}}facebookIdStringID da conta Facebook
{{LIBRECHAT_USER_OPENIDID}}openidIdStringID da conta OpenID
{{LIBRECHAT_USER_SAMLID}}samlIdStringID da conta SAML
{{LIBRECHAT_USER_LDAPID}}ldapIdStringID da conta LDAP
{{LIBRECHAT_USER_GITHUBID}}githubIdStringID da conta GitHub
{{LIBRECHAT_USER_DISCORDID}}discordIdStringID da conta Discord
{{LIBRECHAT_USER_APPLEID}}appleIdStringID da conta Apple
{{LIBRECHAT_USER_EMAILVERIFIED}}emailVerifiedBoolean → StringStatus de verificação de e-mail ("true" ou "false")
{{LIBRECHAT_USER_TWOFACTORENABLED}}twoFactorEnabledBoolean → StringStatus do 2FA ("true" ou "false")
{{LIBRECHAT_USER_TERMSACCEPTED}}termsAcceptedBoolean → StringStatus de aceitação dos termos ("true" ou "false")

Nota: Campos ausentes serão substituídos por strings vazias.

Os placeholders {{LIBRECHAT_BODY_*}} têm escopo de requisição. O LibreChat cria a conexão MCP para a execução ativa, reutiliza-a em chamadas de ferramentas durante essa execução e a encerra quando a requisição termina. Servidores com escopo de requisição são excluídos do cache persistente de ferramentas para que cabeçalhos e URLs específicos da requisição não sejam reutilizados fora da execução ativa. Os placeholders {{LIBRECHAT_USER_*}}, {{LIBRECHAT_OPENID_*}} e {{LIBRECHAT_GRAPH_*}} ainda tornam o servidor com escopo de usuÔrio, mas os transportes HTTP atualizam os cabeçalhos resolvidos antes de cada chamada de ferramenta sem forçar uma reconexão por conta própria.

  • Exemplo:
    headers:
      X-User-ID: '{{LIBRECHAT_USER_ID}}'
      X-User-Email: '{{LIBRECHAT_USER_EMAIL}}'
      X-User-Role: '{{LIBRECHAT_USER_ROLE}}'
      X-API-Key: '${SOME_API_KEY}'
      Authorization: 'Bearer ${SOME_AUTH_TOKEN}'

apiKey

  • Tipo: Objeto (Opcional, para os tipos sse e streamable-http)

  • Descrição: Configuração de autenticação por chave de API para o servidor MCP. Fornece uma maneira estruturada de configurar a autenticação baseada em chave de API.

  • Sub-chaves:

    • source: String - De onde a chave de API vem. OpƧƵes:
      • "admin": A chave de API Ć© configurada pelo administrador (em variĆ”veis de ambiente ou no arquivo de configuração)
      • "user": A chave de API Ć© fornecida pelo usuĆ”rio atravĆ©s da UI
    • authorization_type: String - Como a chave de API Ć© enviada nas requisiƧƵes. OpƧƵes:
      • "bearer": Enviado como Authorization: Bearer <key>
      • "basic": Enviado como Authorization: Basic <key>
      • "custom": Enviado em um cabeƧalho personalizado (requer custom_header)
    • custom_header: String - (Obrigatório quando authorization_type for "custom") O nome do cabeƧalho a ser usado para a chave de API
  • Exemplo:

    # Admin-provided API key with Bearer auth
    my-server:
      type: streamable-http
      url: https://api.example.com/mcp
      apiKey:
        source: 'admin'
        authorization_type: 'bearer'
    
    # User-provided API key with custom header
    another-server:
      type: sse
      url: https://api.example.com/sse
      apiKey:
        source: 'user'
        authorization_type: 'custom'
        custom_header: 'X-API-Key'

iconPath

  • Tipo: String (Opcional)
  • Descrição: Define o Ć­cone de exibição da ferramenta mostrado na caixa de diĆ”logo de seleção de ferramentas.

chatMenu

  • Tipo: Booleano (Opcional)
  • Descrição: Quando definido como false, exclui o servidor MCP do menu suspenso da Ć”rea de chat (MCPSelect) para acesso rĆ”pido e fĆ”cil.
  • Valor PadrĆ£o: true (O servidor MCP serĆ” incluĆ­do no menu suspenso da Ć”rea de chat)

serverInstructions

  • Tipo: Booleano ou String (Opcional)

  • Descrição: Controla como as instruƧƵes do servidor MCP sĆ£o injetadas no contexto do agente. As instruƧƵes do servidor fornecem orientaƧƵes de uso de alto nĆ­vel para todo o servidor MCP, complementando as descriƧƵes individuais das ferramentas.

  • OpƧƵes:

    • undefined (padrĆ£o): Nenhuma instrução Ć© incluĆ­da
    • true: Use as instruƧƵes fornecidas pelo servidor (se disponĆ­veis) - ideal para servidores bem documentados com orientaƧƵes abrangentes
    • false: Desativa explicitamente as instruƧƵes - Ćŗtil para economizar tokens de contexto ou quando as ferramentas sĆ£o autoexplicativas
    • string: Use instruƧƵes personalizadas (substituem as fornecidas pelo servidor) - ideal para fluxos de trabalho especĆ­ficos da aplicação ou quando as instruƧƵes do servidor sĆ£o insuficientes
  • Valor PadrĆ£o: undefined (nenhuma instrução incluĆ­da)

  • Notas:

    • As instruƧƵes sĆ£o injetadas automaticamente quando serverInstructions estĆ” configurado e as ferramentas do servidor estĆ£o disponĆ­veis para o agente
    • VĆ”rios servidores podem contribuir com instruƧƵes para o contexto do agente
  • Exemplo:

    # Use server-provided instructions
    serverInstructions: true
    
    # Use custom instructions
    serverInstructions: |
      When using this filesystem server:
      1. Always use absolute paths for file operations
      2. Check file permissions before attempting write operations
    
    # Explicitly disable instructions
    serverInstructions: false

env

  • Tipo: Objeto (Opcional, apenas tipo stdio)
  • Descrição: VariĆ”veis de ambiente a serem usadas ao iniciar o processo.
  • Suporte a Placeholder:
    • {{LIBRECHAT_USER_ID}}: SubstituĆ­do pelo ID do usuĆ”rio atual.
    • {{LIBRECHAT_USER_*}}: EspaƧos reservados dinĆ¢micos para campos de usuĆ”rio (por exemplo, {{LIBRECHAT_USER_EMAIL}}).
    • {{CUSTOM_VARIABLE_NAME}}: SubstituĆ­do pelo valor fornecido pelo usuĆ”rio para uma variĆ”vel definida em customUserVars (por exemplo, {{MY_API_KEY}}).
    • ${ENV_VAR}: SubstituĆ­do pelo valor da variĆ”vel de ambiente do lado do servidor {{ENV_VAR}}.

timeout

  • Tipo: Inteiro (Opcional)
  • Descrição: Tempo limite em milissegundos para solicitaƧƵes de servidor MCP. Deve ser um nĆŗmero inteiro nĆ£o negativo.
  • Valor PadrĆ£o: 30000 (30 segundos)

initTimeout

  • Tipo: Inteiro (Opcional)
  • Descrição: Tempo limite em milissegundos para a inicialização do servidor MCP. Deve ser um nĆŗmero inteiro nĆ£o negativo.
  • Valor PadrĆ£o: 10000 (10 segundos)

requiresOAuth

  • Tipo: Booleano (Opcional, apenas para transportes remotos: sse, streamable-http, websocket)
  • Descrição: Se este servidor requer autenticação OAuth. Se nĆ£o for especificado, serĆ” detectado automaticamente durante a inicialização do servidor. Embora seja opcional, Ć© melhor definir este valor explicitamente se vocĆŖ souber se o servidor requer OAuth ou nĆ£o.
  • Valor PadrĆ£o: Detectado automaticamente se nĆ£o especificado
  • Notas:
    • AplicĆ”vel a transportes remotos (baseados em URL): sse, streamable-http e websocket. NĆ£o tem efeito em servidores stdio, que nĆ£o possuem URL para autenticação.
    • A detecção automĆ”tica ocorre durante a inicialização do servidor, o que pode aumentar o tempo de inicialização.
    • A configuração explĆ­cita melhora o desempenho de inicialização ao ignorar a detecção
    • Defina requiresOAuth: false para servidores protegidos apenas por um cabeƧalho Authorization estĆ”tico (por exemplo, uma chave de API Bearer). A detecção automĆ”tica sonda o servidor sem os seus cabeƧalhos configurados, portanto, um servidor que responde com 401 com um desafio WWW-Authenticate: Bearer pode ser classificado incorretamente como protegido por OAuth; este sinalizador ignora essa sonda e permite que o seu cabeƧalho estĆ”tico autentique a conexĆ£o normalmente.
    • Funciona com variĆ”veis de ambiente MCP OAuth (MCP_OAUTH_ON_AUTH_ERROR, MCP_OAUTH_DETECTION_TIMEOUT, MCP_OAUTH_HANDLING_TIMEOUT, MCP_OAUTH_FLOW_TTL) para um gerenciamento de conexĆ£o aprimorado

stderr

  • Tipo: String ou Integer (Opcional, apenas para o tipo stdio)
  • Descrição: Como lidar com o stderr do processo filho. Isso corresponde Ć  semĆ¢ntica do child_process.spawn do Node. Valores de string vĆ”lidos: "pipe", "ignore", "inherit". Alternativamente, um nĆŗmero inteiro nĆ£o negativo pode ser usado como um descritor de arquivo.
  • Valor PadrĆ£o: "inherit" (mensagens para stderr serĆ£o impressas no stderr do processo pai).

customUserVars

  • Tipo: Objeto (Opcional)
  • Descrição: Define variĆ”veis personalizadas que os usuĆ”rios podem configurar para este servidor MCP. Isso permite que administradores especifiquem variĆ”veis (por exemplo, chaves de API, URLs) que cada usuĆ”rio deve configurar individualmente. Esses valores fornecidos pelo usuĆ”rio podem entĆ£o ser usados na configuração de headers ou env. Servidores com customUserVars sĆ£o automaticamente excluĆ­dos de conexƵes em nĆ­vel de aplicativo, garantindo que as credenciais por usuĆ”rio sejam sempre resolvidas em tempo de execução.
  • Estrutura:
    • O objeto customUserVars contĆ©m chaves, onde cada chave representa um nome de variĆ”vel (por exemplo, MY_API_KEY). Este nome serĆ” usado em placeholders como {{MY_API_KEY}}.
    • Cada nome de variĆ”vel Ć© um objeto com as seguintes subchaves:
      • title: String (Obrigatório) - Um tĆ­tulo amigĆ”vel para a variĆ”vel, exibido na interface de configuração.
      • description: String (Optional) - A description or instructions for the variable, also displayed in the UI to guide the user. HTML can be used in this field (e.g., to create a link: <a href="https://example.com" target="_blank">More info</a>).
      • sensitive: Boolean (Opcional) - Controla se o valor Ć© tratado como um segredo e mascarado na interface. O padrĆ£o Ć© o comportamento mascarado/secreto quando omitido; defina como false para campos que nĆ£o sĆ£o secretos, como IDs de projeto ou URLs base.
  • Uso em headers e env:
    • Uma vez definidas em customUserVars, essas variĆ”veis podem ser referenciadas nas seƧƵes headers (para os tipos sse e streamable-http) ou env (para o tipo stdio) usando a sintaxe {{VARIABLE_NAME}}.
    • Os usuĆ”rios fornecem esses valores atravĆ©s da UI. Essas configuraƧƵes podem ser acessadas de duas maneiras:
      • From Assistant Chat Input: Ao selecionar ferramentas MCP para um assistente, um Ć­cone de configuraƧƵes aparecerĆ” ao lado dos servidores MCP configurĆ”veis no menu suspenso de seleção de ferramentas. Clicar neste Ć­cone abre uma caixa de diĆ”logo para gerenciar as credenciais daquele servidor. Configuração de VariĆ”veis por UsuĆ”rio do MCP - Acesso do Assistente Configuração de VariĆ”veis por UsuĆ”rio do MCP - DiĆ”logo de Acesso do Assistente
      • No Painel de ConfiguraƧƵes: Uma seção dedicada de "MCP Settings" no painel direito lista todos os servidores MCP com variĆ”veis personalizadas definĆ­veis. Os usuĆ”rios podem clicar em um servidor para abrir a caixa de diĆ”logo de configuração para definir ou atualizar suas credenciais para aquele servidor MCP especĆ­fico. Configuração de VariĆ”veis por UsuĆ”rio do MCP - Acesso ao Painel de ConfiguraƧƵes
    • Esses valores fornecidos pelo usuĆ”rio sĆ£o armazenados de forma segura, associados ao usuĆ”rio individual e ao servidor MCP especĆ­fico, e substituĆ­dos em tempo de execução.
  • Exemplo:
    customUserVars:
      MY_SERVICE_API_KEY:
        title: 'My Service API Key'
        description: "Your personal API access key for My Service. Find it at <a href='https://myservice.example.com/settings/api' target='_blank'>My Service API Settings</a>."
        sensitive: true
      SOME_OTHER_VAR:
        title: 'Some Other Variable'
        description: 'The specific value for some other configuration (e.g., a specific path or identifier).'
        sensitive: false
    Uso em headers:
    headers:
      X-Auth-Token: '{{MY_SERVICE_API_KEY}}'
      X-Some-Other-Config: '{{SOME_OTHER_VAR}}'
    Usage in env (for stdio type):
    env:
      API_KEY: '{{MY_SERVICE_API_KEY}}'

obo

  • Tipo: Objeto (Opcional, apenas para os tipos sse e streamable-http)
  • Descrição: Configura a troca de token OAuth 2.0 On-Behalf-Of para um servidor MCP. O LibreChat troca o token de acesso OpenID do usuĆ”rio logado por um token delegado de downstream com os escopos configurados, e entĆ£o encaminha esse token para o servidor MCP como um cabeƧalho Authorization: Bearer ....
  • Subchaves obrigatórias:
    • scopes: String - Escopos nĆ£o vazios solicitados para a troca de token downstream.
  • Validação:
    • obo Ć© vĆ”lido apenas para servidores MCP sse e streamable-http.
    • obo Ć© rejeitado para servidores stdio e websocket.
    • Os usuĆ”rios precisam da permissĆ£o de função MCP_SERVERS.CONFIGURE_OBO para configurar este campo. Defina-o com interface.mcpServers.configureObo ou gerencie-o a partir do painel de administração.
  • PrĆ©-requisitos:
    • A autenticação OpenID deve ser configurada com tokens de acesso reutilizĆ”veis.
    • Seu provedor de identidade e a aplicação downstream devem permitir o escopo delegado solicitado.
  • Exemplo:
    mcpServers:
      enterprise-tools:
        type: streamable-http
        url: https://api.example.com/mcp/
        obo:
          scopes: 'api://mcp-server-id/Mcp.Tools.ReadWrite'

Veja OpenID Connect Token Reuse e SharePoint Integration para configurações relacionadas de reutilização de token e token delegado.

oauth

  • Tipo: Objeto (Opcional)
  • Descrição: Configuração OAuth2 para autenticação com o servidor MCP. Quando configurado, os usuĆ”rios serĆ£o solicitados a autenticar via fluxo OAuth antes que o servidor MCP possa ser usado. Se nenhum client id e client secret forem fornecidos, o Dynamic Client Registration (DCR) serĆ” utilizado.
  • Subchaves obrigatórias:
    • authorization_url: String - A URL do endpoint de autorização OAuth
    • token_url: String - A URL do endpoint de token OAuth
    • client_id: String - Identificador de cliente OAuth
    • client_secret: String - Segredo do cliente OAuth
    • redirect_uri: String - URI de redirecionamento OAuth (ex: http://localhost:3080/api/mcp/${serverName}/oauth/callback)
    • scope: String - Escopos OAuth (separados por espaƧo)
  • Subchaves Opcionais:
    • grant_types_supported: Array de Strings - Tipos de concessĆ£o suportados (o padrĆ£o Ć© ["authorization_code", "refresh_token"])
    • token_endpoint_auth_methods_supported: Array de Strings - MĆ©todos de autenticação de endpoint de token suportados (o padrĆ£o Ć© ["client_secret_basic", "client_secret_post"])
    • token_exchange_method: String - MĆ©todo de solicitação de troca de token. Use default_post para provedores que esperam as credenciais do cliente OAuth no corpo da requisição POST.
    • response_types_supported: Array de Strings - Tipos de resposta suportados (o padrĆ£o Ć© ["code"])
    • code_challenge_methods_supported: Array de Strings - MĆ©todos de desafio de código PKCE suportados (o padrĆ£o Ć© ["S256", "plain"])
    • skip_code_challenge_check: Boolean - Pula a verificação se o provedor OAuth anuncia suporte a PKCE. Útil para provedores como AWS Cognito que suportam S256, mas nĆ£o o anunciam em seus metadados. (o padrĆ£o Ć© false)
  • VariĆ”veis de ambiente: Os campos de URL de OAuth definidos no YAML, incluindo authorization_url, token_url, redirect_uri e revocation_endpoint, podem usar referĆŖncias ${ENV_VAR}. O LibreChat resolve o valor do ambiente antes da validação da URL. URLs de endpoint OAuth gerenciadas pelo usuĆ”rio enviadas atravĆ©s da interface devem ser URLs literais e rejeitar espaƧos reservados ${ENV_VAR}.
  • Exemplo:
    oauth-api-server:
      authorization_url: https://api.example.com/oauth/authorize
      token_url: https://api.example.com/oauth/token
      client_id: your_client_id
      client_secret: your_client_secret
      redirect_uri: http://localhost:3080/api/mcp/oauth-api-server/oauth/callback
      scope: 'read execute'
      grant_types_supported: ['authorization_code', 'refresh_token']
      token_endpoint_auth_methods_supported: ['client_secret_post']
      token_exchange_method: default_post
      response_types_supported: ['code']
      code_challenge_methods_supported: ['S256', 'plain']

oauth_headers

  • Tipo: Objeto (Opcional)
  • Descrição: CabeƧalhos usados especificamente para solicitaƧƵes de fluxo OAuth. Esses cabeƧalhos sĆ£o usados durante a autenticação OAuth, como registro dinĆ¢mico de cliente e troca de tokens, e nĆ£o sĆ£o enviados durante a comunicação regular do servidor MCP.
  • Casos de Uso Comuns:
    • Adicionando autenticação a endpoints de registro dinĆ¢mico de cliente, como Authorization: Bearer ${DCR_API_KEY}
    • Incluindo cabeƧalhos especĆ­ficos de provedores personalizados necessĆ”rios para fluxos OAuth
    • Configurando cabeƧalhos necessĆ”rios pelos endpoints de token OAuth
  • Principais diferenƧas de headers:
    • headers: Enviado com solicitaƧƵes regulares do servidor MCP após a conclusĆ£o da autenticação
    • oauth_headers: Enviado apenas durante fluxos de autenticação OAuth
  • Exemplo:
    oauth_headers:
      Authorization: "Bearer ${DCR_API_KEY}"
      X-Custom-Header: "custom_value"

startup

  • Tipo: Booleano (Opcional)
  • Descrição: Quando definido como false, este servidor MCP nĆ£o serĆ” conectado na inicialização da aplicação. Isso Ć© Ćŗtil para servidores que exigem entrada ou configuração do usuĆ”rio antes de conectar, ou para casos em que vocĆŖ deseja controlar quando o servidor Ć© inicializado.
  • Valor PadrĆ£o: true
  • Exemplo:
    mcpServers:
      my-mcp-server:
        type: streamable-http
        url: 'https://api.example.com/mcp/'
        startup: false

Notas

  • InferĆŖncia de Tipo:
    • Se type for omitido:
      • Se url for especificado e comeƧar com http:// ou https://, type assume sse como padrĆ£o.
      • Se url for especificado e comeƧar com ws:// ou wss://, type assume websocket como padrĆ£o.
      • Se command for especificado, type assume stdio como padrĆ£o.
  • Tipos de ConexĆ£o:
    • stdio: Inicia um servidor MCP como um processo filho e comunica-se via entrada/saĆ­da padrĆ£o.
    • websocket: Conecta-se a um servidor MCP externo via WebSocket.
    • sse: Conecta-se a um servidor MCP externo via Server-Sent Events (SSE).
    • streamable-http: Conecta-se a um servidor MCP externo via HTTP com suporte para respostas em streaming.
  • EndereƧos Internos/Locais:
    • Importante: Servidores MCP que utilizam endereƧos IP internos (por exemplo, 172.24.1.165, 192.168.1.100) ou domĆ­nios locais (por exemplo, mcp-server, host.docker.internal) devem ser explicitamente permitidos. Use mcpSettings.allowedAddresses para serviƧos especĆ­ficos de host:porta privados quando desejar que destinos pĆŗblicos permaneƧam acessĆ­veis, ou mcpSettings.allowedDomains quando desejar uma lista de permissƵes (whitelist) rigorosa.
    • Veja MCP Settings para detalhes de configuração.

Exemplos

Configuração com Endereços Internos

Ao usar servidores MCP internos/locais e quando não for necessÔria uma lista de permissões de domínio estrita, configure mcpSettings.allowedAddresses com o host e a porta exatos:

# MCP Settings - Required for internal/local addresses
mcpSettings:
  allowedAddresses:
    - '172.24.1.165:8000' # Internal IP and port
    - 'mcp-prod:8001' # Docker container and port
    - 'host.docker.internal:8080' # Docker host and port

# MCP Servers - Individual configurations
mcpServers:
  prod-mcp:
    type: streamable-http
    url: http://172.24.1.165:8000/mcp
    timeout: 120000

  test-mcp:
    type: streamable-http
    url: http://mcp-prod:8001/mcp
    timeout: 120000

Servidor MCP stdio

puppeteer:
  type: stdio
  command: npx
  args:
    - -y
    - '@modelcontextprotocol/server-puppeteer'
  timeout: 30000
  initTimeout: 10000
  env:
    NODE_ENV: 'production'
    USER_EMAIL: '{{LIBRECHAT_USER_EMAIL}}'
    USER_ROLE: '{{LIBRECHAT_USER_ROLE}}'
  stderr: inherit

Servidor MCP sse

everything:
  url: http://localhost:3001/sse
  headers:
    X-User-ID: '{{LIBRECHAT_USER_ID}}'
    X-API-Key: '${SOME_API_KEY}'

Servidor MCP websocket

myWebSocketServer:
  url: ws://localhost:8080

Servidor MCP streamable-http

streamable-http-server:
  type: streamable-http
  url: https://example.com/api/
  headers:
    X-User-ID: '{{LIBRECHAT_USER_ID}}'
    X-API-Key: '${SOME_API_KEY}'

Servidor MCP com Campos de UsuÔrio Dinâmicos

user-aware-server:
  type: sse
  url: https://api.example.com/users/{{LIBRECHAT_USER_USERNAME}}/stream
  headers:
    X-User-ID: '{{LIBRECHAT_USER_ID}}'
    X-User-Email: '{{LIBRECHAT_USER_EMAIL}}'
    X-User-Role: '{{LIBRECHAT_USER_ROLE}}'
    X-Email-Verified: '{{LIBRECHAT_USER_EMAILVERIFIED}}'
    Authorization: 'Bearer ${API_TOKEN}'

Servidor MCP com Credenciais por UsuƔrio via customUserVars

my-mcp-server:
  type: streamable-http
  url: 'https://api.example-service.com/api/' # Example URL
  headers:
    X-Auth-Token: '{{API_KEY}}' # Uses the API_KEY defined below
  customUserVars:
    API_KEY: # This key will be used as {{API_KEY}} in headers/url
      title: 'API Key' # This is the label shown above the input field
      description: "Get your API key <a href='https://example.com/api-keys' target='_blank'>here</a>." # This description appears below the input

NOTA Veja MCP Server Initialization para mais informações sobre a inicialização de servidor baseada na interface do usuÔrio.

Servidor MCP com ƍcone Personalizado

filesystem:
  command: npx
  args:
    - -y
    - '@modelcontextprotocol/server-filesystem'
    - /home/user/LibreChat/
  iconPath: /home/user/LibreChat/client/public/assets/logo.svg
  chatMenu: false # Exclude from chatarea dropdown

Servidor MCP com Autenticação OAuth

oauth-api-server:
  type: streamable-http
  url: https://api.example.com/mcp/
  oauth:
    authorization_url: https://api.example.com/oauth/authorize
    token_url: https://api.example.com/oauth/token
    client_id: your_client_id
    client_secret: your_client_secret
    redirect_uri: http://localhost:3080/api/mcp/oauth-api-server/oauth/callback
    scope: 'read execute'
  oauth_headers:
    X-Custom-Header: 'custom_value'

Servidor MCP com InstruƧƵes do Servidor

# Server that uses its own provided instructions
web-search:
  type: streamable-http
  url: https://example.com/mcp/search
  serverInstructions: true

# Server with instructions explicitly disabled
filesystem:
  command: npx
  args:
    - -y
    - '@modelcontextprotocol/server-filesystem'
    - /home/user/documents/
  serverInstructions: false

# Server with custom instructions
puppeteer:
  type: stdio
  command: npx
  args:
    - -y
    - '@modelcontextprotocol/server-puppeteer'
  serverInstructions: |
    Browser automation security and best practices:
    1. Be cautious with local file access and internal IP addresses
    2. Take screenshots to verify successful page interactions
    3. Wait for page elements to load before interacting with them
    4. Use specific CSS selectors for reliable element targeting
    5. Check console logs for JavaScript errors when troubleshooting

Servidor MCP com OAuth habilitado (Legacy requiresOAuth)

composio-googlesheets:
  type: sse
  url: https://mcp.composio.dev/googlesheets/sse-endpoint
  requiresOAuth: true
  headers:
    X-User-ID: '{{LIBRECHAT_USER_ID}}'
    X-API-Key: '${COMPOSIO_API_KEY}'
  timeout: 45000
  initTimeout: 15000

VariƔveis de Ambiente Relacionadas (Opcional):

# OAuth configuration for MCP servers
MCP_OAUTH_ON_AUTH_ERROR=true
MCP_OAUTH_DETECTION_TIMEOUT=10000
MCP_OAUTH_HANDLING_TIMEOUT=600000
MCP_OAUTH_FLOW_TTL=900000

# API key for the service
COMPOSIO_API_KEY=your_composio_api_key_here

Importando ConfiguraƧƵes de Servidor MCP

As configurações mcpServers permitem que o LibreChat interaja dinamicamente com vÔrios servidores MCP, os quais podem realizar tarefas especializadas ou fornecer funcionalidades específicas dentro da aplicação. Essa abordagem modular facilita a extensão das capacidades da aplicação simplesmente adicionando ou modificando configurações de servidor.


InformaƧƵes Adicionais

  • Comportamento PadrĆ£o:
    • A inicialização ocorre na inicialização, e o aplicativo deve ser reiniciado para que as alteraƧƵes entrem em vigor.
    • Se tanto url quanto command forem especificados, o type deve ser definido explicitamente para evitar ambiguidade.
  • Suporte a MĆŗltiplos UsuĆ”rios:
    • O MCPManager agora suporta conexƵes distintas em nĆ­vel de usuĆ”rio e em nĆ­vel de aplicativo, permitindo o gerenciamento adequado de conexƵes por usuĆ”rio.
    • As conexƵes dos usuĆ”rios sĆ£o rastreadas e gerenciadas separadamente, com o devido estabelecimento e limpeza.
    • Use espaƧos reservados de campo de usuĆ”rio dinĆ¢micos em cabeƧalhos, URLs e variĆ”veis de ambiente:
      • {{LIBRECHAT_USER_ID}} - Identificador Ćŗnico do usuĆ”rio
      • {{LIBRECHAT_USER_EMAIL}} - EndereƧo de e-mail do usuĆ”rio
      • {{LIBRECHAT_USER_USERNAME}} - Nome de usuĆ”rio do usuĆ”rio
      • {{LIBRECHAT_USER_ROLE}} - Função do usuĆ”rio (por exemplo, "user", "admin")
      • E muitos outros campos (veja a seção headers para a lista completa)
  • Gerenciamento de Inatividade do UsuĆ”rio:
    • As conexƵes dos usuĆ”rios sĆ£o monitoradas quanto Ć  atividade e serĆ£o desconectadas após 15 minutos de inatividade.
  • VariĆ”veis de Ambiente:
    • Em env (para o tipo stdio): Útil para configurar ambientes de execução especĆ­ficos ou configuraƧƵes necessĆ”rias para o processo do servidor MCP.
    • Em headers (para os tipos sse e streamable-http): Use a sintaxe ${ENV_VAR} para referenciar variĆ”veis de ambiente nos valores dos cabeƧalhos.
  • Campos de UsuĆ”rio DinĆ¢micos:
    • Os placeholders de campo do usuĆ”rio sĆ£o substituĆ­dos em tempo de execução pelas informaƧƵes do usuĆ”rio autenticado
    • Apenas campos nĆ£o sensĆ­veis estĆ£o disponĆ­veis (senhas e outros dados sensĆ­veis sĆ£o excluĆ­dos)
    • Campos ausentes sĆ£o definidos como strings vazias por padrĆ£o
    • Campos booleanos sĆ£o convertidos para representaƧƵes em string ("true" ou "false")
  • Tratamento de erros (stderr):
    • Configurar o stderr permite que vocĆŖ gerencie como as mensagens de erro do processo do servidor MCP sĆ£o tratadas. O padrĆ£o "inherit" significa que os erros serĆ£o impressos no stderr do processo pai.
  • InstruƧƵes do Servidor:
    • As instruƧƵes sĆ£o injetadas automaticamente na mensagem de sistema do agente quando ferramentas de servidor MCP sĆ£o usadas.
    • As Custom instructions (valores de string) tĆŖm precedĆŖncia sobre as instruƧƵes fornecidas pelo servidor
    • VĆ”rios servidores MCP podem contribuir, cada um, com suas próprias instruƧƵes para o contexto do agente
    • As instruƧƵes só sĆ£o incluĆ­das quando as ferramentas do servidor MCP correspondente estĆ£o realmente disponĆ­veis para o agente
  • Autenticação OAuth:
    • O fluxo OAuth2 Ć© suportado para autenticação segura com servidores MCP
    • Os usuĆ”rios serĆ£o solicitados a autenticar via OAuth antes que o servidor MCP possa ser usado

ReferĆŖncias


Ao configurar corretamente os mcpServers no seu librechat.yaml, você pode aprimorar a funcionalidade do LibreChat e integrar ferramentas e serviços personalizados de forma integrada.

Como estĆ” este guia?