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サーバーエンドポイントを実行しません。