Skip to main content
Glama

KOI-MCP統合

Python 3.12 ファストAPI KOIネット

知識組織化インフラストラクチャ (KOI) とモデル コンテキスト プロトコル (MCP) を統合するブリッジング フレームワーク。自律エージェントが豊富な性格特性を交換し、機能を標準化されたツールとして公開できるようにします。

クイックスタート

前提条件

インストール

# Clone the repository
git clone https://github.com/block-science/koi-mcp.git
cd koi-mcp

# Create and activate virtual environment
uv venv --python 3.12
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install the package with development dependencies
uv pip install -e ".[dev]"

デモの実行

KOI-MCP の動作を確認する最も簡単な方法は、デモを実行することです。

python scripts/demo.py

これにより、詳細なイベント ログとコンポーネント ステータス表示を備えた豊富なインタラクティブ コンソールが提供されます。

あるいは、メイン モジュールを使用して簡略化されたデモを実行することもできます。

# Run demo (starts coordinator and two example agents)
python -m koi_mcp.main demo

これにより、コーディネーターノードと、異なる性格特性を持つ2つのエージェントノードが起動します。その後、以下のサイトにアクセスしてください。

コンポーネントを個別に実行する

コンポーネントを個別に実行することもできます。

# Run coordinator node
python -m koi_mcp.main coordinator

# Run agent nodes
python -m koi_mcp.main agent --config configs/agent1.json
python -m koi_mcp.main agent --config configs/agent2.json

Related MCP server: MemoDB MCP Server

建築

KOI-MCP 統合は**、コーディネーター-アダプター パターン**に従います。

flowchart TD
    subgraph "Coordinator-Adapter Node"
        CN[KOI Coordinator Node]
        AD[MCP Adapter]
        MC[MCP Context Registry]
    end

    subgraph "Agent Node A"
        A1[KOI Agent Node]
        A2[Personality Bundle]
        A3[MCP Server]
    end

    subgraph "Agent Node B"
        B1[KOI Agent Node]
        B2[Personality Bundle]
        B3[MCP Server]
    end

    CN <-->|Node Discovery| A1
    CN <-->|Node Discovery| B1
    A1 -->|Personality Broadcast| CN
    B1 -->|Personality Broadcast| CN
    CN --> AD
    AD --> MC
    MC -->|Agent Registry| C[LLM Clients]
    A3 -->|Tools/Resources| C
    B3 -->|Tools/Resources| C
  1. KOIコーディネーターノード: KOIネットワークの中央ハブとして機能し、エージェントの検出と状態の同期を処理します。

  2. MCP アダプター: KOI パーソナリティ バンドルを MCP 互換のリソースとツールに変換します

  3. エージェントノード: ネットワークに特性をブロードキャストする個性を持つ個々のエージェント

  4. MCP レジストリ サーバー: アダプタのレジストリを MCP 互換エンドポイントとして公開します。

  5. MCP エージェント サーバー: 各エージェントの個別のサーバーで、エンドポイントとして特定の特性を公開します。

エージェントパーソナリティモデル

エージェントは特性ベースの性格モデルを通じて能力を表現します。

# Example agent configuration
{
  "agent": {
    "name": "helpful-agent",
    "version": "1.0",
    "traits": {
      "mood": "helpful",
      "style": "concise",
      "interests": ["ai", "knowledge-graphs"],
      "calculate": {
        "description": "Performs simple calculations",
        "is_callable": true
      }
    }
  }
}

各特性は次のようになります。

  • 単純な値(文字列、数値、ブール値、リスト)

  • メタデータ(説明、タイプ、is_callable)を持つ複合オブジェクト

  • LLMクライアントから呼び出すことができる呼び出し可能なツール

実装の詳細

エージェントパーソナリティRID

このシステムは、専用のAgentPersonalityタイプを使用して KOI のリソース識別子 (RID) システムを拡張します。

class AgentPersonality(ORN):
    namespace = "agent.personality"

    def __init__(self, name, version):
        self.name = name
        self.version = version

    @property
    def reference(self):
        return f"{self.name}/{self.version}"

性格プロファイルスキーマ

エージェントのパーソナリティは Pydantic モデルを使用して構造化されます。

class PersonalityProfile(BaseModel):
    rid: AgentPersonality
    node_rid: KoiNetNode
    base_url: Optional[str] = None
    mcp_url: Optional[str] = None
    traits: List[PersonalityTrait] = Field(default_factory=list)

知識処理パイプライン

このシステムは、専用のハンドラーを通じて KOI の知識処理パイプラインと統合されます。

@processor.register_handler(HandlerType.Bundle, rid_types=[AgentPersonality])
def personality_bundle_handler(proc: ProcessorInterface, kobj: KnowledgeObject):
    """Process agent personality bundles."""
    try:
        # Validate contents as PersonalityProfile
        profile = PersonalityProfile.model_validate(kobj.contents)

        # Register with MCP adapter if available
        if mcp_adapter is not None:
            mcp_adapter.register_agent(profile)

        return kobj
    except ValidationError:
        return STOP_CHAIN

MCPエンドポイント統合

この統合により、MCP 互換の REST エンドポイントが提供されます。

コーディネーターレジストリエンドポイント

  • GET /resources/list : 既知のエージェントリソースをすべて一覧表示する

  • GET /resources/read/{resource_id} : 特定のエージェントの詳細を取得する

  • GET /tools/list : 利用可能なエージェントツールをすべて一覧表示する

エージェント サーバー エンドポイント

  • GET /resources/list : このエージェントのパーソナリティをリソースとして一覧表示する

  • GET /resources/read/agent:{name} : このエージェントのパーソナリティの詳細を取得します

  • GET /tools/list : このエージェントの呼び出し可能な特性をツールとして一覧表示する

  • POST /tools/call/{trait_name} : 特定の特性をツールとして呼び出す

構成

コーディネーターの構成

{
  "coordinator": {
    "name": "koi-mcp-coordinator",
    "base_url": "http://localhost:9000/koi-net",
    "mcp_registry_port": 9000
  }
}

エージェント構成

{
  "agent": {
    "name": "helpful-agent",
    "version": "1.0",
    "base_url": "http://localhost:8100/koi-net",
    "mcp_port": 8101,
    "traits": {
      "mood": "helpful",
      "style": "concise",
      "interests": ["ai", "knowledge-graphs"],
      "calculate": {
        "description": "Performs simple calculations",
        "is_callable": true
      }
    }
  },
  "network": {
    "first_contact": "http://localhost:9000/koi-net"
  }
}

高度な使用法

実行時に特性を更新する

エージェントは特性を動的に更新できます。

agent = KoiAgentNode(...)
agent.update_traits({
    "mood": "enthusiastic",
    "new_capability": {
        "description": "A new capability added at runtime",
        "is_callable": True
    }
})

カスタムナレッジハンドラー

パーソナリティ処理用のカスタム ハンドラーを登録できます。

@processor.register_handler(HandlerType.Network, rid_types=[AgentPersonality])
def my_custom_network_handler(proc: ProcessorInterface, kobj: KnowledgeObject):
    # Custom logic for determining which nodes should receive personality updates
    # ...
    return kobj

発達

テストの実行

# Run all tests
pytest

# Run tests with coverage report
pytest --cov=koi_mcp

プロジェクト構造

koi-mcp/
├── configs/                 # Configuration files for nodes
├── docs/                    # Documentation and design specs
├── scripts/                 # Utility scripts
├── src/                     # Source code
│   └── koi_mcp/
│       ├── koi/             # KOI integration components
│       │   ├── handlers/    # Knowledge processing handlers
│       │   └── node/        # Node implementations
│       ├── personality/     # Personality models
│       │   ├── models/      # Data models for traits and profiles
│       │   └── rid.py       # Agent personality RID definition
│       ├── server/          # MCP server implementations
│       │   ├── adapter/     # KOI-to-MCP adapter
│       │   ├── agent/       # Agent server
│       │   └── registry/    # Registry server
│       ├── utils/           # Utility functions
│       ├── config.py        # Configuration handling
│       └── main.py          # Main entry point
└── tests/                   # Test suite

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

謝辞

-
security - not tested
-
license - not tested
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BlockScience/koi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server