すべての 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/inspectorWeb コンソールにアクセスします(コンソールに表示されるプロキシリンクを使用してください)。

Claude Desktop と接続する
注意:ここでは Claude Desktop をデモ目的でのみ使用しています。このプロジェクトは Anthropic AI とは提携していません。
Claude Desktop がリモートの HTTP サーバーに接続するために使用するブリッジ、 mcp-proxy をインストールします。
pip install mcp-proxySettings → Developer → Edit Config を開き、
claude_desktop_config.jsonを編集します(エンドポイントは環境に合わせて変更してください。 Python 環境にはmcp-proxyが含まれている必要があります)。



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

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


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)を公開するため、準拠したクライアントは自動で設定を行えます。