mcpField
M
MCP Client Using LangChain / TypeScript

MCP Client Using LangChain / TypeScript

github.com/hideyaフレームワーク・SDK1310 週間前に更新

MCP Client Using LangChain / TypeScript について

LangChainエージェントを使ってMCPサーバーをテスト、探索するTypeScript製コマンドラインクライアントです。ローカルとリモートのサーバーに接続でき、LLM向けにツールスキーマを変換します。

主な機能

  1. 01ローカル・リモートMCPサーバー接続
  2. 02ツールスキーマの自動変換
  3. 03JSON5設定と環境変数
  4. 04複数のLLMプロバイダー
  5. 05サーバーログと対話型クエリ

活用シーン

  1. 01MCPサーバーのツールを調査
  2. 02ローカル・リモートサーバーをテスト
  3. 03MCP連携をプロトタイプ

MCP 対応

ローカルおよびリモートのMCPサーバーに接続し、ツールを利用します。ツールのテキスト結果に対応しますが、MCPのリソース、プロンプト、サンプリングには対応していません。

詳細

MCP サーバーを探索するためのシンプルな MCP クライアント License: MIT npm version

コマンドラインから MCP サーバーをすばやくテストして探索できます!

プロジェクトの状況

このユーティリティは @h1deya/langchain-mcp-tools をベースにしており、現在 MCP Protocol バージョン 2025-03-26 をサポートしています。

MCP の 2026-07-28 仕様はサポートしていません。

はじめに

LangChain と TypeScript で構築された、Model Context Protocol (MCP) サーバー向けのシンプルなテキストベースの CLI クライアントです。
このツールは LLM との互換性のためにスキーマを自動調整します。これにより、一部の MCP サーバーで発生する問題が解消され、正常に実行できる場合があります。
MCP サーバーのテストや機能の探索、統合のプロトタイピングに適しています。

内部では LangChain Agent と @h1deya/langchain-mcp-tools のユーティリティ関数 convertMcpToLangchainTools() を使用しています。 この関数は、前述の MCP ツールスキーマ変換を実行し、LLM との互換性を確保します。 詳しくはこちらのページ をご覧ください。

このユーティリティに相当する Python 版はこちらから利用できます。

前提条件

クイックスタート

  • mcp-client-cli ツールをインストールします。 完了まで数分かかる場合があります:

    npm install -g @h1deya/mcp-client-cli
    
  • 設定ファイル llm_mcp_config.json5 を使って、LLM と MCP サーバーの設定を行います

    code llm_mcp_config.json5
    

    以下は、すぐにテストするためのシンプルな設定です:

    {
      "llm": {
        "provider": "openai",       "model": "gpt-5.4-mini"
        // "provider": "anthropic",    "model": "claude-haiku-4-5"
        // "provider": "google_genai", "model": "gemini-2.5-flash"
        // "provider": "xai",          "model": "grok-4-1-fast-non-reasoning"
        // "provider": "cerebras",     "model": "gpt-oss-120b"
        // "provider": "groq",         "model": "openai/gpt-oss-20b"
      },
    
      "mcp_servers": {
        "us-weather": {  // US weather only
          "command": "npx",
          "args": ["-y", "@h1deya/mcp-server-weather"]
        },
      },
    
      "example_queries": [
        "Tell me how LLMs work in a few sentences",
        "Are there any weather alerts in California?",
      ],
    }
    
  • API キーを設定します

    echo "ANTHROPIC_API_KEY=sk-ant-...
    OPENAI_API_KEY=sk-proj-...
    GOOGLE_API_KEY=AI...
    XAI_API_KEY=xai-...
    CEREBRAS_API_KEY=csk-...
    GROQ_API_KEY=gsk_..." > .env
    
    code .env
    
  • ツールを実行します

    mcp-client-cli
    

    デフォルトでは、カレントディレクトリにある設定ファイル llm_mcp_config.json5 を読み込みます。
    次に、.env ファイルで指定された環境変数と、すでに定義されている環境変数を適用します。

機能

  • 簡単なセットアップ:一般的な MCP サーバーですぐに利用できます
  • 柔軟な設定:環境変数に対応した JSON5 設定
  • 複数の LLM プロバイダー:OpenAI、Anthropic、Google(GenAI)
  • スキーマ互換性のサポート:LLM との互換性のためにツールスキーマを自動調整します。これにより、一部の MCP サーバーで発生する問題が解消され、正常に実行できる場合があります。
    詳しくはこちらのページ をご覧ください。
    スキーマ変換を無効にするには、設定ファイルのトップレベルに "schema_transformations": false, を追加します。
  • コマンドと URL サーバー:ローカルとリモートの両方の MCP サーバーに対応します。
    OAuth を使ってリモートサーバーに接続するには mcp-remote を使用します(下記の設定例の末尾を参照)。
  • リアルタイムログ:ディレクトリをカスタマイズできる、stdio MCP サーバーのライブログ
  • 対話型テスト:繰り返しテストする際に便利なクエリ例

制限事項

  • ツールの戻り値の型:現在、ツール呼び出しでサポートされているのはテキストの結果のみです。 内部では LangChain の response_format: 'content'(デフォルト)を使用しており、テキスト文字列のみをサポートしています。 MCP ツールは複数のコンテンツタイプ(テキスト、画像など)を返せますが、このライブラリでは現在、テキストコンテンツのみをフィルタリングして使用します。
  • MCP の機能:MCP の ツールのみをサポートしています。リソース、プロンプト、サンプリングなど、その他の MCP 機能は実装されていません。

使い方

基本的な使い方
mcp-client-cli

デフォルトでは、現在のディレクトリから設定ファイル llm_mcp_config.json5 を読み込みます。
次に、.env ファイルで指定されている環境変数と、すでに定義されている環境変数を適用します。
ローカル MCP サーバーのログは現在のディレクトリに出力されます。

オプションを指定する場合
# Specify the config file to use
mcp-client-cli --config my-config.json5

# Store local (stdio) MCP server logs in specific directory
mcp-client-cli --log-dir ./logs

# Enable verbose logging
mcp-client-cli --verbose

# Show help
mcp-client-cli --help

対応 LLM プロバイダー

  • OpenAI:gpt-5.4-mini、gpt-5.2 など
  • Anthropic:claude-sonnet-4-6、claude-haiku-4-5 など
  • Google (GenAI):gemini-3.1-flash-lite-preview、gemini-2.5-flash など
  • xAI:grok-4-1-fast-non-reasoning、grok-3-mini など
  • Cerebras:gpt-oss-120b など
  • Groq:openai/gpt-oss-20b、openai/gpt-oss-120b など

設定

llm_mcp_config.json5 ファイルを作成します。

  • MCP サーバーの設定ファイル形式は、Claude for Desktopと同じ構造に従います。ただし、JSON 設定ファイルで一般的に使われる snake_case の規則に合わせて、キー名 mcpServers を mcp_servers に変更しています。
  • ファイル形式は JSON5 で、コメントと末尾のカンマを使用できます。
  • さらに、${...} 表記を対応する環境変数の値に置き換えるよう、形式を拡張しています。
  • 認証情報や個人情報はすべて .env ファイルに保存し、必要に応じて ${...} 表記で参照してください。
{
  "llm": {
    "provider": "openai",       "model": "gpt-5.4-mini"
    // "provider": "anthropic",    "model": "claude-haiku-4-5"
    // "provider": "google_genai", "model": "gemini-2.5-flash"
    // "provider": "xai",          "model": "grok-4-1-fast-non-reasoning"
    // "provider": "cerebras",     "model": "gpt-oss-120b"
    // "provider": "groq",         "model": "openai/gpt-oss-20b"
  },

  // To disable the automatic schema transformations, uncomment the following line.
  // See this for details about the schema transformations:
  //   https://github.com/hideya/langchain-mcp-tools-ts/blob/main/README.md#llm-provider-schema-compatibility
  //
  // "schema_transformations": false,

  "example_queries": [
    "Read and briefly summarize the llm_mcp_config.json5 file in the current directory",
    "Fetch the raw HTML content from bbc.com and tell me the titile",
    // "Search for 'news in California' and show the first hit",
    // "Tell me about my authenticated GitHub profile",
    // "Tell me about my authenticated Notion account",
  ],

  "mcp_servers": {
    // Local MCP server that uses `npx`
    // https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "."  // path to a directory to allow access to
      ]
    },

    // Local MCP server that uses `uvx`
    // https://pypi.org/project/mcp-server-fetch/
    "fetch": {
      "command": "uvx",
      "args": [
        "mcp-server-fetch"
      ]
    },

    // Embedding the value of an environment variable
    // https://www.npmjs.com/package/@modelcontextprotocol/server-brave-search
    "brave-search": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-brave-search"
      ],
      "env": {
        "BRAVE_API_KEY": "${BRAVE_API_KEY}"
      }
    },

    // Example of remote MCP server authentication via Authorization header
    // https://github.com/github/github-mcp-server?tab=readme-ov-file#remote-github-mcp-server
    "github": {
      // To avoid auto protocol fallback, specify the protocol explicitly when using authentication
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
      }
    },

    // For remote MCP servers that require OAuth, consider using "mcp-remote"
    "notion": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.notion.com/mcp"],
    },
  }
}
環境変数

API キー用の .env ファイルを作成します。

OPENAI_API_KEY=sk-ant-...
ANTHROPIC_API_KEY=sk-proj-...
GOOGLE_API_KEY=AI...
CEREBRAS_API_KEY=csk-...
GROQ_API_KEY=gsk_...

# Other services as needed
GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_...
BRAVE_API_KEY=BSA...

試してみたい人気の MCP サーバー

すでに利用できる便利な MCP サーバーが数多くあります。

トラブルシューティング

  • 設定ファイルと .env ファイルが正しいことを確認してください。特に API キーのつづりを確認してください。
  • ローカル MCP サーバーのログを確認してください。
  • --verbose フラグを使うと、詳細なログを確認できます。
  • MCP ドキュメントのデバッグセクションを参照してください。

ソースからビルドする

詳しくは README_DEV.md を参照してください。

変更履歴

こちらをご覧ください。

ライセンス

MIT License の詳細は LICENSE ファイルを参照してください。

コントリビューション

課題の報告やプルリクエストを歓迎します!
特に、LLM モデルの最新バージョンや特定の MCP サーバーに関する問題があれば、ぜひ共有してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。