メインコンテンツまでスキップ

MCP ツール

Sinaptic® DROID+ は、外部ツールをエージェントに接続するための Model Context Protocol (MCP) をサポートしています。MCP サーバーは、ウェブ検索、ファイルアクセス、データベースクエリ、および任意のカスタム API などの機能を提供し、これらはすべて呼び出し可能なツールとしてエージェントが利用できます。

Sinaptic® DROID+ における MCP の仕組み

MCP サーバーは、Sinaptic® DROID+ とともにサブプロセスとして実行されます。これらは JSON-RPC 2.0 を使用して stdio 経由で通信します。エージェントがツールを使用する必要がある場合、Sinaptic® DROID+ は適切な MCP サーバーにリクエストを送信し、その結果を LLM に返します。

エージェント → DROID+ → MCP サーバー(サブプロセス) → 外部サービス
← 結果

各 MCP サーバーは、名前、説明、および入力スキーマを持つツールのセットを宣言します。LLM はこれらを利用可能な関数呼び出しとして認識します。

設定

MCP サーバーは、droid.yamlmcp セクションで設定します。

mcp:
servers:
web-search:
command: "npx"
args: ["-y", "@anthropic/mcp-web-search"]
env:
BRAVE_API_KEY: "${BRAVE_API_KEY}"

filesystem:
command: "npx"
args: ["-y", "@anthropic/mcp-filesystem", "/data"]

各サーバーエントリでは以下を指定します:

  • command — 実行する実行ファイル
  • args — コマンドライン引数
  • env — サブプロセスに渡される環境変数(${VAR} 構文をサポート)

エージェントでの MCP ツールの使用

MCP サーバーがグローバルに設定されると、エージェントはそれらのツールを参照して使用できるようになります。

# configs/agents/research-agent.yaml
name: "research-agent"
description: "ウェブ検索とファイル読み込みができるエージェント"

model:
name: "gpt-4o-mini"

personality: |
あなたはリサーチアシスタントです。最新の情報を見つけるにはウェブ検索を使用し、
参照ドキュメントを読むにはファイルシステムを使用してください。

tools:
- name: "current_time"
type: "builtin"

# 設定済みサーバーからの MCP ツールは自動的に利用可能になります

droid.yaml で MCP サーバーが設定されると、そのツールはすべてのエージェントで利用可能になります。LLM は関数呼び出しスキーマの一部としてツール定義を受け取り、必要に応じてそれらを呼び出すことができます。

人気のある MCP サーバー

ウェブ検索 (Brave)

mcp:
servers:
web-search:
command: "npx"
args: ["-y", "@anthropic/mcp-web-search"]
env:
BRAVE_API_KEY: "${BRAVE_API_KEY}"

web_search ツールを提供します。Brave Search API キーが必要です。

ファイルシステムアクセス

mcp:
servers:
filesystem:
command: "npx"
args: ["-y", "@anthropic/mcp-filesystem", "/data/docs"]

read_file, write_file, list_directory ツールを提供します。パス引数によって、そのディレクトリへのアクセスが制限されます。

データベース (PostgreSQL)

mcp:
servers:
database:
command: "npx"
args: ["-y", "@anthropic/mcp-postgres"]
env:
DATABASE_URL: "${DATABASE_URL}"

データベースに対する読み取り専用 SQL クエリのための query ツールを提供します。

カスタム MCP サーバー

任意の言語で独自の MCP サーバーを作成できます。サーバーは以下の要件を満たす必要があります:

  1. stdin で JSON-RPC 2.0 メッセージを受け取る
  2. stdout にレスポンスを書き込む
  3. tools/list メソッドを介して利用可能なツールを宣言する

Python による MCP サーバーの例:

mcp:
servers:
my-tools:
command: "python"
args: ["./tools/my_server.py"]
env:
API_TOKEN: "${MY_API_TOKEN}"

サーバーの構築に関する詳細は、MCP 仕様を参照してください。

MCP + Docker

Docker で Sinaptic® DROID+ を実行する場合、MCP サーバーはコンテナ内でそのランタイムが利用可能である必要があります。npm ベースの MCP サーバーの場合、イメージ内に Node.js が必要です。

オプション 1: Node.js を追加するカスタム Dockerfile を使用する:

FROM sinapticai/droid:latest AS base
# MCP サーバーの依存関係を追加
COPY --from=node:20-alpine /usr/local/bin/node /usr/local/bin/
COPY --from=node:20-alpine /usr/local/bin/npx /usr/local/bin/

オプション 2: MCP サーバーを別のコンテナとして実行し、Sinaptic® DROID+ が stdio の代わりにネットワーク経由で接続するように設定する(ネットワーク対応の MCP トランスポートが必要)。

MCP のデバッグ

MCP 通信を確認するには、デバッグロギングを有効にします:

logging:
level: "debug"

これにより、ツールの呼び出しと結果を含む、Sinaptic® DROID+ と MCP サーバー間のすべての JSON-RPC メッセージがログに記録されます。

制限事項

  • Community Edition の MCP サーバーは、Pro/Enterprise エディションと同様に動作します。MCP に関する機能制限はありません。
  • 各 MCP サーバーは個別のサブプロセスとして実行されます。サーバーの数は適切な範囲(通常 2〜5 個)に留めてください。
  • MCP サーバーは、Sinaptic® DROID+ が実行されているシステム(またはコンテナ内)で利用可能である必要があります。