(Para o tipo `websocket`, `streamable-http` ou `sse`) A URL para conectar ao servidor MCP.
url: "http://localhost:3001/sse"
proxy
String
(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}"
headers
Object
(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}`.
(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"
timeout
Integer
(Opcional) Tempo limite em milissegundos para solicitações de servidor MCP. Deve ser um número inteiro não negativo.
timeout: 30000
initTimeout
Integer
(Opcional) Tempo limite em milissegundos para a inicialização do servidor MCP. Deve ser um número inteiro não negativo.
initTimeout: 10000
env
Object
(Opcional, apenas tipo `stdio`) VariƔveis de ambiente para usar ao iniciar o processo.
(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."
oauth
Object
(Opcional) Configuração OAuth2 para autenticação com o servidor MCP. Quando configurado, os usuÔrios serão solicitados a autenticar via fluxo OAuth.
(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.
(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.
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']
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://.
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:
Placeholder
User Field
Type
Descrição
{{LIBRECHAT_USER_NAME}}
name
String
Nome de exibição do usuÔrio
{{LIBRECHAT_USER_USERNAME}}
username
String
Nome de usuƔrio
{{LIBRECHAT_USER_EMAIL}}
email
String
EndereƧo de e-mail do usuƔrio
{{LIBRECHAT_USER_PROVIDER}}
provider
String
Provedor de autenticação (ex: "email", "google", "github")
{{LIBRECHAT_USER_ROLE}}
role
String
Função do usuÔrio (ex: "user", "admin")
{{LIBRECHAT_USER_GOOGLEID}}
googleId
String
ID da conta Google
{{LIBRECHAT_USER_FACEBOOKID}}
facebookId
String
ID da conta Facebook
{{LIBRECHAT_USER_OPENIDID}}
openidId
String
ID da conta OpenID
{{LIBRECHAT_USER_SAMLID}}
samlId
String
ID da conta SAML
{{LIBRECHAT_USER_LDAPID}}
ldapId
String
ID da conta LDAP
{{LIBRECHAT_USER_GITHUBID}}
githubId
String
ID da conta GitHub
{{LIBRECHAT_USER_DISCORDID}}
discordId
String
ID da conta Discord
{{LIBRECHAT_USER_APPLEID}}
appleId
String
ID da conta Apple
{{LIBRECHAT_USER_EMAILVERIFIED}}
emailVerified
Boolean ā String
Status de verificação de e-mail ("true" ou "false")
{{LIBRECHAT_USER_TWOFACTORENABLED}}
twoFactorEnabled
Boolean ā String
Status do 2FA ("true" ou "false")
{{LIBRECHAT_USER_TERMSACCEPTED}}
termsAccepted
Boolean ā String
Status 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.
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:
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.
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 instructionsserverInstructions: true# Use custom instructionsserverInstructions: | When using this filesystem server: 1. Always use absolute paths for file operations 2. Check file permissions before attempting write operations# Explicitly disable instructionsserverInstructions: false
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
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).
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.
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>).
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}}.
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.
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.
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
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.
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.
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)
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
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.
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 addressesmcpSettings: 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 configurationsmcpServers: 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
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.
# Server that uses its own provided instructionsweb-search: type: streamable-http url: https://example.com/mcp/search serverInstructions: true# Server with instructions explicitly disabledfilesystem: command: npx args: - -y - '@modelcontextprotocol/server-filesystem' - /home/user/documents/ serverInstructions: false# Server with custom instructionspuppeteer: 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
# OAuth configuration for MCP serversMCP_OAUTH_ON_AUTH_ERROR=trueMCP_OAUTH_DETECTION_TIMEOUT=10000MCP_OAUTH_HANDLING_TIMEOUT=600000MCP_OAUTH_FLOW_TTL=900000# API key for the serviceCOMPOSIO_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.
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
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.