MCP Sunucuları Nesne Yapısı
Örnek
# 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>
Anahtar:
| Key | Type | Description | Example |
|---|---|---|---|
| <serverName> | Object | `mcpServers` altındaki her anahtar, benzersiz bir isimle tanımlanan bireysel bir MCP sunucusu yapılandırmasını temsil eder. Bu isim, uygulama içerisinde sunucu yapılandırmasına referans vermek için kullanılır. |
Alt anahtarlar
| Key | Type | Description | Example |
|---|---|---|---|
| title | String | (İsteğe bağlı) Arayüzde MCP sunucusu için özel görünen ad. Belirtilmezse, sunucu anahtar adı kullanılır. | title: "My Custom Server" |
| description | String | (İsteğe bağlı) Kullanıcıların amacını anlamasına yardımcı olmak için arayüzde görüntülenen MCP sunucusunun açıklaması. | description: "Provides file system access" |
| type | String | MCP sunucusuna olan bağlantı türünü belirtir. Geçerli seçenekler `"stdio"`, `"websocket"`, `"streamable-http"` veya `"sse"` şeklindedir. Belirtilmediği takdirde, `url` veya `command` parametrelerinin varlığına ve biçimine göre varsayılan değer atanır. | type: "stdio" |
| command | String | (`stdio` türü için) MCP sunucusunu başlatmak üzere çalıştırılacak komut veya yürütülebilir dosya. | command: "npx" |
| args | Array of Strings | (`stdio` türü için) `command` öğesine iletilecek komut satırı argümanları. | args: ["-y", "@modelcontextprotocol/server-puppeteer"] |
| url | String | (`websocket`, `streamable-http` veya `sse` türü için) MCP sunucusuna bağlanılacak URL. | url: "http://localhost:3001/sse" |
| proxy | String | (İsteğe bağlı, `sse` ve `streamable-http` türleri için) Bu uzak MCP sunucusu için giden proxy URL'si. `http://`, `https://`, `socks://` ve `socks5://` URL'lerini destekler. | proxy: "${MCP_PROXY_URL}" |
| headers | Object | (İsteğe bağlı, `sse` ve `streamable-http` türleri için) İstekle birlikte gönderilecek özel başlıklar. `{{LIBRECHAT_USER_*}}` yer tutucuları ile dinamik kullanıcı alanı değiştirmeyi ve `${ENV_VAR}` ile ortam değişkenlerini destekler. | headers: X-User-ID: "{{LIBRECHAT_USER_ID}}" X-API-Key: "${SOME_API_KEY}" |
| apiKey | Object | (İsteğe bağlı, `sse` ve `streamable-http` türleri için) MCP sunucusu için API anahtarı kimlik doğrulama yapılandırması. | See apiKey section below |
| iconPath | String | (İsteğe bağlı) Araç seçim iletişim kutusunda gösterilen aracın görüntü simgesini tanımlar. | iconPath: "/path/to/icon.svg" |
| chatMenu | Boolean | (İsteğe bağlı) `false` olarak ayarlandığında, MCP sunucusunu hızlı ve kolay erişim için sohbet alanı açılır menüsünden (MCPSelect) hariç tutar. Varsayılan değer `true`'dur. | chatMenu: false |
| serverInstructions | Boolean or String | (İsteğe bağlı) MCP sunucu talimatlarının aracı bağlamına nasıl ekleneceğini kontrol eder. Sunucu talimatları, bireysel araç açıklamalarını tamamlayarak tüm MCP sunucusu için üst düzey kullanım rehberliği sağlar. | serverInstructions: true # or serverInstructions: "Custom instructions" |
| timeout | Integer | (İsteğe bağlı) MCP sunucu istekleri için milisaniye cinsinden zaman aşımı. Negatif olmayan bir tam sayı olmalıdır. | timeout: 30000 |
| initTimeout | Integer | (İsteğe bağlı) MCP sunucusu başlatma işlemi için milisaniye cinsinden zaman aşımı süresi. Negatif olmayan bir tam sayı olmalıdır. | initTimeout: 10000 |
| env | Object | (İsteğe bağlı, yalnızca `stdio` türü) İşlemi başlatırken kullanılacak ortam değişkenleri. | env: NODE_ENV: "production" |
| requiresOAuth | Boolean | (İsteğe bağlı, uzak taşıyıcılar: `sse`, `streamable-http`, `websocket`) Bu sunucunun OAuth kimlik doğrulaması gerektirip gerektirmediği. Belirtilmezse, sunucu başlatılırken otomatik olarak algılanacaktır. İsteğe bağlı olsa da, sunucunun OAuth gerektirip gerektirmediğini biliyorsanız bu değeri açıkça ayarlamak en iyisidir. `requiresOAuth: false` ayarı, statik bir `Authorization` başlığı ile korunan sunucular için, aksi takdirde onları yanlışlıkla OAuth korumalı olarak sınıflandıracak otomatik algılamayı atlamak adına kullanışlıdır. | requiresOAuth: false |
| stderr | String or Integer | (İsteğe bağlı, yalnızca `stdio` türü) Alt sürecin `stderr` çıktısının nasıl yönetileceği. Seçenekler: `"pipe"`, `"ignore"`, `"inherit"` veya negatif olmayan bir tam sayı (dosya tanımlayıcı). Varsayılan değer `"inherit"` şeklindedir. | stderr: "inherit" |
| customUserVars | Object | (İsteğe bağlı) Bu MCP sunucusu için kullanıcıların ayarlayabileceği özel değişkenleri tanımlar; bu sayede kullanıcı bazlı kimlik bilgileri veya yapılandırmalar (örneğin API anahtarları) sağlanabilir. Bu değişkenler daha sonra `headers` veya `env` alanlarında referans olarak kullanılabilir. | customUserVars: API_KEY: title: "API Key" description: "Your personal API key." |
| oauth | Object | (İsteğe bağlı) MCP sunucusu ile kimlik doğrulaması için OAuth2 yapılandırması. Yapılandırıldığında, kullanıcılardan OAuth akışı aracılığıyla kimlik doğrulamaları istenecektir. | oauth: authorization_url: "https://example.com/oauth/authorize" token_url: "https://example.com/oauth/token" |
| oauth_headers | Object | (İsteğe bağlı) Dinamik istemci kaydı veya belirteç değişimi gibi yalnızca OAuth akış istekleri için kullanılan başlık adları ve değerlerinin eşlemesi. | oauth_headers: Authorization: "Bearer ${DCR_API_KEY}" X-Custom-Header: "custom_value" |
| obo | Object | (İsteğe bağlı, `sse` ve `streamable-http` türleri için) On-Behalf-Of belirteç değişimi yapılandırması. Mevcut kullanıcının OpenID erişim belirtecini devredilen bir alt belirteç ile değiştirir ve bunu Bearer belirteci olarak iletir. | obo: scopes: "api://mcp-server-id/Mcp.Tools.ReadWrite" |
| startup | Boolean | (İsteğe bağlı) false olarak ayarlandığında, bu MCP sunucusu uygulama başlangıcında bağlanmayacaktır. | startup: false |
title
- Tür: String (İsteğe bağlı)
- Açıklama: Arayüzde MCP sunucusu için özel görünen ad. Belirtilmezse, sunucu anahtar adı kullanılır.
- Örnek:
my-server: title: 'File System Access' command: npx args: ['-y', '@modelcontextprotocol/server-filesystem']
description
- Tür: String (İsteğe bağlı)
- Açıklama: Kullanıcıların amacını ve yeteneklerini anlamalarına yardımcı olmak için arayüzde görüntülenen MCP sunucusunun açıklaması.
- Örnek:
my-server: title: 'File System Access' description: 'Provides read/write access to local files and directories' command: npx args: ['-y', '@modelcontextprotocol/server-filesystem']
type
- Tür: String
- Açıklama: MCP sunucusuna olan bağlantı türünü belirtir. Geçerli seçenekler
"stdio","websocket","streamable-http"veya"sse"şeklindedir. - Varsayılan Değer:
urlveyacommandöğesinin varlığına ve biçimine göre belirlenir.
command
- Tür: String
- Açıklama: (
stdiotürü için) MCP sunucusunu başlatmak üzere çalıştırılacak komut veya yürütülebilir dosya.
args
- Tür: Dizi (Array of Strings)
- Açıklama: (
stdiotürü için)commandöğesine iletilecek komut satırı argümanları.
url
- Tür: String
- Açıklama: (
websocket,streamable-httpveyassetürü için) MCP sunucusuna bağlanılacak URL. Dinamik kullanıcı alanı yer tutucularını ({{LIBRECHAT_USER_*}}) ve ortam değişkeni değiştirmeyi (${ENV_VAR}) destekler. - Notlar:
ssetürü için URL,http://veyahttps://ile başlamalıdır.streamable-httptürü için URL,http://veyahttps://ile başlamalıdır.websockettürü için URL,ws://veyawss://ile başlamalıdır.
proxy
- Tür: String (
ssevestreamable-httptürleri için isteğe bağlı) - Açıklama: Bu uzak MCP sunucusu için giden (outbound) proxy URL'si. Değer,
${ENV_VAR}ile ortam değişkenlerine referans verebilir. - Desteklenen protokoller:
http://,https://,socks://vesocks5:// - Güvenlik notu:
proxyyönetici kontrollüdür. Ortam değişkenlerini çözümler, ancak{{LIBRECHAT_USER_ID}}veyacustomUserVarsgibi kullanıcı kontrollü yer tutucuları çözümlemez. - Örnek:
mcpServers: remote-api: type: streamable-http url: https://api.example.com/mcp proxy: '${MCP_PROXY_URL}'
headers
- Tür: Nesne (İsteğe bağlı,
ssevestreamable-httptürleri için) - Açıklama: İstekle birlikte gönderilecek özel başlıklar. Dinamik değer değişimi için çeşitli yer tutucu türlerini destekler.
- Yer Tutucu Desteği:
{{LIBRECHAT_USER_ID}}: Mevcut kullanıcının kimliği ile değiştirilecek olup çoklu kullanıcı desteğini etkinleştirir.{{LIBRECHAT_USER_*}}: Dinamik kullanıcı alanı yer tutucuları.*yerine izin verilen herhangi bir alanın BÜYÜK HARFLİ sürümünü yazın.{{LIBRECHAT_OPENID_*}}: YAML ile tanımlanan sunucular için OpenID belirteci/oturum yer tutucuları.{{LIBRECHAT_GRAPH_*}}: YAML ile tanımlanan sunucular için Microsoft Graph belirteç (token) yer tutucuları.{{LIBRECHAT_BODY_*}}: YAML ile tanımlanmış sunucular için mevcutconversationId,parentMessageIdveyamessageIdgibi istek gövdesi yer tutucuları.{{CUSTOM_VARIABLE_NAME}}:customUserVarsiçinde tanımlanan bir değişken için kullanıcı tarafından sağlanan değerle değiştirilir (örneğin,{{MY_API_KEY}}).${ENV_VAR}:{{ENV_VAR}}ortam değişkeninin değeri ile değiştirilecektir.
Kullanılabilir Kullanıcı Alanı Yer Tutucuları:
| Yer Tutucu | Kullanıcı Alanı | Tür | Açıklama |
|---|---|---|---|
{{LIBRECHAT_USER_NAME}} | name | String | Kullanıcının görünen adı |
{{LIBRECHAT_USER_USERNAME}} | username | String | Kullanıcının kullanıcı adı |
{{LIBRECHAT_USER_EMAIL}} | email | String | Kullanıcının e-posta adresi |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | Kimlik doğrulama sağlayıcısı (ör. "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | Kullanıcının rolü (ör. "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | Google hesap kimliği |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | Facebook hesap kimliği |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | OpenID hesap kimliği |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | SAML hesap kimliği |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | LDAP hesap kimliği |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | GitHub hesap kimliği |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | Discord hesap kimliği |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | Apple hesap kimliği |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | E-posta doğrulama durumu ("true" veya "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | 2FA durumu ("true" veya "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | Şartların kabul edilme durumu ("true" veya "false") |
Not: Eksik alanlar boş dizelerle değiştirilecektir.
{{LIBRECHAT_BODY_*}} yer tutucuları istek kapsamlıdır (request-scoped). LibreChat, aktif çalışma için MCP bağlantısını oluşturur, bu çalışma içindeki araç çağrılarında bağlantıyı yeniden kullanır ve istek sona erdiğinde bağlantıyı temizler. İstek kapsamlı sunucular kalıcı araç önbelleğinden hariç tutulur, böylece isteğe özel başlıklar ve URL'ler aktif çalışma dışında yeniden kullanılmaz. {{LIBRECHAT_USER_*}}, {{LIBRECHAT_OPENID_*}} ve {{LIBRECHAT_GRAPH_*}} yer tutucuları sunucuyu hala kullanıcı kapsamlı (user-scoped) yapar, ancak HTTP aktarımları, kendi başlarına yeniden bağlanmaya zorlamadan her araç çağrısından önce çözümlenmiş başlıkları yeniler.
- Örnek:
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
-
Tür: Nesne (İsteğe bağlı,
ssevestreamable-httptürleri için) -
Açıklama: MCP sunucusu için API anahtarı kimlik doğrulama yapılandırması. API anahtarı tabanlı kimlik doğrulamayı yapılandırmak için yapılandırılmış bir yol sağlar.
-
Alt anahtarlar:
source: String - API anahtarının nereden geldiği. Seçenekler:"admin": API anahtarı yönetici tarafından (ortam değişkenlerinde veya yapılandırmada) yapılandırılmıştır"user": API anahtarı, kullanıcı tarafından arayüz (UI) aracılığıyla sağlanır
authorization_type: String - API anahtarının isteklere nasıl gönderileceği. Seçenekler:"bearer":Authorization: Bearer <key>olarak gönderilir"basic":Authorization: Basic <key>olarak gönderilir"custom": Özel bir başlıkta gönderilir (custom_headergerektirir)
custom_header: String - (authorization_type"custom"olduğunda gereklidir) API anahtarı için kullanılacak başlık adı
-
Örnek:
# 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
- Tür: String (İsteğe bağlı)
- Açıklama: Araç seçim iletişim kutusunda gösterilen aracın görüntü simgesini tanımlar.
chatMenu
- Tür: Boolean (İsteğe bağlı)
- Açıklama:
falseolarak ayarlandığında, hızlı ve kolay erişim için MCP sunucusunu sohbet alanı açılır menüsünden (MCPSelect) hariç tutar. - Varsayılan Değer:
true(MCP sunucusu chatarea açılır menüsüne dahil edilecektir)
serverInstructions
-
Tür: Boolean veya String (İsteğe bağlı)
-
Açıklama: MCP sunucu talimatlarının aracı bağlamına nasıl ekleneceğini kontrol eder. Sunucu talimatları, bireysel araç açıklamalarını tamamlayarak tüm MCP sunucusu için üst düzey kullanım rehberliği sağlar.
-
Seçenekler:
undefined(varsayılan): Hiçbir talimat dahil edilmeztrue: Sunucu tarafından sağlanan talimatları kullanır (eğer mevcutsa) - kapsamlı rehberliğe sahip, iyi belgelendirilmiş sunucular için idealdirfalse: Talimatları açıkça devre dışı bırakır - bağlam belirteçlerinden (context tokens) tasarruf etmek veya araçlar kendi kendini açıklayıcı olduğunda kullanışlıdırstring: Özel talimatları kullanın (sunucu tarafından sağlananları geçersiz kılar) - uygulamaya özel iş akışları veya sunucu talimatlarının yetersiz kaldığı durumlar için en iyisidir
-
Varsayılan Değer:
undefined(talimat içermez) -
Notlar:
serverInstructionsyapılandırıldığında ve sunucunun araçları aracı için kullanılabilir olduğunda talimatlar otomatik olarak eklenir.- Birden fazla sunucu, her biri aracı bağlamına talimatlar katkıda bulunabilir
-
Örnek:
# 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
- Tür: Nesne (İsteğe bağlı, yalnızca
stdiotürü) - Açıklama: Süreç başlatılırken kullanılacak ortam değişkenleri.
- Yer Tutucu Desteği:
{{LIBRECHAT_USER_ID}}: Mevcut kullanıcının kimliği (ID) ile değiştirilir.{{LIBRECHAT_USER_*}}: Dinamik kullanıcı alanı yer tutucuları (örneğin,{{LIBRECHAT_USER_EMAIL}}).{{CUSTOM_VARIABLE_NAME}}:customUserVarsiçinde tanımlanan bir değişken için kullanıcı tarafından sağlanan değerle değiştirilir (örneğin,{{MY_API_KEY}}).${ENV_VAR}: Sunucu tarafındaki{{ENV_VAR}}ortam değişkeninin değeri ile değiştirilir.
timeout
- Tür: Tamsayı (İsteğe bağlı)
- Açıklama: MCP sunucu istekleri için milisaniye cinsinden zaman aşımı süresi. Negatif olmayan bir tam sayı olmalıdır.
- Varsayılan Değer:
30000(30 saniye)
initTimeout
- Tür: Tamsayı (İsteğe bağlı)
- Açıklama: MCP sunucusu başlatma işlemi için milisaniye cinsinden zaman aşımı süresi. Negatif olmayan bir tam sayı olmalıdır.
- Varsayılan Değer:
10000(10 saniye)
requiresOAuth
- Tür: Boolean (İsteğe bağlı, yalnızca uzak aktarımlar:
sse,streamable-http,websocket) - Açıklama: Bu sunucunun OAuth kimlik doğrulaması gerektirip gerektirmediği. Belirtilmezse, sunucu başlatılırken otomatik olarak algılanacaktır. İsteğe bağlı olsa da, sunucunun OAuth gerektirip gerektirmediğini biliyorsanız bu değeri açıkça ayarlamak en iyisidir.
- Varsayılan Değer: Belirtilmediği takdirde otomatik olarak algılanır
- Notlar:
- Uzak (URL tabanlı) taşıyıcılar için geçerlidir:
sse,streamable-httpvewebsocket. Kimlik doğrulaması yapılacak bir URL'ye sahip olmayanstdiosunucuları üzerinde hiçbir etkisi yoktur. - Otomatik algılama sunucu başlatma sırasında gerçekleşir, bu da başlatma süresini uzatabilir
- Açık yapılandırma, algılamayı atlayarak başlatma performansını iyileştirir
- Yalnızca statik bir
Authorizationbaşlığı (örneğin bir Bearer API anahtarı) ile korunan sunucular içinrequiresOAuth: falseayarını yapın. Otomatik algılama, sunucuyu yapılandırılmış başlıklarınız olmadan sorgular; bu nedenleWWW-Authenticate: Beareruyarısı ile401yanıtı veren bir sunucu, yanlışlıkla OAuth korumalı olarak sınıflandırılabilir. Bu bayrak, söz konusu sorguyu atlar ve statik başlığınızın bağlantıyı normal şekilde doğrulamasına olanak tanır. - Gelişmiş bağlantı yönetimi için MCP OAuth ortam değişkenleri (
MCP_OAUTH_ON_AUTH_ERROR,MCP_OAUTH_DETECTION_TIMEOUT,MCP_OAUTH_HANDLING_TIMEOUT,MCP_OAUTH_FLOW_TTL) ile çalışır
- Uzak (URL tabanlı) taşıyıcılar için geçerlidir:
stderr
- Tür: String veya Integer (İsteğe bağlı, yalnızca
stdiotürü için) - Açıklama: Alt sürecin
stderrçıktısının nasıl işleneceği. Bu, Node'unchild_process.spawnsemantiği ile eşleşir. Geçerli dize değerleri:"pipe","ignore","inherit". Alternatif olarak, dosya tanımlayıcısı olarak negatif olmayan bir tam sayı kullanılabilir. - Varsayılan Değer:
"inherit"(stderrmesajları ana sürecinstderrçıktısına yazdırılacaktır).
customUserVars
- Tür: Nesne (İsteğe bağlı)
- Açıklama: Bu MCP sunucusu için kullanıcıların ayarlayabileceği özel değişkenleri tanımlar. Bu, yöneticilerin her kullanıcının ayrı ayrı yapılandırması gereken değişkenleri (örneğin, API anahtarları, URL'ler) belirlemesine olanak tanır. Kullanıcı tarafından sağlanan bu değerler daha sonra
headersveyaenvyapılandırmasında kullanılabilir.customUserVarsiçeren sunucular, uygulama düzeyindeki bağlantılardan otomatik olarak hariç tutulur; bu da kullanıcıya özel kimlik bilgilerinin her zaman çalışma zamanında çözümlenmesini sağlar. - Yapı:
customUserVarsnesnesi, her bir anahtarın bir değişken adını (örneğinMY_API_KEY) temsil ettiği anahtarlar içerir. Bu ad,{{MY_API_KEY}}gibi yer tutucularda kullanılacaktır.- Her değişken adı, aşağıdaki alt anahtarlara sahip bir nesnedir:
title: String (Gerekli) - Yapılandırma arayüzünde görüntülenen, değişken için kullanıcı dostu bir başlık.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 (İsteğe bağlı) - Değerin gizli olarak ele alınıp kullanıcı arayüzünde maskelenip maskelenmeyeceğini kontrol eder. Belirtilmediğinde varsayılan olarak maskelenmiş/gizli davranır; proje kimlikleri veya temel URL'ler gibi gizli olmayan alanlar içinfalseolarak ayarlayın.
headersveenviçinde kullanım:customUserVarsaltında tanımlandıktan sonra, bu değişkenlereheaders(ssevestreamable-httptürleri için) veyaenv(stdiotürü için) bölümlerinde{{VARIABLE_NAME}}sözdizimi kullanılarak başvurulabilir.- Kullanıcılar bu değerleri arayüz (UI) aracılığıyla sağlarlar. Bu ayarlara iki şekilde erişilebilir:
- Asistan Sohbet Girdisinden: Bir asistan için MCP araçları seçilirken, araç seçim açılır menüsünde yapılandırılabilir MCP sunucularının yanında bir ayarlar simgesi görünecektir. Bu simgeye tıklamak, ilgili sunucu için kimlik bilgilerini yönetmek üzere bir iletişim kutusu açar.
- Ayarlar Panelinden: Sağ paneldeki özel bir "MCP Settings" bölümü, tanımlanabilir özel değişkenlere sahip tüm MCP sunucularını listeler. Kullanıcılar, belirli bir MCP sunucusu için kimlik bilgilerini ayarlamak veya güncellemek üzere yapılandırma iletişim kutusunu açmak için bir sunucuya tıklayabilirler.
- Asistan Sohbet Girdisinden: Bir asistan için MCP araçları seçilirken, araç seçim açılır menüsünde yapılandırılabilir MCP sunucularının yanında bir ayarlar simgesi görünecektir. Bu simgeye tıklamak, ilgili sunucu için kimlik bilgilerini yönetmek üzere bir iletişim kutusu açar.
- Kullanıcı tarafından sağlanan bu değerler güvenli bir şekilde saklanır, ilgili kullanıcı ve belirli MCP sunucusu ile ilişkilendirilir ve çalışma zamanında yerlerine yerleştirilir.
- Örnek:
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: falseheadersiçinde kullanım:headers: X-Auth-Token: '{{MY_SERVICE_API_KEY}}' X-Some-Other-Config: '{{SOME_OTHER_VAR}}'enviçinde kullanım (stdiotürü için):env: API_KEY: '{{MY_SERVICE_API_KEY}}'
obo
- Tür: Nesne (İsteğe bağlı, yalnızca
ssevestreamable-httptürleri için) - Açıklama: Bir MCP sunucusu için OAuth 2.0 On-Behalf-Of (adına hareket etme) belirteç değişimini yapılandırır. LibreChat, oturum açmış kullanıcının OpenID erişim belirtecini yapılandırılmış kapsamlarla temsilci bir alt akış belirteci ile değiştirir ve ardından bu belirteci bir
Authorization: Bearer ...başlığı olarak MCP sunucusuna iletir. - Gerekli Alt Anahtarlar:
scopes: String - Aşağı yönlü (downstream) token değişimi için talep edilen boş olmayan kapsamlar.
- Doğrulama:
obo, yalnızcassevestreamable-httpMCP sunucuları için geçerlidir.obo,stdiovewebsocketsunucuları için reddedilir.- Kullanıcıların bu alanı yapılandırabilmesi için
MCP_SERVERS.CONFIGURE_OBOrol iznine sahip olması gerekir. Bunuinterface.mcpServers.configureOboile başlatın veya yönetici panelinden yönetin.
- Ön koşullar:
- OpenID kimlik doğrulaması, yeniden kullanılabilir erişim belirteçleri (access tokens) ile yapılandırılmalıdır.
- Kimlik sağlayıcınız ve alt uygulamanız, talep edilen yetkilendirilmiş kapsama (delegated scope) izin vermelidir.
- Örnek:
mcpServers: enterprise-tools: type: streamable-http url: https://api.example.com/mcp/ obo: scopes: 'api://mcp-server-id/Mcp.Tools.ReadWrite'
İlgili token yeniden kullanımı ve yetkilendirilmiş token kurulumu için OpenID Connect Token Reuse ve SharePoint Integration bölümlerine bakın.
oauth
- Tür: Nesne (İsteğe bağlı)
- Açıklama: MCP sunucusu ile kimlik doğrulaması için OAuth2 yapılandırması. Yapılandırıldığında, kullanıcılar MCP sunucusu kullanılmadan önce OAuth akışı aracılığıyla kimlik doğrulaması yapmaya yönlendirilecektir. Eğer bir client id ve client secret sağlanmazsa, Dinamik İstemci Kaydı (DCR) kullanılacaktır.
- Gerekli Alt Anahtarlar:
authorization_url: String - OAuth yetkilendirme endpoint URL'itoken_url: String - OAuth belirteç (token) uç noktası URL'siclient_id: String - OAuth istemci tanımlayıcısıclient_secret: String - OAuth istemci gizli anahtarı (client secret)redirect_uri: String - OAuth yönlendirme URI'si (ör.http://localhost:3080/api/mcp/${serverName}/oauth/callback)scope: String - OAuth kapsamları (boşlukla ayrılmış)
- İsteğe Bağlı Alt Anahtarlar:
grant_types_supported: Dizi (Array) - Desteklenen yetkilendirme türleri (varsayılan olarak["authorization_code", "refresh_token"])token_endpoint_auth_methods_supported: Dizi (Array) - Desteklenen token uç noktası kimlik doğrulama yöntemleri (varsayılan olarak["client_secret_basic", "client_secret_post"])token_exchange_method: String - Token değişimi istek yöntemi. OAuth istemci kimlik bilgilerini POST gövdesinde bekleyen sağlayıcılar içindefault_postkullanın.response_types_supported: Dizi (Array) - Desteklenen yanıt türleri (varsayılan olarak["code"])code_challenge_methods_supported: Dizi (Array) - Desteklenen PKCE kod doğrulama yöntemleri (varsayılan olarak["S256", "plain"])skip_code_challenge_check: Boolean - OAuth sağlayıcısının PKCE desteğini duyurup duyurmadığının kontrolünü atlar. S256'yı destekleyen ancak bunu meta verilerinde duyurmayan AWS Cognito gibi sağlayıcılar için kullanışlıdır. (varsayılan değerfalse)
- Ortam değişkenleri:
authorization_url,token_url,redirect_uriverevocation_endpointdahil olmak üzere YAML ile tanımlanmış OAuth URL alanları,${ENV_VAR}referanslarını kullanabilir. LibreChat, URL doğrulamasından önce ortam değerini çözümler. Kullanıcı tarafından yönetilen ve arayüz üzerinden gönderilen OAuth uç nokta URL'leri gerçek URL'ler olmalı ve${ENV_VAR}yer tutucularını reddetmelidir. - Örnek:
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
- Tür: Nesne (İsteğe bağlı)
- Açıklama: Özellikle OAuth akış istekleri için kullanılan başlıklar. Bu başlıklar, dinamik istemci kaydı ve belirteç değişimi gibi OAuth kimlik doğrulaması sırasında kullanılır ve normal MCP sunucusu iletişimi sırasında gönderilmez.
- Yaygın Kullanım Durumları:
- Dinamik istemci kaydı uç noktalarına,
Authorization: Bearer ${DCR_API_KEY}gibi kimlik doğrulama ekleme - OAuth akışları için gerekli olan özel sağlayıcıya özgü başlıkların dahil edilmesi
- OAuth token uç noktaları tarafından ihtiyaç duyulan başlıkları ayarlama
- Dinamik istemci kaydı uç noktalarına,
headersile Temel Farklar:headers: Kimlik doğrulama tamamlandıktan sonra düzenli MCP sunucu istekleriyle birlikte gönderiliroauth_headers: Yalnızca OAuth kimlik doğrulama akışları sırasında gönderilir
- Örnek:
oauth_headers: Authorization: "Bearer ${DCR_API_KEY}" X-Custom-Header: "custom_value"
startup
- Tür: Boolean (İsteğe bağlı)
- Açıklama:
falseolarak ayarlandığında, bu MCP sunucusu uygulama başlangıcında bağlanmayacaktır. Bu, bağlanmadan önce kullanıcı girişi veya yapılandırma gerektiren sunucular veya sunucunun ne zaman başlatılacağını kontrol etmek istediğiniz durumlar için kullanışlıdır. - Varsayılan Değer:
true - Örnek:
mcpServers: my-mcp-server: type: streamable-http url: 'https://api.example.com/mcp/' startup: false
Notlar
- Tür Çıkarımı:
typeatlanırsa:urlbelirtilmişse vehttp://veyahttps://ile başlıyorsa,typevarsayılan olaraksseolur.urlbelirtilmişse vews://veyawss://ile başlıyorsa,typevarsayılan olarakwebsocketolur.commandbelirtilmişse,typevarsayılan olarakstdiodeğerini alır.
- Bağlantı Türleri:
stdio: Bir MCP sunucusunu alt işlem (child process) olarak başlatır ve standart girdi/çıktı (standard input/output) aracılığıyla iletişim kurar.websocket: Bir WebSocket aracılığıyla harici bir MCP sunucusuna bağlanır.sse: Server-Sent Events (SSE) aracılığıyla harici bir MCP sunucusuna bağlanır.streamable-http: Yanıt akışını destekleyen HTTP aracılığıyla harici bir MCP sunucusuna bağlanır.
- Dahili/Yerel Adresler:
- Önemli: Dahili IP adreslerini (örneğin
172.24.1.165,192.168.1.100) veya yerel alan adlarını (örneğinmcp-server,host.docker.internal) kullanan MCP sunucularına açıkça izin verilmelidir. Genel hedeflerin erişilebilir kalmasını istediğinizde belirli özel host:port servisleri içinmcpSettings.allowedAddressesseçeneğini veya katı bir beyaz liste istediğinizdemcpSettings.allowedDomainsseçeneğini kullanın. - Yapılandırma ayrıntıları için MCP Settings bölümüne bakın.
- Önemli: Dahili IP adreslerini (örneğin
Örnekler
Dahili Adreslerle Yapılandırma
Dahili/yerel MCP sunucuları kullanılırken ve katı bir alan adı beyaz listesine ihtiyaç duyulmadığında, mcpSettings.allowedAddresses kısmını tam ana bilgisayar (host) ve bağlantı noktası (port) ile yapılandırın:
# 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: 120000stdio MCP Sunucusu
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: inheritsse MCP Sunucusu
everything:
url: http://localhost:3001/sse
headers:
X-User-ID: '{{LIBRECHAT_USER_ID}}'
X-API-Key: '${SOME_API_KEY}'websocket MCP Sunucusu
myWebSocketServer:
url: ws://localhost:8080streamable-http MCP Sunucusu
streamable-http-server:
type: streamable-http
url: https://example.com/api/
headers:
X-User-ID: '{{LIBRECHAT_USER_ID}}'
X-API-Key: '${SOME_API_KEY}'Dinamik Kullanıcı Alanlarına Sahip MCP Sunucusu
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}'customUserVars ile Kullanıcı Bazlı Kimlik Bilgilerine Sahip MCP Server
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 inputNOT UI tabanlı sunucu başlatma hakkında daha fazla bilgi için MCP Server Initialization bölümüne bakın.
Özel İkonlu MCP Server
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 dropdownOAuth Kimlik Doğrulamalı MCP Server
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'Sunucu Talimatları ile MCP Server
# 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 troubleshootingOAuth Etkinleştirilmiş MCP Sunucusu (Eski 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İlgili Ortam Değişkenleri (İsteğe Bağlı):
# 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_hereMCP Sunucu Yapılandırmalarını İçe Aktarma
mcpServers yapılandırmaları, LibreChat'in çeşitli MCP sunucularıyla dinamik olarak etkileşime girmesine olanak tanır; bu sunucular uygulama içinde özel görevler gerçekleştirebilir veya belirli işlevler sağlayabilir. Bu modüler yaklaşım, yalnızca sunucu yapılandırmaları ekleyerek veya değiştirerek uygulamanın yeteneklerini genişletmeyi kolaylaştırır.
Ek Bilgiler
- Varsayılan Davranış:
- Başlatma işlemi uygulama açılışında gerçekleşir ve değişikliklerin etkili olması için uygulamanın yeniden başlatılması gerekir.
- Hem
urlhem decommandbelirtilmişse, belirsizliği önlemek içintypeaçıkça tanımlanmalıdır.
- Çok Kullanıcılı Destek:
- MCPManager artık kullanıcı düzeyinde ve uygulama düzeyinde ayrı bağlantıları destekleyerek, kullanıcı başına düzgün bağlantı yönetimi sağlar.
- Kullanıcı bağlantıları ayrı ayrı izlenir ve yönetilir; uygun kurulum ve temizleme işlemleri gerçekleştirilir.
- Başlıklarda, URL'lerde ve ortam değişkenlerinde dinamik kullanıcı alanı yer tutucularını kullanın:
{{LIBRECHAT_USER_ID}}- Kullanıcının benzersiz tanımlayıcısı{{LIBRECHAT_USER_EMAIL}}- Kullanıcının e-posta adresi{{LIBRECHAT_USER_USERNAME}}- Kullanıcının kullanıcı adı{{LIBRECHAT_USER_ROLE}}- Kullanıcının rolü (örneğin, "user", "admin")- Ve daha birçok alan (tam liste için başlıklar bölümüne bakın)
- Kullanıcı Boşta Kalma Yönetimi:
- Kullanıcı bağlantıları etkinlik açısından izlenir ve 15 dakikalık hareketsizlikten sonra bağlantıları kesilir.
- Ortam Değişkenleri:
enviçinde (stdiotürü için): MCP sunucu süreci tarafından gerekli olan belirli çalışma zamanı ortamlarını veya yapılandırmalarını ayarlamak için kullanışlıdır.headersiçinde (ssevestreamable-httptürleri için): Başlık değerlerinde ortam değişkenlerine referans vermek için${ENV_VAR}sözdizimini kullanın.
- Dinamik Kullanıcı Alanları:
- Kullanıcı alanı yer tutucuları, çalışma zamanında kimliği doğrulanmış kullanıcının bilgileriyle değiştirilir
- Yalnızca hassas olmayan alanlar mevcuttur (şifreler ve diğer hassas veriler hariç tutulmuştur)
- Eksik alanlar varsayılan olarak boş dizelere ayarlanır
- Boolean alanlar, dize gösterimlerine ("true" veya "false") dönüştürülür.
- Hata İşleme (
stderr):stderryapılandırması, MCP sunucu sürecinden gelen hata mesajlarının nasıl yönetileceğini belirlemenize olanak tanır. Varsayılan"inherit"değeri, hataların üst sürecinstderrkısmına yazdırılacağı anlamına gelir.
- Sunucu Talimatları:
- MCP sunucu araçları kullanıldığında talimatlar otomatik olarak ajanın sistem mesajına eklenir.
- Özel talimatlar (string değerleri), sunucu tarafından sağlanan talimatlara göre önceliklidir
- Birden fazla MCP sunucusu, her biri kendi talimatlarını aracı bağlamına (agent context) katkıda bulunabilir
- Talimatlar, yalnızca ilgili MCP sunucusunun araçları gerçekten aracı için kullanılabilir olduğunda dahil edilir
- OAuth Kimlik Doğrulaması:
- MCP sunucuları ile güvenli kimlik doğrulama için OAuth2 akışı desteklenmektedir
- MCP sunucusu kullanılmadan önce kullanıcılardan OAuth aracılığıyla kimlik doğrulaması yapmaları istenecektir.
Referanslar
- Model Context Protocol (MCP) Dokümantasyonu
- MCP Transports Specification
- Node.js child_process.spawn
librechat.yaml dosyanızdaki mcpServers ayarlarını doğru bir şekilde yapılandırarak LibreChat'in işlevselliğini artırabilir ve özel araçlar ile hizmetleri sorunsuz bir şekilde entegre edebilirsiniz.
Bu rehber nasıl?