
NV oOS Gateway
io.github.nvdigitalsolutions由 GitHub 帳號 nvdigitalsolutions 發布v0.3.1更新於 Nov 4, 2026
Streamable HTTP MCP gateway for NV oOS fleets — one API key, namespaced tools, quotas and policy.
概覽
遠端 MCP 閘道,用一組 API 金鑰曝露多個 NV oOS WordPress 站台的工具,並提供命名空間、配額與政策控管。
- 可以做什麼
- 列出並呼叫金鑰所綁定的所有 NV oOS WordPress 站台工具,合併成帶站台前綴的清單,例如 site-a.create_post
- 透過閘道執行站台工具,閘道會把 initialize、tools/list 與 tools/call 轉送到各站台原生的 MCP 端點
- 用 dry-run 參數試算呼叫而不實際執行,回報政策與配額是否放行
- 透過僅限維運權杖的管理端點查看站台健康狀態、生效政策與配額表,以及各站台的目錄狀態
- 當閘道設定為受保護資源時,可用 OAuth 2.1 權杖取代靜態金鑰
- 適用情境
- 適合需要以單一端點與單一憑證同時操作多個 NV oOS WordPress 站台的情況,也適合希望在站台之上統一設定工具配額、拒絕或審批規則,並依站台區分工具名稱的團隊。
- 執行需求
- 遠端 streamable HTTP 端點,不需本機安裝。需要一組綁定到一個或多個站台 slug 的 NV Digital Solutions 閘道 API 金鑰,透過 Authorization Bearer 標頭送出。可選擇使用外部授權伺服器的 OAuth 2.1。需要能連線到閘道及所綁定的站台。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 NV oOS Gateway,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.nvdigitalsolutions%2Fnvoos-mcp-gateway/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"nv-oos-gateway": {
"type": "http",
"url": "https://mcp.nvoos.pro/mcp"
}
}
}README
NV oOS MCP Gateway
==================
A public, fleet-scoped Model Context Protocol endpoint for the
NV oOS (Open Operator System)
WordPress platform. One API key, every bound site — tools appear namespaced
as <site-slug>.<tool>.
The gateway is an MCP aggregating proxy speaking streamable HTTP
(MCP 2026-07-28): it authenticates callers with a public API key, forwards
initialize / tools/list / tools/call to the bound NV oOS sites' native
/wp-json/mcp-ai/v1/mcp endpoints using Fleet Operator tokens, and keeps
the fleet surface collision-free by prefixing tool names per site.
Deployment target: Cloudways Velocity (managed Node hosting) at
https://mcp.nvoos.pro. See
docs/operations/deployment/mcp-gateway-velocity-setup.md.
One-way mirror: this addon is the canonical source and is synced to the standalone repo
nvdigitalsolutions/nvoos-mcp-gateway(branchmain) bysync-mcp-gateway.yml, which snapshots the subtree as one commit per sync and pushes without--force— the mirror main stays a linear fast-forward line, so hosting platforms (Cloudways Velocity) auto-deploy on every sync. Never commit to the standalone repo directly — the next sync overwrites it.
Endpoints
Configuration (env only)
Slug → env suffix mapping: site-a → NVOOS_SITE_SITE_A_* (uppercase,
hyphens → underscores).
Example
Policy & quotas (Proposal 094)
Per-tool quotas and declarative policy ride on top of the group budgets. Sites remain the deep enforcement layer (per-tool RPM, token budgets, iteration caps, capability boundaries, nefarious-usage auto-shutdown) — the gateway adds the fleet layer and can only tighten, never weaken.
Quotas
Breaches return HTTP 429 + RFC 9558 headers
(RateLimit-Limit/Remaining/Reset, RateLimit-Policy) with the JSON-RPC
error -32099. Buckets are scoped (key × site × tool) — one noisy key
cannot exhaust another's budget.
Policy grammar
First match wins. Effects: deny (403 + -32001), require_approval
(428 + -32002 with a redacted preview). Conditions: tool.match (glob),
site, key, time.window (IANA tz, ISO weekdays 1–7, midnight-crossing
windows), geo.country (ISO alpha-2). Denied tools are filtered out of
tools/list entirely (kept out of model context).
Inspection
dryRun: trueontools/callevaluates policy + quotas without executing or consuming — the result carrieswould_execute,policy, andquota.POST /admin/policy-simreplays a candidate policy against the last 200 recorded calls (argument keys only) and diffs it against the live policy.SHADOW_POLICYevaluates in parallel and logs — never enforces.
Tool namespacing
tools/listmerges every site bound to the key and prefixes names:site-a.create_post,site-b.woo_get_products.tools/callaccepts the prefixed name (always) or a bare name when the key is bound to exactly one site (passthrough mode).- A failing upstream degrades the list to a
_meta.gateway.errorsentry instead of failing the whole call. - v1 aggregation limitation:
resources/*andprompts/*use the first bound site.
Behavior & security
- Protocol negotiation:
initializeechoes the highest protocol version both sides support (2026-07-28→2024-11-05), defaulting to2024-11-05when the client sends no version — strict clients (Zed, Claude Desktop) abort with "Unsupported protocol version" when the server hardcodes a version they do not speak. - Stateless — no sessions, no SSE in v1 (the July 2026 spec revision makes stateless transport first-class).
- Fail-closed: no keys configured in strict mode → boot refuses; a key bound
to no configured site → 503; unknown key → 401 with
WWW-Authenticate. - Rate limits are per public key (one noisy key cannot exhaust another's budget); upstream tokens are header-only and never appear in responses, logs, or errors.
- Auth: static API keys in v1; OAuth 2.1 (RFC 8414 + dynamic client registration) is the documented upgrade path.
Claude Code plugin
The addon ships a Claude Code plugin (.claude-plugin/plugin.json,
commands/connect.md, skills/gateway/) that syncs to the mirror repo and
doubles as the marketplace source:
Enabling the plugin prompts for the gateway API key (stored securely as a
sensitive userConfig option) and substitutes it into the MCP server's
Authorization header.
OAuth 2.1 resource server (opt-in)
With GATEWAY_OAUTH_ISSUER set, the gateway acts as an RFC 9728 protected
resource alongside static keys:
GET /.well-known/oauth-protected-resource(+ the/mcppath-insertion variant) serves the protected-resource metadata document (inert 404 when OAuth is unconfigured).- 401 responses carry
WWW-Authenticate: Bearer resource_metadata="…", scope="…"so MCP clients can run the OAuth 2.1 authorization-code + PKCE flow against the configured authorization server. - JWT bearer tokens validate against the AS JWKS (cached, fail-closed):
signature,
iss,aud(RFC 8707 resource binding),exp/nbf, and scope. - Site binding is scope-based: each
site:<slug>scope grants access to that bound site (the read-onlysite:readscope is advertised for future fine-grained enforcement). Tokens granting no configured site get 403insufficient_scope. - Upstream proxying is unchanged: the gateway always exchanges for the site's own Fleet Operator token — OAuth tokens are never forwarded upstream (no confused-deputy passthrough).
Authorization server: any OAuth 2.1 AS with RFC 8414 metadata + JWKS (Auth0 is the platform convention). Dynamic client registration (RFC 7591) belongs to the AS, not the gateway.
Development
Local smoke test against the docker compose dev site:
Ecosystem discovery
The public endpoint https://mcp.nvoos.pro/mcp is listed in the official
MCP Registry (registry.modelcontextprotocol.io) as
io.github.nvdigitalsolutions/nvoos-mcp-gateway — a streamable-HTTP remote
with a required Authorization header. The registry metadata lives in
server.json and is published with the mcp-publisher
CLI. Community directories (mcpservers.org, mcp.directory, PulseMCP, Glama)
carry entries that point back here; the GET / landing page is the
directory-reviewer surface.
License
GPL-3.0-or-later — see the repository LICENSE.
來源:addons/mcp-gateway/README.md,提交 a11903e
工具
0版本歷史
3- v0.3.1最新Nov 4, 2026
- v0.3.0Nov 3, 2026
- v0.2.0Nov 1, 2026
評分
已滿足適用檢查項的 75%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。
