mcpField
C
Claude MCP Agent

Claude MCP Agent

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

Claude MCP Agent について

Claude MCP Agent は、柔軟な状態管理とタイプセーフなコンテキストを通じて AI エージェントが MCP サーバーと相互作用できる Python ライブラリです。グローバルサーバー設定をサポートし、LangGraph と統合します。

主な機能

  1. 01MCP に特化した純粋なクライアント実装
  2. 02グローバルサーバー設定管理
  3. 03インスタンスごとの柔軟なサーバー選択
  4. 04組み込み状態管理
  5. 05完全なタイプセーフティ

活用シーン

  1. 01MCP サーバーとのエージェント相互作用
  2. 02LangGraph ワークフロー内の状態管理
  3. 03マルチサーバー設定の一元管理
  4. 04タイプセーフな AI エージェント開発

MCP 対応

Claude MCP Agent は MCP クライアントライブラリで、AI エージェントが設定された MCP サーバーに接続して相互作用し、ツールやリソースにアクセスしてエージェント機能を拡張します。

詳細

Claude MCP エージェント

AI エージェントと連携するように設計された柔軟な Model Context Protocol (MCP) クライアント実装です。ステート管理とサーバー設定に焦点を当てています。

概要

Claude MCP エージェントは、構造化されたステート管理を使用して AI エージェントが MCP サーバーと連携できるようにする Python ライブラリです。エージェントは任意の Pydantic モデルをその状態として受け付けるため、柔軟なコンテキスト定義が可能で、Claude 互換のプロンプトに変換されます。このアプローチにより、エージェントが利用可能なコンテキストを正確に制御しながら、型安全性と検証を維持することができます。

ステート定義の例
from pydantic import BaseModel
from typing import List, Optional

class ConversationContext(BaseModel):
    current_task: str
    relevant_facts: List[str]
    user_preferences: dict
    conversation_history: Optional[List[dict]] = []
    
# The agent will intelligently translate this structure 
# into context that Claude can understand
state = ConversationContext(
    current_task="Weather analysis for trip planning",
    relevant_facts=[
        "User is planning a trip to Seattle",
        "Trip dates: June 15-20",
        "Outdoor activities planned"
    ],
    user_preferences={
        "temperature_unit": "celsius",
        "activity_preference": "outdoor"
    }
)

response = await agent.process_query(
    "What should I pack given the weather forecast?",
    state=state
)
主な機能
  • Pure クライアント実装: 関心の分離を実現するため、クライアント側の MCP 機能に専念
  • グローバルサーバー設定: MCP サーバー設定の一元管理
  • 柔軟なサーバー選択: 設定されたすべてのサーバーまたは特定のサーバーのサブセットをクライアントインスタンスごとに使用可能
  • ステートフルな操作: LangGraph および同様のフレームワークとシームレスに機能する組み込みステート管理
  • 型安全性: 信頼性の高い開発のための完全な TypeScript スタイルのタイピングサポート

インストール

pip install claude-mcp-agent  # Not yet published

クイックスタート

from claude_mcp_agent import MCPAgent, ServerConfig

# Configure global servers
servers = [
    ServerConfig(
        name="weather",
        path="/path/to/weather/server.py",
        enabled=True
    ),
    ServerConfig(
        name="database",
        path="/path/to/db/server.py",
        enabled=True
    )
]

# Create agent with all servers
agent = MCPAgent(servers=servers)

# Or create with specific servers
agent = MCPAgent(servers=servers, enabled_servers=["weather"])

# Use with state
state = {"context": "Current weather analysis"}
response = await agent.process_query("What's the weather?", state=state)

サーバー設定

サーバーは設定ファイルまたはプログラムを通じて設定できます。

設定ファイル

mcp_config.json ファイルを作成してください:

{
  "servers": {
    "weather": {
      "path": "/path/to/weather_server.py",
      "enabled": true,
      "env_vars": {
        "API_KEY": "${WEATHER_API_KEY}",
        "REGION": "us-west-2"
      }
    },
    "database": {
      "path": "/path/to/db_server.py",
      "enabled": true,
      "env_vars": {
        "DB_CONNECTION": "${DB_URL}"
      }
    }
  }
}

その後、コード内に読み込みます:

from claude_mcp_agent import MCPAgent

# Load from default config path (./mcp_config.json)
agent = MCPAgent.from_config()

# Or specify config path
agent = MCPAgent.from_config("/path/to/mcp_config.json")

# Override specific servers from config
agent = MCPAgent.from_config(
    config_path="mcp_config.json",
    enabled_servers=["weather"]  # Only use weather server from config
)
プログラムによる設定

プログラムを通じてサーバーを設定することもできます:

from claude_mcp_agent import MCPAgent, ServerConfig

server_configs = [
    ServerConfig(
        name="weather",
        path="/path/to/weather_server.py",
        enabled=True,
        env_vars={"API_KEY": "xxx"}
    )
]

# Use programmatic configuration
agent = MCPAgent(servers=server_configs)
混合設定

両方のアプローチを組み合わせることができます:

# Load base configuration from file
agent = MCPAgent.from_config("mcp_config.json")

# Add additional servers programmatically
additional_server = ServerConfig(
    name="new_service",
    path="/path/to/service.py",
    enabled=True
)

agent.add_server(additional_server)

ステート管理

エージェントは相互作用の間、ステートを維持するため、LangGraph での使用に最適です:

# Initialize state
state = {
    "context": "Weather analysis",
    "history": []
}

# Process query with state
response = await agent.process_query(
    "What's the weather like?",
    state=state
)

# State is updated with new context
print(state["history"])  # Shows interaction history

コントリビューション

コントリビューションを歓迎します。詳細は Contributeng Guide をお読みください。そちらに行動規範と開発プロセスについての詳細が記載されています。

コメント

MCP は初めてですか?

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

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