MCP tools#
MCP モデルコンテキストプロトコルは、サーバーが呼び出し可能なツールセットをアドバタイズする標準の方法です。
aidb.import_mcp_tools()
は、外部MCPサーバーを登録し、アドバタイズするツールをインポートするため、エージェントはAIDB独自のネイティブツールおよびSQLツールとともにこれらを呼び出すことができます。
SELECT aidb.import_mcp_tools(
name => weather,
url => https://weather.example.com/mcp,
transport => streamable_http, -- optional; streamable_http or sse (see below). Default: streamable_http
headers => NULL, -- optional; request headers to send, for example, an auth token. Mutually exclusive with headers_env. Default: NULL
tool_filter => NULL, -- optional; import only these tool names. Default: NULL (import everything the server advertises)
headers_env => NULL -- optional; env var holding the headers JSON instead of storing it. Mutually exclusive with headers. Default: NULL
);
SELECT aidb.create_agent(trip_planner, Help plan trips, checking weather when useful., my_gpt,
tools => ARRAY[get_forecast]); -- a tool the weather server advertised
Parameter |
Type |
Default |
Description |
|---|---|---|---|
name |
TEXT |
Required |
サーバー登録の一意の名前。 |
url |
TEXT |
Required |
サーバーのMCPエンドポイントURL。 |
transport |
TEXT |
'streamable_http' |
'streamable_http'`または'sse'` —現在`'streamable_http'`のみが完全にサポートされています。 |
headers |
JSONB |
NULL |
送信する要求ヘッダーたとえば {"Authorization": "Bearer ..."} `headers_env`と相互排他的。 |
tool_filter |
TEXT |
NULL |
これらのツール名のみをインポートします。サーバーがアドバタイズするすべてのインポートを省略します。 |
headers_env |
TEXT |
NULL |
ヘッダーJSONを保持する環境変数の名前。保存するのではなく、使用するたびに新しく読み取られます。 `headers`と相互排他的。 |
import_mcp_tools は、何かを登録する前にtools/list
エンドポイントを呼び出すことによりサーバーを検証します。到達不能であるか、tool_filter
と一致するものをアドバタイズしない場合、何も保存されません。返されるツールはすぐにキャッシュされるため、別の更新後ではなく、すぐにaidb.tools
に表示されます。
現在、streamable_http
トランスポートデフォルトのみが実際にエンドツーエンドで動作します。
sse は値として受け入れられますが、まだ完全には実装されていません。
MCPサーバーへの到達は、アウトバウンドネットワーク呼び出しであり、モデルプロバイダー呼び出しおよびHuggingFaceのダウンロードと同じ aidb.egress_allowlist 制限の対象となります。
認証#
特定の要求ヘッダー最も一般的にはAuthorization
ベアラートークンを必要とするサーバーにheaders を渡します。
SELECT aidb.import_mcp_tools(
name => internal_crm,
url => https://crm.internal.example.com/mcp,
headers => {"Authorization": "Bearer sk-..."}::JSONB
);
headers はaidb.mcp_registry に保存されますが、 aidb_users
にはその列へのSELECT
アクセスがありません。AIDB自身の内部呼び出し検証、リフレッシュ、またはサーバーのツールの呼び出しのみがそれを読み取ることができます。
!!!note
シークレットをテーブルにまったく保存したくないですか?代わりにheaders_env
を渡します。headers
が取るのと同じ形状で、ヘッダーのJSONオブジェクトを保持する環境変数名前付けます呼び出しごとにPostgresプロセス自分の環境から新しく読み取られます。
headers およびheaders_env は相互排他的です。変数の名前は、
aidb.env_var_allowed_prefix デフォルトではAIDB_
で構成されたプレフィックスで始まる必要があります。これは、モデル資格情報に credentials_env で使用される同じメカニズムとGUCです。
インポートするツールのフィルタリング#
デフォルトでは、サーバーがアドバタイズするすべてのツールがインポートされます。
tool_filter を渡して、特定のもののみを名前でインポートします。
SELECT aidb.import_mcp_tools(
name => weather,
url => https://weather.example.com/mcp,
tool_filter => ARRAY[get_forecast, get_alerts]
);
ツールリストを最新の状態に保つ#
AIDBは、すべてのクエリーでサーバーのツールリストを再取得しません。aidb.tools
は、過去60分以内にキャッシュされたエントリのみを表示するため、
SELECT にネットワーク副作用が発生することはありません。
aidb.refresh_mcp_tools()
を呼び出して、オンデマンドでキャッシュを再取得および更新しますたとえば、サーバーが新しいツールを追加した後。
SELECT aidb.refresh_mcp_tools(weather);
現在キャッシュされているツールの数を返しますtool_filter
適用後サーバーの登録—そのurl 、transport 、headers
、またはtool_filter を再実行するimport_mcp_tools
同等の設定を介して変更することも、キャッシュを自動的に無効にします。
サーバーの削除#
SELECT aidb.delete_tool(weather);
MCPサーバーを削除すると、それに伴ってアドバタイズされたすべてのツールが削除されます。ツールの1つだけを個別に削除する方法はありません。
tool_filter を使用して、代わりに公開されるツールをキュレートします。
MCPを介してAIDB独自のツールを公開する#
aidb.get_mcp_tools() は、 aidb.tools
に現在あるすべてのツールネイティブ、
SQL、およびインポートされたMCPツールを同様に返し、MCP tools/list
行項目として再形成します。他のシステムがMCP独自の記述子形式でAIDBのツールカタログを必要とする場合に役立ちます。
SELECT * FROM aidb.get_mcp_tools();
これは、AIDBのツールカタログをMCPの記述子形状に変換するだけです。 AIDBは、外部MCPクライアントが接続し、ネットワーク経由でこれらのツールを実際に呼び出すことができる独自のMCPサーバーエンドポイントを実行しません。