mcpField
M
MCPHost 🤖

MCPHost 🤖

github.com/dictybase-dockerフレームワーク・SDK082 週間前に更新

MCPHost 🤖 について

Go で実装された CLI ホストアプリケーションで、大規模言語モデルが MCP を通じて外部ツールと対話できるようにします。Claude 3.5 Sonnet と Ollama モデルに対応し、MCP サーバー接続を管理します。

主な機能

  1. 01Claude と Ollama モデル対応
  2. 02複数 MCP サーバー管理
  3. 03動的ツール発見
  4. 04インタラクティブなチャットインターフェース
  5. 05設定可能なメッセージ履歴ウィンドウ

活用シーン

  1. 01ローカル LLM とツール統合
  2. 02複数 MCP サーバー統合管理
  3. 03モデルによるツール呼び出し
  4. 04MCP サーバー開発とテスト

MCP 対応

MCPHost は MCP ホストとして機能し、複数の MCP サーバーへの接続を管理し、モデルがこれらのサーバーが公開するツールとリソースを検出して呼び出せるようにします。

詳細

MCPHost 🤖

Large Language Models (LLMs) が Model Context Protocol (MCP) を通じて外部ツールと相互作用できるようにする CLI ホストアプリケーションです。現在は Claude 3.5 Sonnet と Ollama モデルの両方をサポートしています。

概要 🌟

MCPHost は MCP クライアント・サーバーアーキテクチャ内のホストとして動作します:

  • ホスト (MCPHost のような) は接続と相互作用を管理する LLM アプリケーションです
  • クライアント は MCP サーバーとの 1:1 接続を維持します
  • サーバー は LLM にコンテキスト、ツール、機能を提供します

このアーキテクチャにより、言語モデルは:

  • 外部ツールとデータソースにアクセス可能 🛠️
  • 相互作用全体で一貫したコンテキストを保持 🔄
  • コマンドを実行し、安全に情報を取得 🔒

現在サポート:

  • Claude 3.5 Sonnet (claude-3-5-sonnet-20240620)
  • 関数呼び出しに対応した任意の Ollama 互換モデル

機能 ✨

  • Claude 3.5 Sonnet または Ollama モデルとの対話的な会話
  • 複数の同時 MCP サーバーのサポート
  • 動的ツール検出と統合
  • 両方のモデルタイプのツール呼び出し機能
  • 構成可能な MCP サーバーの場所と引数
  • モデルタイプ全体での一貫したコマンドインターフェース
  • コンテキスト管理用の構成可能なメッセージ履歴ウィンドウ

必要な環境 📋

  • Go 1.23 以降
  • Claude の場合: Anthropic API キー
  • Ollama の場合: 必要なモデルがインストールされたローカル Ollama
  • 1 つ以上の MCP 互換ツールサーバー

環境セットアップ 🔧

  1. Anthropic API キー (Claude の場合):
export ANTHROPIC_API_KEY='your-api-key'
  1. Ollama セットアップ:
ollama pull mistral
  • Ollama が実行中であることを確認:
ollama serve

インストール 📦

go install github.com/mark3labs/mcphost@latest

設定 ⚙️

MCPHost は設定ファイルを ~/.mcp.json に自動作成します (存在しない場合)。--config フラグを使用してカスタムロケーションを指定することもできます:

{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/tmp/foo.db"
      ]
    },
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/tmp"
      ]
    }
  }
}

各 MCP サーバーエントリには以下が必要です:

  • command: 実行するコマンド (uvx、npx など)
  • args: コマンドの引数配列:
    • SQLite サーバーの場合: mcp-server-sqlite とデータベースパス
    • ファイルシステムサーバーの場合: @modelcontextprotocol/server-filesystem とディレクトリパス

使用法 🚀

MCPHost は統一されたインターフェースを通じて様々な AI モデルと相互作用できるコマンドラインツールです。MCP サーバーを通じて様々なツールをサポートしています。

利用可能なモデル

モデルは --model (-m) フラグを使用して指定できます:

  • Anthropic Claude (デフォルト): anthropic:claude-3-5-sonnet-latest
  • OpenAI: openai:gpt-4
  • Ollama モデル: ollama:modelname
例
# Use Ollama with Qwen model
mcphost -m ollama:qwen2.5:3b

# Use OpenAI's GPT-4
mcphost -m openai:gpt-4
フラグ
  • --anthropic-url string: Anthropic API のベース URL (デフォルト: api.anthropic.com)
  • --anthropic-api-key string: Anthropic API キー (ANTHROPIC_API_KEY 環境変数でも設定可能)
  • --config string: 設定ファイルロケーション (デフォルト: $HOME/mcp.json)
  • --debug: デバッグロギングを有効化
  • --message-window int: コンテキストに保持するメッセージ数 (デフォルト: 10)
  • -m, --model string: 使用するモデル (形式: provider:model) (デフォルト "anthropic:claude-3-5-sonnet-latest")
  • --openai-url string: OpenAI API のベース URL (デフォルト: api.openai.com)
  • --openai-api-key string: OpenAI API キー (OPENAI_API_KEY 環境変数でも設定可能)
インタラクティブコマンド

チャット中に以下を使用できます:

  • /help: 利用可能なコマンドを表示
  • /tools: 利用可能なすべてのツールをリスト表示
  • /servers: 構成された MCP サーバーをリスト表示
  • /history: 会話履歴を表示
  • /quit: アプリケーションを終了
  • Ctrl+C: いつでも終了
グローバルフラグ
  • --config: カスタム設定ファイルロケーションを指定
  • --message-window: コンテキストに保持するメッセージ数を設定 (デフォルト: 10)

MCP サーバー互換性 🔌

MCPHost は MCP 準拠の任意のサーバーで動作します。例と参考実装については MCP Servers Repository を参照してください。

貢献 🤝

貢献を歓迎します!以下のことをお気軽にどうぞ:

  • 問題を通じてバグレポートや機能リクエストを送信する
  • 改善のためのプルリクエストを作成する
  • カスタム MCP サーバーを共有する
  • ドキュメントを改善する

貢献の際は、適切なコーディング慣行に従い、適切なテストを含めることをお願いします。

ライセンス 📄

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルをご覧ください。

謝辞 🙏

  • Claude と MCP 仕様を提供してくれた Anthropic チームに感謝します
  • ローカル LLM ランタイムを提供してくれた Ollama チームに感謝します
  • このツールの改善に協力してくれたすべてのコントリビューターに感謝します

コメント

MCP は初めてですか?

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

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