mcp-prov
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 -dprov-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.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux (community):
~/.config/Claude/claude_desktop_config.json
完全な例はexamples/claude_desktop_config.example.jsonを参照。
環境変数
変数 | 必須 | デフォルト | 説明 |
| ✅ | — | アップストリームに送信される |
| ✅ (si | — | MCPクライアントが |
| ❌ |
| アップストリームエンドポイント |
| ❌ |
|
|
| ❌ |
| HTTPリスナーのバインド |
| ❌ |
| ポート |
| ❌ |
| エンドポイントのパス |
| ❌ |
| キャッシュTTL(秒)(0 = オフ) |
| ❌ |
| JSON-linesログのディレクトリ |
公開ツール
アップストリームのすべてのツールはそのまま再公開されます(執筆時点で32個)。さらに複合ツールが1つあります:
diagnostico_completo(service_number)—contexto_servicio→Topologia→(サブプロダクトがISIの場合)ISI_Check_IPを呼び出し、グループ化された要約を返します。サービス番号から迅速な診断を行うための「エントリポイント」として便利です。
アップストリームツールの詳細は、postman/のPostmanコレクションを参照。
キャッシュ
決してキャッシュされないツール(アクティブな効果や揮発性データ):
Ping_toolATA_Test_1,ATA_Test_2,ATA_Test_3Gestion_ACSObtener_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を参照。
This server cannot be deployed
Maintenance
Related MCP Connectors
Open-source Zapier/n8n alternative as an MCP server: agents build, run and debug your workflows.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Related MCP Servers
- AlicenseAqualityBmaintenanceA 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.141,265 npm3MIT
- AlicenseNot gradedqualityDmaintenanceA standalone MCP server that exposes Rancher-side tools, forwards Authorization headers or uses configured credentials, and supports HTTP and stdio transports.MIT
- AlicenseNot gradedqualityAmaintenanceLifts local stdio MCP servers into remote Streamable HTTP endpoints for cloud-hosted AI clients, with bearer-token auth and tool policy filtering.15 npmMIT
- AlicenseNot gradedqualityAmaintenanceA local stdio MCP server that authenticates to remote OAuth-protected MCP servers using the client_credentials grant, handling token acquisition and request forwarding.56 npm2Apache 2.0