Skip to main content
Glama

mcp-prov

n8n(Metrotelのプロビジョニングインスタンス)内の既存のMCPサーバーをラップするPython製のローカルMCPプロキシ。バックエンドに触れることなく、キャッシュ、ロギング、診断用複合ツール、独自のBearer認証を追加します。

Docker Hubイメージ: metrotel/mcp-prov

  • 🌐 stdio(Claude Code / 組み込みクライアント)またはHTTP(Claude Desktopなど)で通信

  • 🔐 アップストリームトークンを分離:クライアントに漏れることはありません

  • ⚡ 冪等な読み取り用のインメモリキャッシュ60秒(env varで設定)

  • 📝 各ツール呼び出しのJSON-linesログ(tool、args、cached、duration_ms、error)

  • 🛠 アップストリームの32ツール + 複合ツールdiagnostico_completoを公開

  • ♻️ アップストリームがセッションを閉じた場合に再初期化(n8n MCPの既知のバグ)

  • 🚀 デプロイ: Docker / Docker Swarm / Kubernetes / systemdユーザーユニット / スタンドアロンPython

  • 💾 永続ログ用の/dataボリューム(将来のキャッシュも)

存在理由

Metrotelのn8nフローに組み込まれたMCPサーバーは、一定時間非アクティブになるとlong-poll SSEを閉じ、mcp-remoteなどのクライアントがノイズの多い再試行を開始します。さらに、アップストリームトークンは設定JSONに平文で保存されていました。

このプロキシは:

  • long-pollを排除: 各ツール呼び出しはアップストリームへの独自のHTTPリクエストを開き、終了時に閉じます。

  • アップストリームトークンを分離(X-Prov-MCP-Key):プロキシのenvファイルのみに存在し、Claude Desktop / Claude Codeの設定にはありません。

  • キャッシュを追加:繰り返される読み取り(例:同じcontexto_servicioを数分以内に複数回)に対して。

  • 複合ツールを追加:複数のアップストリームツールを連鎖させて要約を返します。モデルが1回の呼び出しで済むのに3回の呼び出しを調整する必要を防ぎます。

Related MCP server: rancher-mcp

要件

  • Python 3.10+

  • uv(推奨、またはpip)

  • アップストリームMCPサーバーへのネットワークアクセスと有効なX-Prov-MCP-Keyヘッダー

クイックスタート

Docker(推奨、ローカルビルド不要)

docker run -d --name prov-mcp -p 8767:8767 \
  -e PROV_MCP_KEY='pmcc_...' \
  -e PROV_MCP_AUTH_TOKEN='pmcp_...' \
  -v prov-data:/data \
  --restart unless-stopped \
  metrotel/mcp-prov:0.2.2

またはリポジトリのdocker-compose.ymlを使用:

git clone https://github.com/datacenter-metrotel/mcp-prov.git
cd mcp-prov
cp .env.example .env && chmod 600 .env    # editá .env
docker compose up -d

prov-dataボリューム(/data/logsにマウント)に永続化されるログ:

docker exec prov-mcp tail -f /data/logs/calls.log

ネイティブHTTPモード(Dockerなし)

git clone https://github.com/datacenter-metrotel/mcp-prov.git
cd mcp-prov

cp .env.example .env
chmod 600 .env
# editá .env con los valores reales

# Arrancar en foreground
uvx --from . prov-mcp-proxy
# server escuchando en http://0.0.0.0:8767/mcp

確認:

KEY=$(grep '^PROV_MCP_AUTH_TOKEN=' .env | cut -d= -f2)
curl -sS -L -X POST http://127.0.0.1:8767/mcp \
  -H "Authorization: Bearer $KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}'

stdioモード(Claude Code / Cursorなど、プロセスを起動するクライアント向け)

export PROV_MCP_KEY='pmcc_...'
export PROV_MCP_TRANSPORT=stdio
uvx --from . prov-mcp-proxy

そして.mcp.json(Claude Code)内:

{
  "mcpServers": {
    "prov": {
      "command": "uvx",
      "args": ["--from", "/ruta/al/repo", "prov-mcp-proxy"],
      "env": { "PROV_MCP_KEY": "${PROV_MCP_KEY}" }
    }
  }
}

Kubernetes / Docker Swarmへのデプロイ

  • Kubernetes:envFrom.secretRef + PersistentVolumeClaimを使用。 k8s/README.mdを参照。

  • Docker Swarm:raftで暗号化されたシークレット + ボリューム。 swarm/README.mdを参照。

systemdユーザーユニットとしてのデプロイ

テンプレートはsystemd/prov-mcp-proxy.service.example:

mkdir -p ~/.config/systemd/user ~/.config/prov-mcp-proxy
cp systemd/prov-mcp-proxy.service.example ~/.config/systemd/user/prov-mcp-proxy.service
cp .env.example ~/.config/prov-mcp-proxy/env
chmod 600 ~/.config/prov-mcp-proxy/env
# editá ~/.config/prov-mcp-proxy/env con los valores reales

systemctl --user daemon-reload
systemctl --user enable --now prov-mcp-proxy.service
systemctl --user status prov-mcp-proxy.service

ログインなしで再起動後も存続させるには: sudo loginctl enable-linger $USER。

Claude Desktopからの使用

claude_desktop_config.jsonを編集:

{
  "mcpServers": {
    "prov": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "http://<HOST_IP>:8767/mcp",
        "--allow-http",
        "--transport", "http-only",
        "--header", "Authorization:Bearer <PROV_MCP_AUTH_TOKEN>"
      ]
    }
  }
}

設定ファイルのパス:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux (community): ~/.config/Claude/claude_desktop_config.json

完全な例はexamples/claude_desktop_config.example.jsonを参照。

環境変数

変数

必須

デフォルト

説明

PROV_MCP_KEY

✅

—

アップストリームに送信されるX-Prov-MCP-Keyヘッダー

PROV_MCP_AUTH_TOKEN

✅ (si TRANSPORT=http)

—

MCPクライアントがAuthorizationで送信する必要があるBearer

PROV_MCP_URL

❌

https://n8n-asegured.metrotel.com.ar/mcp/prov_mcp_cc

アップストリームエンドポイント

PROV_MCP_TRANSPORT

❌

stdio

stdioまたはhttp

PROV_MCP_HTTP_HOST

❌

127.0.0.1

HTTPリスナーのバインド

PROV_MCP_HTTP_PORT

❌

8767

ポート

PROV_MCP_HTTP_PATH

❌

/mcp

エンドポイントのパス

PROV_MCP_CACHE_TTL

❌

60

キャッシュTTL(秒)(0 = オフ)

PROV_MCP_LOG_DIR

❌

~/.cache/prov_mcp_proxy

JSON-linesログのディレクトリ

公開ツール

アップストリームのすべてのツールはそのまま再公開されます(執筆時点で32個)。さらに複合ツールが1つあります:

  • diagnostico_completo(service_number) — contexto_servicio → Topologia →(サブプロダクトがISIの場合)ISI_Check_IPを呼び出し、グループ化された要約を返します。サービス番号から迅速な診断を行うための「エントリポイント」として便利です。

アップストリームツールの詳細は、postman/のPostmanコレクションを参照。

キャッシュ

決してキャッシュされないツール(アクティブな効果や揮発性データ):

  • Ping_tool

  • ATA_Test_1, ATA_Test_2, ATA_Test_3

  • Gestion_ACS

  • Obtener_backup_equipo

残りは設定可能なTTL(デフォルト60秒)でキャッシュに入ります。キーにはツール名 + 正規化された引数のSHA1ハッシュが含まれます。

ログ

各ツール呼び出しは~/.cache/prov_mcp_proxy/calls.logにJSON行として記録され、ts、tool、args、cached、duration_ms、errorが含まれます。自動ローテーションは5 MB × 3。

セキュリティ

SECURITY.mdを参照。要約:

  • HTTPモードではBearer必須(Starletteミドルウェア)。

  • アップストリームトークンはプロキシから外部に出ることはありません。

  • 認証情報を含むenvファイルはchmod 600で、gitの管理外。

  • .envは.gitignoreに含める。

ライセンス

MIT — LICENSEを参照。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    A stdio MCP proxy that connects to one or more upstream MCP servers and exposes their tools, resources, and prompts through a single endpoint with a configurable middleware pipeline.
    14
    1,265 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A standalone MCP server that exposes Rancher-side tools, forwards Authorization headers or uses configured credentials, and supports HTTP and stdio transports.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Lifts local stdio MCP servers into remote Streamable HTTP endpoints for cloud-hosted AI clients, with bearer-token auth and tool policy filtering.
    15 npm
    MIT