mcpField
S
Simple CLI MCP Client Using LangChain / Python

Simple CLI MCP Client Using LangChain / Python

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

Simple CLI MCP Client Using LangChain / Python について

LangChainエージェントを使ってMCPサーバーをテスト、探索するPython製コマンドラインクライアントです。ローカルとリモートのサーバーに接続し、LangChain経由でMCPツールを利用できます。

主な機能

  1. 01ローカル・リモートMCPサーバー接続
  2. 02JSON5設定と環境変数
  3. 03複数のLLMプロバイダー
  4. 04保存先を指定できるローカルサーバーログ
  5. 05対話型の例示クエリ

活用シーン

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

MCP 対応

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

詳細

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

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

プロジェクトのステータス

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

MCP の2026-07-28仕様には対応していません。

はじめに

LangChain と Python で構築された、Model Context Protocol(MCP)サーバー向けのシンプルなテキストベースの CLI クライアントです。
MCP サーバーのテストや機能の探索、連携のプロトタイプ作成に適しています。

内部ではLangChain Agentと、 langchain_mcp_toolsのユーティリティ関数convert_mcp_to_langchain_tools()を使用しています。

このユーティリティの TypeScript 版はこちらから利用できます。

前提条件

クイックスタート

  • mcp-chatツールをインストールします。 完了まで数分かかることがあります:

    pip install mcp-chat
    
  • 設定ファイル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-chat
    

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

機能

  • 簡単なセットアップ:一般的な MCP サーバーですぐに使えます
  • 柔軟な設定:環境変数に対応した JSON5 設定
  • 複数の LLM/API プロバイダー:OpenAI、Anthropic、Google(GenAI)、xAI、Ceberas、Groq
  • コマンドおよび URL サーバー:ローカルとリモートの両方の MCP サーバーに対応
  • ローカル MCP サーバーのログ記録:ログディレクトリをカスタマイズして、stdio MCP サーバーのログを保存
  • インタラクティブなテスト:繰り返しテストに便利なクエリ例

制限事項

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

使い方

基本的な使い方
mcp-chat

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

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

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

# Enable verbose logging
mcp-chat --verbose

# Show help
mcp-chat --help

対応しているモデル/API プロバイダー

  • 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"
  },

  "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...
XAI_API_KEY=xai-...
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 ファイルを参照してください。

コントリビューション

問題の報告やプルリクエストを歓迎します!
特に、最新バージョンの LLM モデルや特定の MCP サーバーに関する問題をぜひ共有してください。
このツールは、MCP サーバーのテストをできるだけ簡単にすることを目指しています。

コメント

MCP は初めてですか?

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

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