本文へスキップ

ドキュメントを検索

入力すると、ドキュメントのすべてのページを検索できます。

ドキュメントメニュー
ガイド対象読者 · 開発者 & エージェント開発者

MCP サーバー

あなたのエージェントを、あらゆる MCP クライアントから利用可能に

このページは英語から機械翻訳されました。相違がある場合は原文が優先されます。英語の原文を読む

すべての Agent-Lab アプリケーションには Model Context Protocol サーバーが同梱されています。このサーバーは FastMCP をベースに構築され、/mcp にマウントされています(Streamable HTTP、ステートレス)。Claude Desktop、IDE、独自のエージェントなどの MCP クライアントは、アプリのエージェントを検出し、対話履歴を読み取り、エージェントと直接やり取りできます。サーバーとそのツール/プロンプトのレジストラーは、エージェントと同じ検出メカニズム(scan_packages と agent_lab.agents エントリーポイントグループ)に参加します。

サーバーが公開するもの

ツール 説明
get_agent_list 実行中のアプリに登録されているエージェントを一覧表示します
get_message_list エージェントの対話履歴を読み取ります
post_message エージェントにメッセージを送信します(エージェント間通信)
read_prompt_mcp プロンプトテンプレートを読み取ります。MCP のプロンプト(prompts/get)およびリソース(prompt://)としても公開されます

このプロンプトの 3 点セットは、各エージェントタイプのデフォルトのシステムプロンプトを公開します。テナントごとの上書きは agent_type + setting_key で行えます。

MCP Inspector で試す

MCP Inspector を起動し、アプリに接続します(例:http://localhost:18000/mcp、トランスポート:Streamable HTTP)。

npx @modelcontextprotocol/inspector

Web コンソールにアクセスします(コンソールに表示されるプロキシリンクを使用してください)。

MCP Inspector のデモ

Claude Desktop と接続する

注意:ここでは Claude Desktop をデモ目的でのみ使用しています。このプロジェクトは Anthropic AI とは提携していません。

  1. Claude Desktop がリモートの HTTP サーバーに接続するために使用するブリッジ、 mcp-proxy をインストールします。

    pip install mcp-proxy
  2. Settings → Developer → Edit Config を開き、 claude_desktop_config.json を編集します(エンドポイントは環境に合わせて変更してください。 Python 環境には mcp-proxy が含まれている必要があります)。

Claude Desktop のセットアップ 1

Claude Desktop のセットアップ 2

Claude Desktop のセットアップ 3

  1. Claude Desktop を再起動し、再度 Settings → Developer を開きます。Agent-Lab が表示されているはずです。

Claude Desktop のセットアップ 4

  1. 試してみましょう。Claude にエージェントの一覧表示を依頼したり、監督付きコーダーエージェントインスタンスの対話履歴を取得させたり、そのエージェントが以前に生成したコードスニペットを表示させたりできます。

Claude Desktop のデモ

Claude Desktop のデモ

OpenAI Responses API

Responses API でホストされる Model Context Protocol (MCP) ツールを使うと、外部サービスへの接続が容易になります。モデルが MCP サーバーを参照するよう一度設定するだけで、そのサーバーが一元的なツールホストとして機能します。 (出典:MCP Tool Guide)

Agent-Lab の MCP サーバーと OpenAI Responses API の連携を示すノートブックは、 notebooks/11_mcp_client-openai-responses.ipynb で公開しています。

独自のツールとプロンプトを追加する

すべてはエージェントと同じ方法で検出されます。デコレーターを付け、(ライブラリとして利用する場合は)パッケージが scan_packages に含まれているか、agent_lab.agents エントリーポイントグループを通じて公開されていることを確認してください。

ツール:通常の非同期関数です。先頭の container パラメーターは DI コンテナから注入され、クライアントからは見えません。

from agent_lab import discoverable_mcp_tool


@discoverable_mcp_tool(
    "my_hello_tool",
    description="Returns a friendly greeting.",
    annotations={"readOnlyHint": True},
)
async def hello_tool(container, name: str) -> str:
    return f"Hello, {name}!"

プロンプト:プロンプトの 3 点セット(ツール / prompts/get / prompt:// リソース)のすべてで公開されます。

from agent_lab import discoverable_mcp_prompt


@discoverable_mcp_prompt("my_greeting_prompt")
def greeting_prompt() -> str:
    return "Greet the user warmly and briefly."

応用:独自のツール/プロンプト/リソースのセットを作るには、@discoverable_mcp_registrar(extra_deps=(...)) を使って McpRegistrar(または PromptSetRegistrar)の完全なサブクラスを定義します。クライアント向けの MCP instructions を追加するには、アプリの組み立て時にフラグメントを渡します。

app = create_app(mcp_instructions=["Extra guidance for MCP clients."])

動作するサンプルがスキャフォールド(mcp/tools.py、mcp/prompts.py)に含まれています。最初のエージェントを参照してください。

認証

認証が有効な場合、MCP クライアントは Keycloak を基盤とする OAuth プロキシを介して認証されます。レルムの JWKS に対する JWT 検証(openid、profile、email スコープ)を行い、 OAuth クライアント情報は Redis に(暗号化して)保存されます。アプリは標準のメタデータエンドポイント(/.well-known/oauth-protected-resource/mcp、 /.well-known/oauth-authorization-server/mcp)を公開するため、準拠したクライアントは自動で設定を行えます。