Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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>

キー:

KeyTypeDescriptionExample
<serverName>Object`mcpServers` 配下の各キーは、一意の名前で識別される個別の MCP サーバー設定を表します。この名前は、アプリケーション内でサーバー設定を参照するために使用されます。

サブキー

KeyTypeDescriptionExample
titleString(オプション)UI上のMCPサーバーのカスタム表示名。指定がない場合は、サーバーのキー名が使用されます。title: "My Custom Server"
descriptionString(オプション)MCPサーバーの説明。ユーザーがその目的を理解できるようUIに表示されます。description: "Provides file system access"
typeStringMCPサーバーへの接続タイプを指定します。有効なオプションは `"stdio"`、`"websocket"`、`"streamable-http"`、または `"sse"` です。省略した場合、`url` または `command` の有無と形式に基づいてデフォルト値が設定されます。type: "stdio"
commandString(`stdio`タイプの場合)MCPサーバーを起動するために実行するコマンドまたは実行ファイル。command: "npx"
argsArray of Strings(`stdio`タイプの場合)`command`に渡すコマンドライン引数。args: ["-y", "@modelcontextprotocol/server-puppeteer"]
urlString(`websocket`、`streamable-http`、または `sse` タイプの場合)MCPサーバーに接続するためのURL。url: "http://localhost:3001/sse"
proxyString(オプション、`sse` および `streamable-http` タイプ用)このリモート MCP サーバーの送信プロキシ URL。`http://`、`https://`、`socks://`、および `socks5://` URL をサポートします。proxy: "${MCP_PROXY_URL}"
headersObject(オプション、`sse` および `streamable-http` タイプ用)リクエストと共に送信するカスタムヘッダー。`{{LIBRECHAT_USER_*}}` プレースホルダーを使用した動的なユーザーフィールドの置換、および `${ENV_VAR}` を使用した環境変数をサポートしています。headers: X-User-ID: "{{LIBRECHAT_USER_ID}}" X-API-Key: "${SOME_API_KEY}"
apiKeyObject(オプション、`sse` および `streamable-http` タイプ用)MCPサーバーのAPIキー認証設定。See apiKey section below
iconPathString(オプション)ツール選択ダイアログに表示されるツールのアイコンを定義します。iconPath: "/path/to/icon.svg"
chatMenuBoolean(オプション)`false` に設定すると、チャットエリアのドロップダウン(MCPSelect)からMCPサーバーを除外し、素早く簡単にアクセスできるようにします。デフォルトは `true` です。chatMenu: false
serverInstructionsBoolean or String(オプション)MCPサーバーの指示をエージェントのコンテキストに注入する方法を制御します。サーバーの指示はMCPサーバー全体に対する高レベルな使用ガイダンスを提供し、個々のツール説明を補完します。serverInstructions: true # or serverInstructions: "Custom instructions"
timeoutInteger(オプション)MCPサーバーリクエストのタイムアウト時間(ミリ秒)。0以上の整数である必要があります。timeout: 30000
initTimeoutInteger(オプション)MCPサーバーの初期化タイムアウト(ミリ秒)。0以上の整数である必要があります。initTimeout: 10000
envObject(オプション、`stdio`タイプのみ)プロセスを起動する際に使用する環境変数。env: NODE_ENV: "production"
requiresOAuthBoolean(オプション、リモートトランスポート: `sse`、`streamable-http`、`websocket`)このサーバーがOAuth認証を必要とするかどうか。指定がない場合、サーバー起動時に自動検出されます。オプションですが、サーバーがOAuthを必要とするかどうかがわかっている場合は、この値を明示的に設定することをお勧めします。`requiresOAuth: false` の設定は、静的な `Authorization` ヘッダーで保護されたサーバーにおいて、誤ってOAuth保護されていると判定される自動検出をスキップするために役立ちます。requiresOAuth: false
stderrString or Integer(オプション、`stdio`タイプのみ)子プロセスの `stderr` を処理する方法。オプション: `"pipe"`、`"ignore"`、`"inherit"`、または非負の整数(ファイル記述子)。デフォルトは `"inherit"` です。stderr: "inherit"
customUserVarsObject(オプション)このMCPサーバーに対してユーザーが設定可能なカスタム変数を定義します。これにより、ユーザーごとの認証情報や設定(例:APIキー)が可能になります。これらの変数は、`headers` または `env` フィールドで参照できます。customUserVars: API_KEY: title: "API Key" description: "Your personal API key."
oauthObject(オプション)MCPサーバーでの認証のためのOAuth2設定。設定すると、ユーザーはOAuthフローを通じて認証を求められるようになります。oauth: authorization_url: "https://example.com/oauth/authorize" token_url: "https://example.com/oauth/token"
oauth_headersObject(オプション)OAuthフローのリクエスト(動的クライアント登録やトークン交換など)でのみ使用されるヘッダー名と値のマップ。oauth_headers: Authorization: "Bearer ${DCR_API_KEY}" X-Custom-Header: "custom_value"
oboObject(オプション、`sse` および `streamable-http` タイプ用)On-Behalf-Of トークン交換設定。現在のユーザーの OpenID アクセストークンを委任されたダウンストリームトークンと交換し、Bearer トークンとして転送します。obo: scopes: "api://mcp-server-id/Mcp.Tools.ReadWrite"
startupBoolean(オプション)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
  • 説明: (websocketstreamable-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で定義されたサーバー用のリクエストボディプレースホルダー。現在の conversationIdparentMessageId、または messageId などに使用されます。
    • {{CUSTOM_VARIABLE_NAME}}: customUserVars で定義された変数に対してユーザーが提供した値に置き換えられます(例: {{MY_API_KEY}})。
    • ${ENV_VAR}: 環境変数 {{ENV_VAR}} の値に置き換えられます。

利用可能なユーザーフィールドのプレースホルダー:

プレースホルダーユーザーフィールド説明
{{LIBRECHAT_USER_NAME}}nameStringユーザーの表示名
{{LIBRECHAT_USER_USERNAME}}usernameStringユーザーのユーザー名
{{LIBRECHAT_USER_EMAIL}}emailStringユーザーのメールアドレス
{{LIBRECHAT_USER_PROVIDER}}providerString認証プロバイダー (例: "email", "google", "github")
{{LIBRECHAT_USER_ROLE}}roleStringユーザーのロール (例: "user", "admin")
{{LIBRECHAT_USER_GOOGLEID}}googleIdStringGoogleアカウントID
{{LIBRECHAT_USER_FACEBOOKID}}facebookIdStringFacebookアカウントID
{{LIBRECHAT_USER_OPENIDID}}openidIdStringOpenIDアカウントID
{{LIBRECHAT_USER_SAMLID}}samlIdStringSAMLアカウントID
{{LIBRECHAT_USER_LDAPID}}ldapIdStringLDAPアカウントID
{{LIBRECHAT_USER_GITHUBID}}githubIdStringGitHubアカウントID
{{LIBRECHAT_USER_DISCORDID}}discordIdStringDiscordアカウントID
{{LIBRECHAT_USER_APPLEID}}appleIdStringAppleアカウントID
{{LIBRECHAT_USER_EMAILVERIFIED}}emailVerifiedBoolean → Stringメール認証ステータス ("true" または "false")
{{LIBRECHAT_USER_TWOFACTORENABLED}}twoFactorEnabledBoolean → String2FAステータス ("true" または "false")
{{LIBRECHAT_USER_TERMSACCEPTED}}termsAcceptedBoolean → 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ベース)トランスポートである ssestreamable-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) と連携します。

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}} 構文を使用して、headerssse および streamable-http タイプの場合)または envstdio タイプの場合)セクションで参照できます。
    • ユーザーはUIを通じてこれらの値を入力します。これらの設定には、以下の2つの方法でアクセスできます。
      • アシスタントチャット入力から: アシスタント用にMCPツールを選択する際、ツール選択ドロップダウン内の設定可能なMCPサーバーの横に設定アイコンが表示されます。このアイコンをクリックすると、そのサーバーの認証情報を管理するためのダイアログが開きます。 MCPユーザー別変数設定 - アシスタントアクセス MCPユーザー別変数設定 - アシスタントアクセスダイアログ
      • 設定パネルから: 右側のパネルにある専用の「MCP Settings」セクションには、カスタム変数を定義可能なすべての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: false
    headers での使用:
    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 - ダウンストリームのトークン交換のために要求される、空ではないスコープ。
  • 検証:
    • obosse および streamable-http MCP サーバーに対してのみ有効です。
    • obostdio および 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 認可エンドポイントの URL
    • token_url: String - OAuth トークン endpoint URL
    • client_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_urltoken_urlredirect_urirevocation_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.165192.168.1.100)やローカルドメイン(例: mcp-serverhost.docker.internal)を使用するMCPサーバーは、明示的に許可する必要があります。パブリックな宛先へのアクセスを維持しつつ特定のプライベートなホスト:ポートサービスを許可したい場合は mcpSettings.allowedAddresses を使用し、厳格なホワイトリストを作成したい場合は mcpSettings.allowedDomains を使用してください。
    • 設定の詳細については、MCP Settings を参照してください。

内部アドレスを使用した設定

内部/ローカルの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: 120000

stdio 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: inherit

sse 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:8080

streamable-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 dropdown

OAuth認証を使用する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 troubleshooting

OAuth 対応 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_here

MCPサーバー設定のインポート

mcpServers 設定により、LibreChat はさまざまな MCP サーバーと動的に対話できるようになります。これにより、アプリケーション内で専門的なタスクを実行したり、特定の機能を提供したりすることが可能になります。このモジュール式のアプローチにより、サーバー設定を追加または変更するだけで、アプリケーションの機能を簡単に拡張できます。


追加情報

  • デフォルトの動作:
    • 初期化は起動時に行われるため、変更を反映させるにはアプリを再起動する必要があります。
    • urlcommand の両方が指定されている場合、曖昧さを避けるために 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 の機能を拡張し、カスタムツールやサービスをシームレスに統合できます。

このガイドはいかがでしたか?