🚀 MCP AI Hub
Model Context Protocol (MCP)サーバーで、LiteLMを通じてさまざまなAIプロバイダーへの統一アクセスを提供します。OpenAI、Anthropicなど100以上のAIモデルと、単一の一貫したインターフェイスで会話できます。
🚀 クイックスタート
1. インストール
好みのインストール方法を選んでください:
pip install mcp-ai-hub
uv tool install mcp-ai-hub
pip install git+https://github.com/your-username/mcp-ai-hub.git
インストールに関する注意事項:
uv は高速なPythonパッケージインストーラーとリゾルバーです。
- このパッケージはPython 3.10以上が必要です。
- すべての依存関係は自動的に解決され、インストールされます。
2. 設定
APIキーとモデルの設定を含む設定ファイルを ~/.ai_hub.yaml に作成します:
model_list:
- model_name: gpt-4
litellm_params:
model: openai/gpt-4
api_key: "sk-your-openai-api-key-here"
max_tokens: 2048
temperature: 0.7
- model_name: claude-sonnet
litellm_params:
model: anthropic/claude-3-5-sonnet-20241022
api_key: "sk-ant-your-anthropic-api-key-here"
max_tokens: 4096
temperature: 0.7
設定ガイドライン:
- APIキー:プレースホルダーキーを実際のAPIキーに置き換えてください。
- モデル名:覚えやすい説明的な名前を使用してください(例:
gpt-4、claude-sonnet)。
- LiteLMモデル:LiteLMのプロバイダー/モデル形式を使用してください(例:
openai/gpt-4、anthropic/claude-3-5-sonnet-20241022)。
- パラメーター:
max_tokens、temperature など、LiteLMがサポートするパラメーターを設定してください。
- セキュリティ:適切なファイルパーミッション(chmod 600)で設定ファイルを安全に保管してください。
3. Claude Desktopに接続
Claude Desktopの設定ファイルを編集して、MCP AI Hubを使用するように設定します:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ai-hub": {
"command": "mcp-ai-hub"
}
}
}
4. Claude Codeに接続
claude mcp add -s user ai-hub mcp-ai-hub
✨ 主な機能
MCP AI Hubは、MCPクライアント(Claude Desktop/Codeなど)と複数のAIプロバイダーの間の架け橋として機能します。LiteLMの統一APIを活用して、各プロバイダーに個別の統合を必要とせずに、100以上のAIモデルにシームレスにアクセスできます。
主な利点:
- 統一インターフェイス:すべてのAIプロバイダーに対して単一のAPI
- 100以上のプロバイダー:OpenAI、Anthropic、Google、Azure、AWS Bedrockなど
- MCPプロトコル:Claude DesktopとClaude Codeとのネイティブ統合
- 柔軟な設定:Pydantic検証を備えたYAMLベースの設定
- 複数のトランスポート:stdio、SSE、HTTPトランスポートオプション
- カスタムエンドポイント:プロキシサーバーとローカルデプロイメントのサポート
💻 使用例
基本的な使用法
MCP AI HubがMCPクライアントに接続されたら、以下のツールを使用してAIモデルと対話できます。
MCPツールリファレンス
主なチャットツール:
chat(model_name: str, message: str | list[dict]) -> str
- model_name:設定されたモデルの名前(例:"gpt-4"、"claude-sonnet")
- message:文字列メッセージまたはOpenAI形式のメッセージリスト
- 戻り値:AIモデルの応答を文字列として返します。
モデル探索ツール:
list_models() -> list[str]
get_model_info(model_name: str) -> dict
- model_name:設定されたモデルの名前
- 戻り値:モデルの設定詳細(プロバイダー、パラメーターなど)
高度な使用法
CLIオプションとトランスポートタイプ
MCP AI Hubは、さまざまなユースケースに対応する複数のトランスポートメカニズムをサポートしています:
コマンドラインオプション:
mcp-ai-hub
mcp-ai-hub --transport sse --host 0.0.0.0 --port 3001
mcp-ai-hub --transport http --port 8080
mcp-ai-hub --config /path/to/config.yaml --log-level DEBUG
トランスポートタイプの詳細:
| トランスポート |
使用例 |
デフォルトのホスト:ポート |
説明 |
stdio |
MCPクライアント(Claude Desktop/Code) |
N/A |
標準入出力、MCPのデフォルト |
sse |
ウェブアプリケーション |
localhost:3001 |
リアルタイムウェブアプリ用のServer-Sent Events |
http |
直接API呼び出し |
localhost:3001(--port で上書き可能) |
ストリーミングサポート付きのHTTPトランスポート |
CLI引数:
--transport {stdio,sse,http}:トランスポートプロトコル(デフォルト: stdio)
--host HOST:SSE/HTTPのホストアドレス(デフォルト: localhost)
--port PORT:SSE/HTTPのポート番号(デフォルト: 3001;必要に応じて上書き可能)
--config CONFIG:カスタム設定ファイルのパス(デフォルト: ~/.ai_hub.yaml)
--log-level {DEBUG,INFO,WARNING,ERROR}:ログの詳細度(デフォルト: INFO)
📚 ドキュメント
設定
MCP AI Hubは、LiteLMを通じて100以上のAIプロバイダーをサポートしています。APIキーとカスタムパラメーターを使用して、~/.ai_hub.yaml でモデルを設定します。
システムプロンプト
システムプロンプトは、2つのレベルで定義できます:
global_system_prompt:デフォルトですべてのモデルに適用されます。
- モデルごとの
system_prompt:そのモデルのグローバルプロンプトを上書きします。
優先順位:モデル固有のプロンプト > グローバルプロンプト。モデルの system_prompt が空文字列に設定されている場合、そのモデルのグローバルプロンプトが無効になります。
global_system_prompt: "You are a helpful AI assistant. Be concise."
model_list:
- model_name: gpt-4
system_prompt: "You are a precise coding assistant."
litellm_params:
model: openai/gpt-4
api_key: "sk-your-openai-api-key"
- model_name: claude-sonnet
system_prompt: ""
litellm_params:
model: anthropic/claude-3-5-sonnet-20241022
api_key: "sk-ant-your-anthropic-api-key"
注:
- サーバーは、プロバイダーに送信するメッセージリストの先頭に設定されたシステムプロンプトを追加します。
- 明示的なメッセージリストですでに
system メッセージが含まれている場合、両方のシステムメッセージが順番に含まれます(設定されたプロンプトが最初)。
サポートされているプロバイダー
主要なAIプロバイダー:
- OpenAI:GPT-4、GPT-3.5-turbo、GPT-4-turboなど
- Anthropic:Claude 3.5 Sonnet、Claude 3 Haiku、Claude 3 Opus
- Google:Gemini Pro、Gemini Pro Vision、Gemini Ultra
- Azure OpenAI:AzureでホストされているOpenAIモデル
- AWS Bedrock:Claude、Llama、Jurassicなど
- Together AI:Llama、Mistral、Falconなどのオープンソースモデル
- Hugging Face:さまざまなオープンソースモデル
- ローカルモデル:Ollama、LM Studioなどのローカルデプロイメント
設定パラメーター:
- api_key:プロバイダーのAPIキー(必須)
- max_tokens:最大応答トークン数(オプション)
- temperature:応答の創造性(0.0 - 1.0、オプション)
- api_base:カスタムエンドポイントURL(プロキシ/ローカルサーバー用)
- その他:LiteLMがサポートするすべてのパラメーター
設定例
基本設定:
global_system_prompt: "You are a helpful AI assistant. Be concise."
model_list:
- model_name: gpt-4
system_prompt: "You are a precise coding assistant."
litellm_params:
model: openai/gpt-4
api_key: "sk-your-actual-openai-api-key"
max_tokens: 2048
temperature: 0.7
- model_name: claude-sonnet
litellm_params:
model: anthropic/claude-3-5-sonnet-20241022
api_key: "sk-ant-your-actual-anthropic-api-key"
max_tokens: 4096
temperature: 0.7
カスタムパラメーター:
model_list:
- model_name: gpt-4-creative
litellm_params:
model: openai/gpt-4
api_key: "sk-your-openai-key"
max_tokens: 4096
temperature: 0.9
top_p: 0.95
frequency_penalty: 0.1
presence_penalty: 0.1
- model_name: claude-analytical
litellm_params:
model: anthropic/claude-3-5-sonnet-20241022
api_key: "sk-ant-your-anthropic-key"
max_tokens: 8192
temperature: 0.3
stop_sequences: ["\n\n", "Human:"]
ローカルLLMサーバー設定:
model_list:
- model_name: local-llama
litellm_params:
model: openai/llama-2-7b-chat
api_key: "dummy-key"
api_base: "http://localhost:8080/v1"
max_tokens: 2048
temperature: 0.7
その他のプロバイダーについては、LiteLLMのドキュメントを参照してください:https://docs.litellm.ai/docs/providers。
開発
セットアップ
uv sync
uv pip install -e ".[dev]"
uv add package_name
uv add --dev package_name
uv sync --upgrade
実行とテスト
uv run mcp-ai-hub
uv run mcp-ai-hub --config ./custom_config.yaml --log-level DEBUG
uv run mcp-ai-hub --transport sse --port 3001
uv run pytest
uv run pytest --cov=src/mcp_ai_hub --cov-report=html
コード品質
uv run ruff format .
uv run ruff check .
uv run mypy src/
uv run ruff format . && uv run ruff check . && uv run mypy src/
トラブルシューティング
設定問題
設定ファイルの問題:
- ファイルの場所:
~/.ai_hub.yaml がホームディレクトリに存在することを確認してください。
- YAMLの有効性:オンラインバリデーターまたは
python -c "import yaml; yaml.safe_load(open('~/.ai_hub.yaml'))" を使用してYAML構文を検証してください。
- ファイルパーミッション:
chmod 600 ~/.ai_hub.yaml で適切なパーミッションを設定してください。
- パス解決:カスタム設定の場所では絶対パスを使用してください。
設定の検証:
- 必須フィールド:各モデルには
model_name と litellm_params が必要です。
- APIキー:APIキーが正しく引用され、期限切れでないことを確認してください。
- モデル形式:LiteLM互換のモデル識別子を使用してください(例:
openai/gpt-4、anthropic/claude-3-5-sonnet-20241022)。
APIと認証エラー
認証問題:
- 無効なAPIキー:タイプミス、余分なスペース、期限切れのキーを確認してください。
- 不十分な権限:APIキーが必要なモデルアクセス権限を持っていることを確認してください。
- レート制限:APIの使用状況を監視し、必要に応じてリトライロジックを実装してください。
- 地域制限:一部のモデルはすべての地域で利用できない場合があります。
API固有のトラブルシューティング:
- OpenAI:組織設定とモデルの可用性を確認してください。
- Anthropic:Claudeモデルのアクセスと使用制限を確認してください。
- Azure OpenAI:適切なリソースのデプロイとエンドポイントの設定を確認してください。
- Google Gemini:プロジェクトの設定とAPIの有効化を確認してください。
MCP接続問題
サーバー起動問題:
- ポートの競合:デフォルトのポートが使用中の場合は、SSE/HTTPトランスポートに異なるポートを使用してください。
- 権限エラー:
mcp-ai-hub コマンドに実行権限があることを確認してください。
- Pythonパス:Python環境とパッケージのインストールを確認してください。
クライアント設定問題:
- コマンドパス:
mcp-ai-hub がPATHに含まれていること、または完全な絶対パスを使用することを確認してください。
- 作業ディレクトリ:一部のMCPクライアントは特定の作業ディレクトリ設定を必要とする場合があります。
- トランスポートの不一致:Claude Desktop/Codeにはstdioトランスポートを使用してください。
パフォーマンスと信頼性
応答時間の問題:
- ネットワーク遅延:可能な場合は、地理的に近いAPIエンドポイントを使用してください。
- モデルの選択:一部のモデルは他のモデルよりも高速です(例:GPT-3.5 vs GPT-4)。
- トークン制限:大きな
max_tokens 値は応答時間を増加させる可能性があります。
信頼性の向上:
- リトライロジック:一時的な障害に対して指数関数的バックオフを実装してください。
- タイムアウト設定:ユースケースに適したタイムアウトを設定してください。
- ヘルスチェック:サーバーの状態を監視し、必要に応じて再起動してください。
- ロードバランシング:冗長性のために複数のモデル設定を使用してください。
📄 ライセンス
MITライセンス - 詳細については LICENSE ファイルを参照してください。
貢献
貢献を歓迎します!以下のガイドラインに従ってください。
開発ワークフロー
- フォークとクローン:リポジトリをフォークし、自分のフォークをクローンします。
- ブランチの作成:機能ブランチを作成します(
git checkout -b feature/amazing-feature)。
- 開発セットアップ:
uv sync で依存関係をインストールします。
- 変更の実施:機能を実装または修正します。
- テスト:テストを追加し、すべてのテストが通過することを確認します。
- コード品質:フォーマット、リント、型チェックを実行します。
- ドキュメント:必要に応じてドキュメントを更新します。
- PRの提出:詳細な説明付きでプルリクエストを作成します。
コード標準
Pythonスタイル
- PEP 8スタイルガイドラインに従ってください。
- すべての関数に型ヒントを使用してください。
- 公開関数とクラスにドキュメント文字列を追加してください。
- 関数を小さく集中させたままにしてください。
テスト要件
- 新しい機能に対してテストを書いてください。
- 既存のテストが引き続き通過することを確認してください。
- 良好なテストカバレッジを目指してください。
- エッジケースとエラー条件をテストしてください。
ドキュメント
- ユーザーに公開される変更についてはREADME.mdを更新してください。
- 複雑なロジックにはインラインコメントを追加してください。
- 必要に応じて設定例を更新してください。
- 破壊的な変更を明確にドキュメント化してください。
品質チェック
PRを提出する前に、以下を確認してください:
uv run pytest
uv run ruff format .
uv run ruff check .
uv run mypy src/
問題と機能リクエスト
- バグレポートと機能リクエストにはGitHub Issuesを使用してください。
- バグの再現手順を詳細に提供してください。
- 関連する場合は設定例を含めてください。
- 新しい問題を作成する前に既存の問題を確認してください。
- 問題に適切なラベルを付けてください。