MCP Client Using LangChain / TypeScript について
LangChainエージェントを使ってMCPサーバーをテスト、探索するTypeScript製コマンドラインクライアントです。ローカルとリモートのサーバーに接続でき、LLM向けにツールスキーマを変換します。
主な機能
- 01ローカル・リモートMCPサーバー接続
- 02ツールスキーマの自動変換
- 03JSON5設定と環境変数
- 04複数のLLMプロバイダー
- 05サーバーログと対話型クエリ
活用シーン
- 01MCPサーバーのツールを調査
- 02ローカル・リモートサーバーをテスト
- 03MCP連携をプロトタイプ
MCP 対応
ローカルおよびリモートのMCPサーバーに接続し、ツールを利用します。ツールのテキスト結果に対応しますが、MCPのリソース、プロンプト、サンプリングには対応していません。
詳細
MCP サーバーを探索するためのシンプルな MCP クライアント

コマンドラインから 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 版はこちらから利用できます。
前提条件
- Node.js 18+
- [任意] Node.js パッケージベースのローカル MCP サーバーを実行するための
npm 7+ (
npx) - [任意] Python ベースのローカル(stdio)MCP サーバーを実行するためにインストールされた
uv(uvx) - 必要に応じて、以下の OpenAI、 Anthropic、 Google AI Studio(GenAI/Gemini 用)、 xAI、 Cerebras、 および/または Groqの LLM API キー
クイックスタート
-
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 サーバーに関する問題があれば、ぜひ共有してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。