mcpField
M

mcp-gateway

ローカル
github.com/authzxセキュリティ011 週間前に更新

mcp-gateway について

mcp-gatewayは、AIエージェントと下流のMCPサーバーの間に置く認可プロキシです。ツール実行前のポリシー判定が必要なチーム向けで、クラウドまたはローカルでの判定と構造化監査ログに対応します。

主な機能

  1. 01転送前に各ツール呼び出しを確認
  2. 02クラウドとローカルの認可に対応
  3. 03.regoファイルでローカルポリシーを定義
  4. 04構造化監査ログを記録
  5. 05stdioまたはHTTPで提供

活用シーン

  1. 01エージェントのデータベースツールへのアクセスを制限
  2. 02未許可のファイル操作やSQL操作を防止
  3. 03複数のリモートエージェントで統制ゲートウェイを共有
  4. 04呼び出し元、引数、認可結果を追跡

MCP 対応

MCPサーバーとして、クライアントと下流のMCPサーバー間の要求を中継し、ツール呼び出しの転送前に認可を確認します。stdioまたはStreamable HTTPで、ポリシー適用済みのツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"authzx-mcp-gateway": {
"command": "npx",
"args": [
"-y",
"@authzx/mcp-gateway"
],
"env": {
"YOUR_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
起動コマンドnpx -y @authzx/mcp-gateway
設定が必要な環境変数
YOUR_API_KEYシークレットYour API key for the service

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@authzx/mcp-gateway1.0.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Vengtoo MCP Gateway

License Node npm

AI エージェントと MCP ツール呼び出しのための認可ゲートウェイです。

オープンソース。既存環境にそのまま導入できます。あらゆる MCP クライアントで動作します。

なぜ必要なのか

MCP サーバーに接続した AI エージェントは、アクセス可能なあらゆるツールを呼び出せます。データベースの読み取り、ファイルの削除、任意の SQL の実行などが可能です。Vengtoo MCP Gateway は、エージェントとそれらのツールの間にポリシー適用ポイントを設け、すべての呼び出しが実行前に認可されるようにします。

機能

  • MCP クライアント(Claude Code、Cursor、VS Code、GitHub Copilot)とあらゆる MCP サーバーの間に配置されます
  • すべてのツール呼び出しをインターセプトし、転送前に認可を確認します
  • 2 つのモードに対応しています:クラウド(Vengtoo Cloud API)とローカル(Vengtoo Agent と .rego ポリシーファイル)
  • すべてのツール呼び出しの完全な監査証跡を記録します。サブジェクト、ツール名、引数、判定が構造化 JSON として記録されます:
{"ts":"2026-05-25T10:03:11.482Z","level":"info","msg":"mcp_tool_call","subject":"agent:ai-assistant","tool":"database__query","allowed":true,"latency_ms":0.8}

クイックスタート

  1. Vengtoo Agent をインストールして起動します。エージェントはローカルで動作し、認可ポリシーを評価します。クラウドアカウントは不要です。
go install github.com/vengtoo/agent/cmd/agent@latest
vengtoo-agent --policy ./policy.rego

エージェントに許可する操作を定義する policy.rego を作成します:

package vengtoo.mcp

default allow := false

# Allow read-only tools
allow if { input.resource.name == "database__query" }
allow if { input.resource.name == "database__list_tables" }

# Allow writes, but block destructive SQL
allow if {
    input.resource.name == "database__execute"
    not contains(lower(input.resource.attributes.sql), "drop")
    not contains(lower(input.resource.attributes.sql), "delete from")
}

Kubernetes の名前空間保護など、その他の例については demo/policies/ を参照してください。

  1. gateway.config.json を作成します:
{
  "vengtoo": {
    "agentUrl": "http://127.0.0.1:8181"
  },
  "subject": "agent:ai-assistant",
  "servers": {
    "database": {
      "command": "node",
      "args": ["./my-database-mcp-server.js"]
    }
  }
}
  1. MCP クライアント(例:Claude Code)に追加します:
claude mcp add --transport stdio vengtoo-gateway -- \
  npx vengtoo-mcp-gateway --config /path/to/gateway.config.json

設定

設定スキーマ
フィールド型必須説明
vengtoo.agentUrlstring*ローカル Vengtoo Agent の URL(ローカルモード)
vengtoo.cloudUrlstring*Vengtoo Cloud API の URL(クラウドモード)
vengtoo.apiKeystringVengtoo Cloud の API キー(または VENGTOO_API_KEY 環境変数を設定)
vengtoo.timeoutMsnumber認可リクエストのタイムアウト(デフォルト:5000)
subjectstringyesツール呼び出しを行うエージェントの ID
subjectTypestringサブジェクトの種類(デフォルト:"agent")
resourceTypestring認可チェック対象のリソースの種類(デフォルト:"mcp_tool")
serversobjectyesプロキシする下流 MCP サーバーのマップ
transportstring呼び出し元のトランスポート:"stdio"(デフォルト)または "http"。トランスポートを参照
httpobjectHTTP トランスポート設定(transport が "http" の場合に使用)

* agentUrl(ローカルモード)または cloudUrl(クラウドモード)のいずれかを指定してください。

servers の各エントリは次のとおりです:

フィールド型必須説明
commandstringyesMCP サーバーを起動するコマンド
argsstring[]コマンド引数
envobject追加の環境変数

モード

クラウドモード

管理されたポリシーを利用するために Vengtoo Cloud に接続します:

{
  "vengtoo": {
    "cloudUrl": "https://api.vengtoo.com/access/v1/evaluation",
    "apiKey": "vgt_..."
  },
  "subject": "agent:prod-assistant",
  "servers": {
    "database": {
      "command": "node",
      "args": ["./db-server.js"]
    }
  }
}
ローカルモード

オフラインで完結する認可を行うため、.rego ポリシーファイルを使って Vengtoo Agent をローカルで実行します:

# Start the agent with your policy
vengtoo-agent --policy ./policy.rego
{
  "vengtoo": {
    "agentUrl": "http://127.0.0.1:8181"
  },
  "subject": "agent:dev-assistant",
  "servers": {
    "database": {
      "command": "node",
      "args": ["./db-server.js"]
    }
  }
}

トランスポート

ゲートウェイは、ポリシーが適用されたツールを、2 種類のトランスポートのいずれかで呼び出し元に公開します。

stdio(デフォルト)

stdin/stdout 経由で MCP を使用するローカルのサブプロセスとして実行されます。単一のデスクトップエージェント(Claude Desktop、Cursor、Claude Code)に適した方法です。ネットワークへの公開はありません。

HTTP(リモート)

Streamable HTTP MCP サーバーを URL で実行するため、リモートエージェント(または同時に実行される複数のエージェント)が、1 つのガバナンス対象ゲートウェイを共有できます。--http(または設定内の "transport": "http")で有効にします:

vengtoo-mcp-gateway --config gateway.config.json --http --port 8808
{
  "vengtoo": { "cloudUrl": "https://api.vengtoo.com/access/v1/evaluation", "apiKey": "vgt_..." },
  "subject": "agent:prod-assistant",
  "transport": "http",
  "http": {
    "port": 8808,
    "host": "0.0.0.0",
    "path": "/mcp",
    "authTokens": ["<caller-token>"],
    "allowedHosts": ["gateway.example.com"]
  },
  "servers": { "database": { "command": "node", "args": ["./db-server.js"] } }
}

HTTP 設定(http.*):

フィールド型デフォルト説明
portnumber8808リッスンする TCP ポート
hoststring127.0.0.1バインドするインターフェース。0.0.0.0 はリモート接続を許可します
pathstring/mcpMCP エンドポイントの URL パス
callersobject[]-呼び出し元ごとの ID:{ "token": "...", "subject": "agent:claude" }。各ベアラートークンは、それぞれ固有の subject として認証されます
authTokensstring[]-匿名ベアラートークン。アクセスを許可し、グローバルな subject として実行します
allowedHostsstring[]-DNS リバインディング保護を有効にし、リストにない Host を含むリクエストを拒否します
allowedOriginsstring[]-DNS リバインディング保護を有効にし、リストにない Origin を含むリクエストを拒否します

呼び出し元ごとの ID。 各エージェントに固有のトークンと subject を割り当てると、共有ゲートウェイを通じて、ポリシーと監査ログに各呼び出し元の実際の ID が記録されます。

"http": {
  "port": 8808,
  "callers": [
    { "token": "<claude-token>", "subject": "agent:claude" },
    { "token": "<cursor-token>", "subject": "agent:cursor" }
  ]
}

VENGTOO_GATEWAY_HTTP_CALLERS="<token>=agent:claude,<token>=agent:cursor" でも設定できます。セッションは、それを開始したトークンに紐付けられます。別の呼び出し元が他の呼び出し元のセッション ID を提示すると 401 が返されるため、セッションをまたいで ID が共有されることはありません。authTokens に記載されたトークンを使う場合(または callers が省略されている場合)、設定のグローバルな subject として実行されます。

安全性: ゲートウェイは、呼び出し元認証(callers または authTokens)なしで非ループバックインターフェースにバインドすることを拒否します。トークンを設定するか、オープンエンドポイントを意図的に公開する場合は VENGTOO_GATEWAY_ALLOW_UNAUTHENTICATED=true を設定してください。認証なしの GET /healthz ライブネスプローブは常に応答します。

⚠️ セキュリティ:Vengtoo は、このゲートウェイが指定する subject を信頼します。 上記の callers によるトークン→subject のマッピング(このゲートウェイ自身の設定で管理)は適切な方法であり、クライアントが送信するヘッダーを信頼することとは異なります。呼び出し元クライアントが送信するヘッダーやフィールドから subject を決定するように変更してはいけません。そうすると、任意の呼び出し元が任意の subject を名乗り、テナント内でその権限を引き継げるようになります。このゲートウェイを別のリバースプロキシの背後に置く場合、そのプロキシが呼び出し元の選択した任意のベアラートークンや subject を転送できないようにしてください。

CLI フラグ

フラグ説明
--config <path>ゲートウェイ設定ファイルのパス(デフォルト:./gateway.config.json)
--httpstdio の代わりに HTTP でサービスを提供します
--port <n>HTTP リッスンポート(デフォルト:8808。--http 対応の設定が適用されます)
--host <h>HTTP バインドインターフェース(デフォルト:127.0.0.1)
--path <p>HTTP エンドポイントのパス(デフォルト:/mcp)
--list-tools設定済みの下流サーバーのすべてのツールを一覧表示して終了します
--generate-policy [path]設定済みのツール向けのポリシーファイル(.rego)のひな形を生成します(デフォルト:policy.rego)

環境変数による上書き:VENGTOO_API_KEY、VENGTOO_AGENT_URL、VENGTOO_SUBJECT、 VENGTOO_GATEWAY_TRANSPORT(http)、VENGTOO_GATEWAY_PORT / PORT、VENGTOO_GATEWAY_HOST、 VENGTOO_GATEWAY_PATH、VENGTOO_GATEWAY_HTTP_TOKENS(カンマ区切り)、VENGTOO_GATEWAY_ALLOW_UNAUTHENTICATED。

MCP クライアントの設定

ゲートウェイは stdio MCP サーバーとして実行されます。下流サーバーに直接接続する代わりに、MCP クライアントからゲートウェイに接続してください。

Claude Code
claude mcp add --transport stdio vengtoo-gateway -- \
  npx vengtoo-mcp-gateway --config /path/to/gateway.config.json
Cursor

.cursor/mcp.json に追加します:

{
  "mcpServers": {
    "vengtoo-gateway": {
      "command": "npx",
      "args": ["vengtoo-mcp-gateway", "--config", "/path/to/gateway.config.json"]
    }
  }
}
Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "vengtoo-gateway": {
      "command": "npx",
      "args": ["vengtoo-mcp-gateway", "--config", "/path/to/gateway.config.json"]
    }
  }
}
VS Code / GitHub Copilot

.vscode/mcp.json に追加します:

{
  "servers": {
    "vengtoo-gateway": {
      "type": "stdio",
      "command": "npx",
      "args": ["vengtoo-mcp-gateway", "--config", "/path/to/gateway.config.json"]
    }
  }
}

サンプルポリシーを使ったエンドツーエンドの例については、demo/ をご覧ください。

ロードマップ

予定されている機能(呼び出し元ごとの OAuth、下流の耐障害性、動的なツール一覧、メトリクス、リモート下流サーバーなど)については、ROADMAP.md をご覧ください。

フィードバック

ライセンス

Apache-2.0。詳しくは LICENSE をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。