MCP 経由で AI エージェントを接続する
Kozou は MCP サーバーを同梱しており、
PostgreSQL スキーマを AI エージェント向けの構造化されたコンテキストとして
公開します。接続すると、Claude Code や Claude Desktop のようなエージェントが、
テーブル・ビュー・ビジネス概念が何を意味するか — COMMENT に書いた説明、
@ai ノート、サンプルクエリ — を、6 つの読み取り専用ツールを通じて
読み取れるようになります。
このページでは両方のトランスポートを扱います。サーバー自体を起動する
ローカルエージェント向けの stdio と、Docker やリモート用途向けの
HTTP です。コマンドリファレンスは kozou mcp を
参照してください。各ツールが返す内容については
3 つの出力面 を参照してください。
到達可能な PostgreSQL データベースを持つ Kozou プロジェクトが必要です。
サーバーは DATABASE_URL 接続文字列を読み取ります — CLI の他の部分が使うのと
同じもので、${DATABASE_URL} プレースホルダを通じて kozou.config.yaml に
展開されます。一般的な接続文字列は次のようになります。
postgres://USER:PASSWORD@HOST:5432/DBNAMEアプリケーションコードを書く必要はありません。サーバーはスキーマと
COMMENT テキストを読み取り、そのまま提供します。
stdio の経路: Claude Code と Claude Desktop
Section titled “stdio の経路: Claude Code と Claude Desktop”ローカルエージェントの場合、kozou mcp --stdio をクライアントの設定に MCP
サーバーとして登録します。エージェントは必要に応じてプロセスを起動し、標準
入出力を通じてやり取りします — ポートを待ち受けるものは何もありません。
mcpServers の下にエントリを追加します。この形式は、標準的な設定形式に従う
任意の MCP クライアントで動作します(Claude Code と Claude Desktop は
どちらも従っています)。
{ "mcpServers": { "kozou": { "command": "npx", "args": ["-y", "kozou", "mcp", "--stdio"], "env": { "DATABASE_URL": "postgres://USER:PASSWORD@HOST:5432/DBNAME" } } }}このエントリに関するいくつかの注意点です。
npx -y kozou mcp --stdioは、グローバルインストールせずに公開されたkozouパッケージを実行します。-yはインストールプロンプトをスキップ します。すでにkozouをグローバルにインストールしている場合は、"command": "kozou"と設定し、argsから"kozou"を取り除けます。DATABASE_URLは、kozou.config.yaml内の${DATABASE_URL}プレースホルダを通じて同梱の CLI に読み取られます。クライアントの周囲の 環境に頼るのではなく、示したとおりenvブロックに設定してください。stdioはデフォルトのトランスポートなので、--stdioは明示的ではあり ますがデフォルトと一致します。サーバーはキャッシュされたスキーマを更新するSIGHUPハンドラをインストールするため、長時間稼働するプロセスは再起動 なしで DDL やCOMMENTの変更を取り込めます。
設定を編集したらクライアントを再起動してください。その後、6 つのツールが
kozou というサーバー名でエージェントに表示されます。
HTTP の経路: Docker とリモート
Section titled “HTTP の経路: Docker とリモート”コンテナ化された構成やリモート構成の場合は、代わりにサーバーを HTTP で 実行します。これは、標準的な MCP クライアントがプロセスを起動するのではなく URL に接続するときに話すトランスポートです。
DATABASE_URL=postgres://USER:PASSWORD@HOST:5432/DBNAME \ npx kozou mcp --http --port 3334HTTP サーバーはデフォルトでポート 3334 を待ち受け、MCP エンドポイントを
/mcp で提供します。また POST /admin/refresh も公開します。これは stdio の
SIGHUP ハンドラに対応する HTTP モードのもので、キャッシュされたスキーマを
無効化し、次のリクエストでデータベースを再読み込みさせます。
kozou dev は、この同じ HTTP サーバーを Admin UI と並べて立ち上げます —
UI はポート 3333、MCP HTTP サーバーは 3334 で、kozou.config.yaml から
配線されます。すでに kozou dev を実行している場合は、別途コマンドを
実行しなくても MCP エンドポイントが http://localhost:3334/mcp で有効に
なっています。kozou dev と
Admin UI を生成する を参照してください。
バインドと公開
Section titled “バインドと公開”デフォルトでは、HTTP サーバーは 127.0.0.1(ループバックのみ)にバインド
します。リスナーは --host と --port で変更できます。
| フラグ | デフォルト | 役割 |
|---|---|---|
--port <n> | 3334 | HTTP サーバーが待ち受ける TCP ポート。 |
--host <addr> | 127.0.0.1 | バインドするインターフェース。 |
v0.1.1 では、MCP HTTP トランスポートは認証なしで出荷されます。ループ バック以外のホストにバインドすると、サーバーは大きな警告を表示します。その アドレスに到達できる者は誰でもデータベースのスキーマメタデータを読み取れる からです。ツールはスキーマメタデータのみを公開し — SQL の実行もデータ アクセスもないため、影響範囲は限定されます — それでも、信頼されたネット ワークと外部の認証/プロキシ層の背後に置く場合を除いて、サーバーはループ バックに留めておくべきです。
接続後にエージェントができること
Section titled “接続後にエージェントができること”サーバーは 6 つのツール、すべて読み取り専用のコンテキストプロバイダを 公開します。
| ツール | 返すもの |
|---|---|
list_tables | テーブル名と、そのラベル・説明・プランナーによる行数推定。 |
describe_table | 1 つのテーブルの完全なスキーマと COMMENT: 列、型、NULL 許容性、主キー、外部キー関係、チェック制約。 |
list_views | ビュー名と、そのラベル・目的。 |
describe_view | ビューの列、目的、依存先のテーブル、その SQL 定義。 |
list_concepts | ドメイン概念。それぞれビューに裏付けられています。 |
get_concept_context | 概念に関連するテーブル、推奨されるクエリソース、結合の提案、サンプルクエリ。 |
これらによって、エージェントはスキーマの形だけでなく意味を — そして
それをクエリする推奨方法を — 読み取ります。describe_table、
describe_view、get_concept_context はそれぞれ、@ai タグで書いた AI 向け
ノートを携えるため、「売上の数値には、ビュー vw_orders_paid を優先する」と
いったガイダンスがエージェントに直接届きます。@example で書いたサンプル
クエリは、get_concept_context を通じて { description, sql } エントリの
リストとして表面化します — 概念に対する推奨クエリ経路です。(これらのタグが
どのように解析されるかについては、
COMMENT の規約 を参照してください。)
たとえば、orders テーブルについて尋ねられたエージェントは、describe_table
を呼び出してその列と外部キーを把握し、次に paid-orders 概念に対して
get_concept_context を呼び出して、推奨される FROM ソースとサンプルの売上
クエリを見つけます — すべて、プロンプトにスキーマを一切貼り付けることなく。
読み取り専用の安全境界
Section titled “読み取り専用の安全境界”6 つのツールのいずれも、SQL を生成したり、SQL を実行したり、データを書き込んだり
しません。スキーマメタデータと COMMENT テキストを返すだけで、それ以外は何も
しません。MCP 経由で Kozou に接続したエージェントは、スキーマが何を意味するかを
読み取れますが、この面を通じてデータを変更することはできません — どちらの
トランスポートでも、ツールセットに書き込み経路は存在しません。
これはまた、HTTP サーバーがループバックにバインドでき、それ以外では大きく警告
する理由でもあります。公開された MCP エンドポイントの最悪のケースは、スキーマ
メタデータの開示であって、データの損失ではありません。エージェントが行の読み
書きを必要とする場合、それは別の面に属します — REST API(v0.1.1 では
PostgREST、または v0.2 系列の kozou dev --adapter api の背後にある実験的な
自社製 @kozou/api)であって、MCP ではありません。
次に読むもの
Section titled “次に読むもの”kozou mcp— コマンドリファレンス: フラグ、トランス ポート、リフレッシュエンドポイント。- COMMENT の規約 —
@ai、@example、 その他のタグが、エージェントが見る内容をどう形作るか。 - 3 つの出力面 — MCP コンテキストが Admin UI や REST API とどう並ぶか。