簡単にMCPを実行できるMCP connectorを試す
通常、MCPサーバーを利用するにはそのクライアントアプリ(Claude Desktop、Cursor、Mastraなど)が必要です。
先ほどAnthropicから発表された MCP connector を使用すれば、AnthropicのメッセージAPIから直接MCPサーバーに接続できます。
使い方
早速試してみましょう。
今回はサンプルコードとしてPythonを利用します。
まずは必要なパッケージをインストールします。
pip install anthropic
環境変数を設定します。
ANTHROPIC_API_KEY=xxx
サンプルファイルです。
import os
import anthropic
import sys
def main():
# 環境変数からキーを取得
api_key = os.getenv("ANTHROPIC_API_KEY")
if not api_key:
raise ValueError("ANTHROPIC_API_KEY環境変数を設定してください。")
# Client を初期化
client = anthropic.Anthropic(
api_key=api_key,
)
# コマンドライン引数から content を取得
if len(sys.argv) < 2:
print("ユーザメッセージを指定してください。")
sys.exit(1)
user_content = sys.argv[1]
response = client.beta.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1000,
messages=[
{
"role": "user",
"content": user_content,
}
],
mcp_servers=[
{
"type": "url",
"url": "https://mcp.deepwiki.com/sse",
"name": "deepwiki",
},
{
"type": "url",
"url": "https://xxxxx.workers.dev/mcp",
"name": "my-mcp-worker",
},
],
betas=["mcp-client-2025-04-04"],
)
# レスポンス表示
print("=== Claude の応答 ===")
for content in response.content:
if content.type == "text":
print(content.text)
elif content.type == "mcp_tool_use":
print("tool use: ", content.name)
if __name__ == "__main__":
main()
シンプルな構成にしました。MCP connector の特別な設定はmcp_serversとbetasくらいです。
betasは現在は必須の項目なので特に気にせず追加しておいてください。
mcp_servevrsには以下の形式でMCPサーバーを指定します。
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"tool_configuration": {
"enabled": true,
"allowed_tools": ["example_tool_1", "example_tool_2"]
},
"authorization_token": "YOUR_TOKEN"
}
上記3つは必須です。
typeは現在urlしか指定できません。つまりSSE形式かStremable HTTP形式しか対応していません。
考えてみればAnthropic APIという外部のツールを利用しているので、ローカルに立てるstdin形式のMCPサーバーが使えないのは当たり前ですね。
tool_configurationでは使用するツールを指定できます。
authorization_tokenは認証用のトークンです。
試してみる
では早速試してみましょう。
ちなみに今回のサンプルでは、SSE形式とStremable HTTP形式のMCPサーバーの両方を利用しています。
SSE形式はDeepWiki MCPを利用しています。
詳しくはこちらを御覧ください。
Stremable HTTP形式はちょうどよかったものが見つからなかったので、azukiazusaさんのこちらの記事を参考にClaudeflareでMCPサーバーを用意しました。
dice_rollというサイコロを振るツールが提供されています。
まずは使えるツールについて聞いてみます。
-> % python main.py 使用できるツールを教えて下さい。
=== Claude の応答 ===
現在使用できるツールは以下の4つです:
## 1. **deepwiki_read_wiki_structure**
- **機能**: GitHubリポジトリのドキュメントトピック一覧を取得
- **パラメータ**:
- `repoName` (必須): GitHubリポジトリ名(例: "facebook/react")
## 2. **deepwiki_read_wiki_contents**
- **機能**: GitHubリポジトリのドキュメント内容を表示
- **パラメータ**:
- `repoName` (必須): GitHubリポジトリ名(例: "facebook/react")
## 3. **deepwiki_ask_question**
- **機能**: GitHubリポジトリについて質問を投げかける
- **パラメータ**:
- `repoName` (必須): GitHubリポジトリ名(例: "facebook/react")
- `question` (必須): リポジトリについての質問内容
## 4. **my-mcp-worker_dice_roll**
- **機能**: サイコロを降った結果を返す
- **パラメータ**:
- `sides` (オプション): サイコロの面の数(デフォルト: 6、範囲: 1-100)
これらのツールを使って、GitHubリポジトリの調査やサイコロゲームなどをお手伝いできます。何かご質問やご要望があれば、お気軽にお声かけください!
DeepWikiに向けて質問します。
-> % python main.py tegnike/aituber-kitリポジトリについて端的に解説してください
=== Claude の応答 ===
tegnike/aituber-kitリポジトリについて調べてみます。
tool use: read_wiki_contents
**tegnike/aituber-kit** は、AIを活用したVTuber(バーチャルYouTuber)やバーチャルキャラクターを作成するためのオープンソースツールキットです。
## 主な特徴
### 🤖 AI統合
- **複数のAIサービスに対応**: OpenAI、Anthropic Claude、Google Gemini、Azure OpenAI、Groq、Cohere等、15以上のAIサービスをサポート
- **リアルタイムAPI対応**: 低遅延での双方向AI対話が可能
- **音声認識機能**: Whisper APIやブラウザ音声認識を使用した音声入力
- **マルチモーダル対応**: テキストと画像の両方を処理可能
### 🎭 キャラクターレンダリング
- **3D VRMモデル**: VRM 0.0/1.0形式の3Dキャラクターモデルに対応
- **2D Live2Dモデル**: Cubism 3以降の2Dキャラクターアニメーション
- **表情・動作制御**: AIの応答に基づいた感情表現とリップシンク
- **カスタムキャラクター**: 独自のVRMやLive2Dモデルをアップロード可能
### 🔊 音声合成システム
- **多様なTTSエンジン**: VOICEVOX、Koeiromap、Google TTS、ElevenLabs、OpenAI TTS等10種類以上
- **音声パラメータ調整**: 速度、ピッチ、イントネーションの細かい調整
- **リアルタイム音声生成**: AIの応答をリアルタイムで音声化
### 🌐 多言語対応
- **15言語サポート**: 日本語、英語、中国語、韓国語、フランス語等
- **自動翻訳システム**: GitHub ActionsとOpenAI APIを使った翻訳の自動化
- **i18next統合**: React i18nextによる完全な国際化対応
### 📡 拡張モード
- **YouTubeモード**: YouTubeライブストリームのコメントに自動応答
- **スライドモード**: PDFプレゼンテーションをAIキャラクターが自動発表
- **外部連携モード**: WebSocketを通じた外部アプリケーションとの連携
- **メッセージ受信システム**: 外部からのAPI経由での指示受信
## アーキテクチャ
```mermaid
graph TD
subgraph "ユーザーインターフェース"
UI[UIコンポーネント]
end
subgraph "コアシステム"
AI[AIサービスシステム]
Character[キャラクターシステム]
Voice[音声合成システム]
Chat[チャット処理システム]
I18N[国際化システム]
end
subgraph "拡張モード"
YT[YouTubeモード]
Slide[スライドモード]
External[外部連携モード]
RT[リアルタイムAPIモード]
Audio[音声モード]
end
UI --> AI
UI --> Character
UI --> Voice
UI --> Chat
UI --> I18N
AI <--> Chat
Chat --> Voice
Voice --> Character
UI --> YT
UI --> Slide
UI --> External
UI --> RT
UI --> Audio
最後にStremable HTTP形式のMCPサーバーを使ってサイコロを振ります。
-> % python main.py サイコロを振ってください
=== Claude の応答 ===
サイコロを振りますね!
tool use: dice_roll
サイコロの結果は **5** でした!🎲
Discussion