
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 分
请在仓库或注册中心条目中声明许可证。
