MCP Servers オブジェクト構造
例
# 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>
キー:
| Key | Type | Description | Example |
|---|---|---|---|
| <serverName> | Object | `mcpServers` 配下の各キーは、一意の名前で識別される個別の MCP サーバー設定を表します。この名前は、アプリケーション内でサーバー設定を参照するために使用されます。 |
サブキー
| Key | Type | Description | Example |
|---|---|---|---|
| title | String | (オプション)UI上のMCPサーバーのカスタム表示名。指定がない場合は、サーバーのキー名が使用されます。 | title: "My Custom Server" |
| description | String | (オプション)MCPサーバーの説明。ユーザーがその目的を理解できるようUIに表示されます。 | description: "Provides file system access" |
| type | String | MCPサーバーへの接続タイプを指定します。有効なオプションは `"stdio"`、`"websocket"`、`"streamable-http"`、または `"sse"` です。省略した場合、`url` または `command` の有無と形式に基づいてデフォルト値が設定されます。 | type: "stdio" |
| command | String | (`stdio`タイプの場合)MCPサーバーを起動するために実行するコマンドまたは実行ファイル。 | command: "npx" |
| args | Array of Strings | (`stdio`タイプの場合)`command`に渡すコマンドライン引数。 | args: ["-y", "@modelcontextprotocol/server-puppeteer"] |
| url | String | (`websocket`、`streamable-http`、または `sse` タイプの場合)MCPサーバーに接続するためのURL。 | url: "http://localhost:3001/sse" |
| proxy | String | (オプション、`sse` および `streamable-http` タイプ用)このリモート MCP サーバーの送信プロキシ URL。`http://`、`https://`、`socks://`、および `socks5://` URL をサポートします。 | proxy: "${MCP_PROXY_URL}" |
| headers | Object | (オプション、`sse` および `streamable-http` タイプ用)リクエストと共に送信するカスタムヘッダー。`{{LIBRECHAT_USER_*}}` プレースホルダーを使用した動的なユーザーフィールドの置換、および `${ENV_VAR}` を使用した環境変数をサポートしています。 | headers: X-User-ID: "{{LIBRECHAT_USER_ID}}" X-API-Key: "${SOME_API_KEY}" |
| apiKey | Object | (オプション、`sse` および `streamable-http` タイプ用)MCPサーバーのAPIキー認証設定。 | See apiKey section below |
| iconPath | String | (オプション)ツール選択ダイアログに表示されるツールのアイコンを定義します。 | iconPath: "/path/to/icon.svg" |
| chatMenu | Boolean | (オプション)`false` に設定すると、チャットエリアのドロップダウン(MCPSelect)からMCPサーバーを除外し、素早く簡単にアクセスできるようにします。デフォルトは `true` です。 | chatMenu: false |
| serverInstructions | Boolean or String | (オプション)MCPサーバーの指示をエージェントのコンテキストに注入する方法を制御します。サーバーの指示はMCPサーバー全体に対する高レベルな使用ガイダンスを提供し、個々のツール説明を補完します。 | serverInstructions: true # or serverInstructions: "Custom instructions" |
| timeout | Integer | (オプション)MCPサーバーリクエストのタイムアウト時間(ミリ秒)。0以上の整数である必要があります。 | timeout: 30000 |
| initTimeout | Integer | (オプション)MCPサーバーの初期化タイムアウト(ミリ秒)。0以上の整数である必要があります。 | initTimeout: 10000 |
| env | Object | (オプション、`stdio`タイプのみ)プロセスを起動する際に使用する環境変数。 | env: NODE_ENV: "production" |
| requiresOAuth | Boolean | (オプション、リモートトランスポート: `sse`、`streamable-http`、`websocket`)このサーバーがOAuth認証を必要とするかどうか。指定がない場合、サーバー起動時に自動検出されます。オプションですが、サーバーがOAuthを必要とするかどうかがわかっている場合は、この値を明示的に設定することをお勧めします。`requiresOAuth: false` の設定は、静的な `Authorization` ヘッダーで保護されたサーバーにおいて、誤ってOAuth保護されていると判定される自動検出をスキップするために役立ちます。 | requiresOAuth: false |
| stderr | String or Integer | (オプション、`stdio`タイプのみ)子プロセスの `stderr` を処理する方法。オプション: `"pipe"`、`"ignore"`、`"inherit"`、または非負の整数(ファイル記述子)。デフォルトは `"inherit"` です。 | stderr: "inherit" |
| customUserVars | Object | (オプション)このMCPサーバーに対してユーザーが設定可能なカスタム変数を定義します。これにより、ユーザーごとの認証情報や設定(例:APIキー)が可能になります。これらの変数は、`headers` または `env` フィールドで参照できます。 | customUserVars: API_KEY: title: "API Key" description: "Your personal API key." |
| oauth | Object | (オプション)MCPサーバーでの認証のためのOAuth2設定。設定すると、ユーザーはOAuthフローを通じて認証を求められるようになります。 | oauth: authorization_url: "https://example.com/oauth/authorize" token_url: "https://example.com/oauth/token" |
| oauth_headers | Object | (オプション)OAuthフローのリクエスト(動的クライアント登録やトークン交換など)でのみ使用されるヘッダー名と値のマップ。 | oauth_headers: Authorization: "Bearer ${DCR_API_KEY}" X-Custom-Header: "custom_value" |
| obo | Object | (オプション、`sse` および `streamable-http` タイプ用)On-Behalf-Of トークン交換設定。現在のユーザーの OpenID アクセストークンを委任されたダウンストリームトークンと交換し、Bearer トークンとして転送します。 | obo: scopes: "api://mcp-server-id/Mcp.Tools.ReadWrite" |
| startup | Boolean | (オプション)falseに設定すると、このMCPサーバーはアプリケーション起動時に接続されません。 | startup: false |
title
- 型: 文字列 (オプション)
- 説明: UI上でMCPサーバーに表示されるカスタム名。指定がない場合は、サーバーのキー名が使用されます。
- 例:
my-server: title: 'File System Access' command: npx args: ['-y', '@modelcontextprotocol/server-filesystem']
description
- 型: 文字列 (オプション)
- Description: MCPサーバーの説明。ユーザーがその目的や機能を理解できるよう、UI上に表示されます。
- 例:
my-server: title: 'File System Access' description: 'Provides read/write access to local files and directories' command: npx args: ['-y', '@modelcontextprotocol/server-filesystem']
type
- 型: String
- 説明: MCPサーバーへの接続タイプを指定します。有効なオプションは
"stdio"、"websocket"、"streamable-http"、または"sse"です。 - デフォルト値:
urlまたはcommandの有無と形式に基づいて決定されます。
command
- 型: String
- 説明: (
stdioタイプの場合) MCPサーバーを起動するために実行するコマンドまたは実行ファイル。
args
- 型: 文字列の配列
- 説明: (
stdioタイプの場合)commandに渡すコマンドライン引数。
url
- 型: String
- 説明: (
websocket、streamable-http、またはsseタイプの場合) MCP サーバーに接続するための URL です。動的なユーザーフィールドのプレースホルダー ({{LIBRECHAT_USER_*}}) および環境変数の置換 (${ENV_VAR}) をサポートしています。 - 注記:
sse型の場合、URL はhttp://またはhttps://で始まる必要があります。streamable-httpタイプの場合、URL はhttp://またはhttps://で始まる必要があります。websocket型の場合、URLはws://またはwss://で始まる必要があります。
proxy
- 型: String (任意、
sseおよびstreamable-http型の場合) - 説明: このリモート MCP サーバーの送信プロキシ URL です。値には
${ENV_VAR}を使用して環境変数を参照できます。 - サポートされているプロトコル:
http://,https://,socks://, およびsocks5:// - セキュリティ上の注意:
proxyは管理者によって制御されます。環境変数は解決されますが、{{LIBRECHAT_USER_ID}}やcustomUserVarsといったユーザーが制御可能なプレースホルダーは解決されません。 - 例:
mcpServers: remote-api: type: streamable-http url: https://api.example.com/mcp proxy: '${MCP_PROXY_URL}'
headers
- 型: Object (任意、
sseおよびstreamable-http型の場合) - 説明: リクエストと共に送信するカスタムヘッダー。動的な値の置換のために、さまざまなプレースホルダータイプをサポートしています。
- プレースホルダーのサポート:
{{LIBRECHAT_USER_ID}}: 現在のユーザーIDに置き換えられ、マルチユーザーサポートを有効にします。{{LIBRECHAT_USER_*}}: 動的なユーザーフィールドのプレースホルダー。*を許可された任意のフィールドの大文字バージョンに置き換えてください。{{LIBRECHAT_OPENID_*}}: YAMLで定義されたサーバー用のOpenIDトークン/セッションプレースホルダー。{{LIBRECHAT_GRAPH_*}}: YAMLで定義されたサーバー用のMicrosoft Graphトークンプレースホルダー。{{LIBRECHAT_BODY_*}}: YAMLで定義されたサーバー用のリクエストボディプレースホルダー。現在のconversationId、parentMessageId、またはmessageIdなどに使用されます。{{CUSTOM_VARIABLE_NAME}}:customUserVarsで定義された変数に対してユーザーが提供した値に置き換えられます(例:{{MY_API_KEY}})。${ENV_VAR}: 環境変数{{ENV_VAR}}の値に置き換えられます。
利用可能なユーザーフィールドのプレースホルダー:
| プレースホルダー | ユーザーフィールド | 型 | 説明 |
|---|---|---|---|
{{LIBRECHAT_USER_NAME}} | name | String | ユーザーの表示名 |
{{LIBRECHAT_USER_USERNAME}} | username | String | ユーザーのユーザー名 |
{{LIBRECHAT_USER_EMAIL}} | email | String | ユーザーのメールアドレス |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | 認証プロバイダー (例: "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | ユーザーのロール (例: "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | GoogleアカウントID |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | FacebookアカウントID |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | OpenIDアカウントID |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | SAMLアカウントID |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | LDAPアカウントID |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | GitHubアカウントID |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | DiscordアカウントID |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | AppleアカウントID |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | メール認証ステータス ("true" または "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | 2FAステータス ("true" または "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | 利用規約同意ステータス ("true" または "false") |
注: 不足しているフィールドは空の文字列に置き換えられます。
{{LIBRECHAT_BODY_*}} プレースホルダーはリクエストスコープです。LibreChat はアクティブな実行のために MCP 接続を作成し、その実行内のツール呼び出し間で再利用し、リクエスト終了時にクリーンアップします。リクエストスコープのサーバーは永続的なツールキャッシュから除外されるため、リクエスト固有のヘッダーや URL がアクティブな実行外で再利用されることはありません。{{LIBRECHAT_USER_*}}、{{LIBRECHAT_OPENID_*}}、および {{LIBRECHAT_GRAPH_*}} プレースホルダーは引き続きサーバーをユーザースコープにしますが、HTTP トランスポートはツール呼び出しごとに解決されたヘッダーを更新し、それ自体で再接続を強制することはありません。
- 例:
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
-
型: Object (任意、
sseおよびstreamable-http型の場合) -
説明: MCPサーバーのAPIキー認証設定です。APIキーベースの認証を設定するための構造化された方法を提供します。
-
サブキー:
source: String - APIキーの取得元。オプション:"admin": APIキーは管理者によって(環境変数または設定ファイル内で)構成されます"user": APIキーはユーザーがUIを通じて提供します
authorization_type: String - APIキーをリクエストで送信する方法。オプション:"bearer":Authorization: Bearer <key>として送信されます"basic":Authorization: Basic <key>として送信されます"custom": カスタムヘッダーで送信されます(custom_headerが必要です)
custom_header: String - (必須:authorization_typeが"custom"の場合) APIキーに使用するヘッダー名
-
例:
# 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
- 型: 文字列 (オプション)
- 説明: ツール選択ダイアログに表示されるツールの表示アイコンを定義します。
chatMenu
- 型: Boolean (オプション)
- 説明:
falseに設定すると、チャットエリアのドロップダウン(MCPSelect)からMCPサーバーを除外し、素早く簡単にアクセスできるようにします。 - デフォルト値:
true(MCPサーバーがチャットエリアのドロップダウンに含まれます)
serverInstructions
-
型: Boolean または String (任意)
-
説明: MCPサーバーの指示がエージェントのコンテキストにどのように注入されるかを制御します。サーバーの指示は、個々のツールの説明を補完し、MCPサーバー全体に対する高レベルな使用ガイダンスを提供します。
-
オプション:
undefined(デフォルト): 指示は含まれませんtrue: サーバーが提供する指示(利用可能な場合)を使用します。包括的なガイダンスを備えた、ドキュメントが整備されたサーバーに最適です。false: 指示を明示的に無効にします。コンテキストトークンの節約や、ツールが自明である場合に便利です。string: カスタム指示を使用します(サーバーから提供された指示を上書きします)。アプリケーション固有のワークフローや、サーバーの指示では不十分な場合に最適です。
-
デフォルト値:
undefined(指示は含まれません) -
注記:
serverInstructionsが設定され、サーバーのツールがエージェントで利用可能な場合、指示は自動的に注入されます。- 複数のサーバーがそれぞれエージェントのコンテキストに指示を提供できます
-
例:
# 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
- 型: Object (オプション、
stdio型のみ) - 説明: プロセスを生成する際に使用する環境変数。
- プレースホルダーのサポート:
{{LIBRECHAT_USER_ID}}: 現在のユーザーのIDに置き換えられます。{{LIBRECHAT_USER_*}}: 動的なユーザーフィールドのプレースホルダー(例:{{LIBRECHAT_USER_EMAIL}})。{{CUSTOM_VARIABLE_NAME}}:customUserVarsで定義された変数に対してユーザーが提供した値に置き換えられます(例:{{MY_API_KEY}})。${ENV_VAR}: サーバー側の環境変数{{ENV_VAR}}の値に置き換えられます。
timeout
- 型: 整数 (オプション)
- 説明: MCPサーバーリクエストのタイムアウト時間(ミリ秒)。0以上の整数である必要があります。
- デフォルト値:
30000(30秒)
initTimeout
- 型: 整数 (オプション)
- 説明: MCPサーバーの初期化におけるタイムアウト時間(ミリ秒単位)。負ではない整数である必要があります。
- デフォルト値:
10000(10秒)
requiresOAuth
- 型: Boolean (オプション、リモートトランスポートのみ:
sse,streamable-http,websocket) - 説明: このサーバーが OAuth 認証を必要とするかどうか。指定がない場合、サーバーの起動時に自動検出されます。オプションですが、サーバーが OAuth を必要とするかどうかがわかっている場合は、この値を明示的に設定することをお勧めします。
- デフォルト値: 指定がない場合は自動検出されます
- 注記:
- リモート(URLベース)トランスポートである
sse、streamable-http、およびwebsocketに適用されます。認証対象のURLを持たないstdioサーバーには影響しません。 - 自動検出はサーバーの起動中に行われるため、初期化時間が増加する可能性があります。
- 明示的な設定を行うことで、検出処理をスキップし、起動パフォーマンスが向上します。
- 静的な
Authorizationヘッダー(例: Bearer APIキー)のみで保護されているサーバーの場合は、requiresOAuth: falseを設定してください。自動検出機能は設定されたヘッダーを使用せずにサーバーをプローブするため、WWW-Authenticate: Bearerチャレンジを伴う401を返すサーバーが、誤ってOAuth保護されていると分類される可能性があります。このフラグはそのプローブをバイパスし、静的ヘッダーが通常通り接続を認証できるようにします。 - 強化された接続管理のために、MCP OAuth環境変数 (
MCP_OAUTH_ON_AUTH_ERROR,MCP_OAUTH_DETECTION_TIMEOUT,MCP_OAUTH_HANDLING_TIMEOUT,MCP_OAUTH_FLOW_TTL) と連携します。
- リモート(URLベース)トランスポートである
stderr
- 型: 文字列または整数 (オプション、
stdio型のみ) - 説明: 子プロセスの
stderrをどのように処理するかを指定します。これは Node.js のchild_process.spawnのセマンティクスと一致します。有効な文字列値は"pipe"、"ignore"、"inherit"です。あるいは、負ではない整数をファイル記述子として使用することもできます。 - デフォルト値:
"inherit"(stderrへのメッセージは親プロセスのstderrに出力されます)。
customUserVars
- 型: Object (オプション)
- 説明: このMCPサーバーに対してユーザーが設定できるカスタム変数を定義します。これにより、管理者は各ユーザーが個別に設定する必要がある変数(例: APIキー、URLなど)を指定できます。これらのユーザーが提供した値は、
headersまたはenv設定で使用できます。customUserVarsを持つサーバーは、アプリレベルの接続から自動的に除外されるため、ユーザーごとの認証情報が実行時に確実に解決されるようになります。 - 構造:
customUserVarsオブジェクトにはキーが含まれており、各キーは変数名(例:MY_API_KEY)を表します。この名前は{{MY_API_KEY}}のようなプレースホルダーで使用されます。- 各変数名は、以下のサブキーを持つオブジェクトです。
title: String (必須) - 設定UIに表示される、変数用のユーザーフレンドリーなタイトル。description: String (Optional) - 変数の説明または指示。ユーザーをガイドするためにUIにも表示されます。このフィールドではHTMLを使用できます(例: リンクを作成する場合<a href="https://example.com" target="_blank">More info</a>)。sensitive: Boolean (オプション) - 値をシークレットとして扱い、UI上でマスクするかどうかを制御します。省略した場合はデフォルトでマスク/シークレットとして扱われます。プロジェクトIDやベースURLなどの非シークレットフィールドにはfalseを設定してください。
headersおよびenvでの使用:customUserVarsで定義された変数は、{{VARIABLE_NAME}}構文を使用して、headers(sseおよびstreamable-httpタイプの場合)またはenv(stdioタイプの場合)セクションで参照できます。- ユーザーはUIを通じてこれらの値を入力します。これらの設定には、以下の2つの方法でアクセスできます。
- アシスタントチャット入力から: アシスタント用にMCPツールを選択する際、ツール選択ドロップダウン内の設定可能なMCPサーバーの横に設定アイコンが表示されます。このアイコンをクリックすると、そのサーバーの認証情報を管理するためのダイアログが開きます。
- 設定パネルから: 右側のパネルにある専用の「MCP Settings」セクションには、カスタム変数を定義可能なすべてのMCPサーバーが一覧表示されます。ユーザーはサーバーをクリックして設定ダイアログを開き、その特定のMCPサーバーの認証情報を設定または更新できます。
- アシスタントチャット入力から: アシスタント用にMCPツールを選択する際、ツール選択ドロップダウン内の設定可能なMCPサーバーの横に設定アイコンが表示されます。このアイコンをクリックすると、そのサーバーの認証情報を管理するためのダイアログが開きます。
- これらのユーザーが提供した値は安全に保存され、個々のユーザーおよび特定のMCPサーバーに関連付けられた上で、実行時に置換されます。
- 例:
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: falseheadersでの使用:headers: X-Auth-Token: '{{MY_SERVICE_API_KEY}}' X-Some-Other-Config: '{{SOME_OTHER_VAR}}'envでの使用方法 (stdioタイプの場合):env: API_KEY: '{{MY_SERVICE_API_KEY}}'
obo
- 型: Object (任意、
sseおよびstreamable-http型でのみ使用) - 説明: MCPサーバーのOAuth 2.0 On-Behalf-Ofトークン交換を設定します。LibreChatは、ログイン中のユーザーのOpenIDアクセストークンを、設定されたスコープを持つ委任されたダウンストリームトークンと交換し、そのトークンを
Authorization: Bearer ...ヘッダーとしてMCPサーバーに転送します。 - 必須のサブキー:
scopes: String - ダウンストリームのトークン交換のために要求される、空ではないスコープ。
- 検証:
oboはsseおよびstreamable-httpMCP サーバーに対してのみ有効です。oboはstdioおよびwebsocketサーバーでは拒否されます。- ユーザーがこのフィールドを設定するには、
MCP_SERVERS.CONFIGURE_OBOロールの権限が必要です。interface.mcpServers.configureOboを使用してシードするか、管理パネルから管理してください。
- 前提条件:
- OpenID認証は、再利用可能なアクセストークンを使用して構成する必要があります。
- IDプロバイダーおよびダウンストリームアプリケーションは、要求された委任スコープを許可する必要があります。
- 例:
mcpServers: enterprise-tools: type: streamable-http url: https://api.example.com/mcp/ obo: scopes: 'api://mcp-server-id/Mcp.Tools.ReadWrite'
関連するトークンの再利用および委任トークンの設定については、OpenID Connect Token Reuse および SharePoint Integration を参照してください。
oauth
- 型: Object (オプション)
- 説明: MCPサーバーで認証を行うためのOAuth2設定です。設定を行うと、ユーザーはMCPサーバーを使用する前にOAuthフローを通じて認証を求められるようになります。クライアントIDとクライアントシークレットが提供されない場合は、動的クライアント登録(DCR)が使用されます。
- 必須のサブキー:
authorization_url: String - OAuth 認可エンドポイントの URLtoken_url: String - OAuth トークン endpoint URLclient_id: String - OAuth クライアント識別子client_secret: String - OAuth クライアントシークレットredirect_uri: String - OAuth リダイレクト URI (例:http://localhost:3080/api/mcp/${serverName}/oauth/callback)scope: String - OAuth スコープ(スペース区切り)
- オプションのサブキー:
grant_types_supported: 文字列の配列 - サポートされている認可タイプ(デフォルトは["authorization_code", "refresh_token"])token_endpoint_auth_methods_supported: 文字列の配列 - サポートされているトークンエンドポイント認証メソッド(デフォルトは["client_secret_basic", "client_secret_post"])token_exchange_method: String - トークン交換リクエストメソッド。OAuthクライアント認証情報をPOSTボディに含めることを期待するプロバイダーにはdefault_postを使用してください。response_types_supported: 文字列の配列 - サポートされているレスポンスタイプ(デフォルトは["code"])code_challenge_methods_supported: 文字列の配列 - サポートされている PKCE コードチャレンジメソッド(デフォルトは["S256", "plain"])skip_code_challenge_check: Boolean - OAuthプロバイダーがPKCEサポートをアドバタイズしているかどうかのチェックをスキップします。S256をサポートしているものの、メタデータ内でそれをアドバタイズしないAWS Cognitoのようなプロバイダーで役立ちます。(デフォルトはfalse)
- 環境変数:
authorization_url、token_url、redirect_uri、revocation_endpointを含む YAML で定義された OAuth URL フィールドでは、${ENV_VAR}参照を使用できます。LibreChat は URL の検証前に環境変数の値を解決します。UI を通じて送信されるユーザー管理の OAuth エンドポイント URL はリテラルの URL である必要があり、${ENV_VAR}プレースホルダーは拒否されます。 - 例:
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
- 型: Object (オプション)
- 説明: OAuthフローのリクエストに特化して使用されるヘッダーです。これらのヘッダーは、動的クライアント登録やトークン交換といったOAuth認証中に使用され、通常のMCPサーバー通信中には送信されません。
- 一般的なユースケース:
Authorization: Bearer ${DCR_API_KEY}のような、動的クライアント登録エンドポイントへの認証の追加。- OAuthフローに必要なカスタムプロバイダー固有のヘッダーを含める
- OAuthトークンエンドポイントで必要なヘッダーの設定
headersとの主な違い:headers: 認証完了後、通常のMCPサーバーリクエストと共に送信されますoauth_headers: OAuth認証フロー中にのみ送信されます
- 例:
oauth_headers: Authorization: "Bearer ${DCR_API_KEY}" X-Custom-Header: "custom_value"
startup
- 型: Boolean (オプション)
- 説明:
falseに設定すると、この MCP サーバーはアプリケーション起動時に接続されません。これは、接続前にユーザーの入力や設定が必要なサーバーや、サーバーの初期化タイミングを制御したい場合に便利です。 - デフォルト値:
true - 例:
mcpServers: my-mcp-server: type: streamable-http url: 'https://api.example.com/mcp/' startup: false
注記
- 型推論:
typeが省略された場合:urlが指定されており、かつhttp://またはhttps://で始まる場合、typeはデフォルトでsseになります。urlが指定されており、かつws://またはwss://で始まる場合、typeはデフォルトでwebsocketになります。commandが指定されている場合、typeはデフォルトでstdioになります。
- 接続タイプ:
stdio: MCPサーバーを子プロセスとして起動し、標準入出力経由で通信します。websocket: WebSocket経由で外部のMCPサーバーに接続します。sse: Server-Sent Events (SSE) を介して外部の MCP サーバーに接続します。streamable-http: ストリーミングレスポンスをサポートし、HTTP経由で外部のMCPサーバーに接続します。
- 内部/ローカルアドレス:
- 重要: 内部IPアドレス(例:
172.24.1.165、192.168.1.100)やローカルドメイン(例:mcp-server、host.docker.internal)を使用するMCPサーバーは、明示的に許可する必要があります。パブリックな宛先へのアクセスを維持しつつ特定のプライベートなホスト:ポートサービスを許可したい場合はmcpSettings.allowedAddressesを使用し、厳格なホワイトリストを作成したい場合はmcpSettings.allowedDomainsを使用してください。 - 設定の詳細については、MCP Settings を参照してください。
- 重要: 内部IPアドレス(例:
例
内部アドレスを使用した設定
内部/ローカルのMCPサーバーを使用しており、厳格なドメインホワイトリストが不要な場合は、mcpSettings.allowedAddresses に正確なホストとポートを設定してください:
# 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 Server
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 Server
everything:
url: http://localhost:3001/sse
headers:
X-User-ID: '{{LIBRECHAT_USER_ID}}'
X-API-Key: '${SOME_API_KEY}'websocket MCP Server
myWebSocketServer:
url: ws://localhost:8080streamable-http MCP Server
streamable-http-server:
type: streamable-http
url: https://example.com/api/
headers:
X-User-ID: '{{LIBRECHAT_USER_ID}}'
X-API-Key: '${SOME_API_KEY}'動的ユーザーフィールドを持つMCP Server
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 を使用したユーザーごとの認証情報を持つ 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 input注意 UIベースのサーバー初期化に関する詳細については、MCP Server Initialization を参照してください。
カスタムアイコン付きの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認証を使用する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'サーバー指示付きの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 対応 MCP Server (レガシーな 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関連する環境変数 (オプション):
# 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サーバー設定のインポート
mcpServers 設定により、LibreChat はさまざまな MCP サーバーと動的に対話できるようになります。これにより、アプリケーション内で専門的なタスクを実行したり、特定の機能を提供したりすることが可能になります。このモジュール式のアプローチにより、サーバー設定を追加または変更するだけで、アプリケーションの機能を簡単に拡張できます。
追加情報
- デフォルトの動作:
- 初期化は起動時に行われるため、変更を反映させるにはアプリを再起動する必要があります。
urlとcommandの両方が指定されている場合、曖昧さを避けるためにtypeを明示的に定義する必要があります。
- マルチユーザーサポート:
- MCPManagerは、ユーザーレベルおよびアプリレベルの個別の接続をサポートするようになり、ユーザーごとに適切な接続管理が可能になりました。
- ユーザー接続は個別に追跡および管理され、適切な確立とクリーンアップが行われます。
- ヘッダー、URL、および環境変数で動的なユーザーフィールドプレースホルダーを使用します:
{{LIBRECHAT_USER_ID}}- ユーザーの一意の識別子{{LIBRECHAT_USER_EMAIL}}- ユーザーのメールアドレス{{LIBRECHAT_USER_USERNAME}}- ユーザーのユーザー名{{LIBRECHAT_USER_ROLE}}- ユーザーのロール(例: "user", "admin")- その他多数のフィールド(完全なリストについてはヘッダーのセクションを参照してください)
- ユーザーアイドル管理:
- ユーザー接続はアクティビティが監視されており、15分間操作がないと切断されます。
- 環境変数:
env内(stdioタイプの場合): MCP サーバープロセスに必要な特定のランタイム環境や設定を構築する際に役立ちます。headers内(sseおよびstreamable-httpタイプの場合):${ENV_VAR}構文を使用して、ヘッダー値内の環境変数を参照します。
- 動的ユーザーフィールド:
- ユーザーフィールドのプレースホルダーは、実行時に認証されたユーザーの情報に置き換えられます。
- 機密性の低いフィールドのみが利用可能です(パスワードやその他の機密データは除外されます)
- 欠落しているフィールドは空文字列にデフォルト設定されます
- Boolean フィールドは文字列形式 ("true" または "false") に変換されます。
- エラーハンドリング (
stderr):stderrを設定することで、MCP サーバープロセスからのエラーメッセージの処理方法を管理できます。デフォルトの"inherit"は、エラーが親プロセスのstderrに出力されることを意味します。
- サーバー指示:
- MCPサーバーのツールが使用される際、指示は自動的にエージェントのシステムメッセージに注入されます。
- カスタム指示(文字列値)は、サーバーから提供される指示よりも優先されます。
- 複数のMCPサーバーが、それぞれ独自の指示をエージェントのコンテキストに追加できます。
- Instructionsは、対応するMCPサーバーのツールが実際にエージェントに対して利用可能な場合にのみ含まれます。
- OAuth 認証:
- MCPサーバーとの安全な認証のために、OAuth2フローがサポートされています。
- MCPサーバーを使用する前に、ユーザーはOAuth経由で認証を行うよう求められます。
参照
librechat.yaml 内の mcpServers を適切に設定することで、LibreChat の機能を拡張し、カスタムツールやサービスをシームレスに統合できます。
このガイドはいかがでしたか?