mcpField
N
NV oOS MCP Bridge

NV oOS MCP Bridge

Local
github.comDeveloper Tools7Updated 5d ago

About NV oOS MCP Bridge

NV oOS MCP Bridge relays MCP JSON-RPC messages between stdio-based clients and NV oOS WordPress endpoints over HTTP. It also provides an SSH variant that manages a port forward for SSH-only sites.

Key features

  1. 01Relay JSON-RPC between stdio and HTTP
  2. 02Connect to NV oOS WordPress MCP endpoints
  3. 03SSH variant manages a port forward
  4. 04Read configuration and secrets from environment

Use cases

  1. 01Connect a stdio-based editor to an HTTPS site
  2. 02Reach an SSH-only WordPress site through a tunnel

MCP support

Acts as a transport bridge for MCP clients that use stdio and NV oOS sites that expose an HTTP MCP endpoint. The SSH binary forwards connections for sites accessible only over SSH.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"nvdigitalsolutions-nvoos-mcp-bridge": {
"command": "npx",
"args": [
"-y",
"@nvdigitalsolutions/nvoos-mcp-bridge"
],
"env": {
"MCP_AI_BASE_URL": "<MCP_AI_BASE_URL>",
"MCP_AI_TOKEN": "<MCP_AI_TOKEN>",
"MCP_AI_HTTP_TIMEOUT": "<MCP_AI_HTTP_TIMEOUT>"
}
}
}
}
Run commandnpx -y @nvdigitalsolutions/nvoos-mcp-bridge
Environment variables to set
MCP_AI_BASE_URLFull URL of the NV oOS MCP endpoint (https://<site>/wp-json/mcp-ai/v1/mcp)
MCP_AI_TOKENSecretCredential (cred_*) or operator (op_*) token minted in Fleet Operator
MCP_AI_HTTP_TIMEOUTRequest timeout in milliseconds

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@nvdigitalsolutions/nvoos-mcp-bridge0.1.0-alpha.4

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

@nvdigitalsolutions/nvoos-mcp-bridge

Zero-dependency MCP stdio ↔ HTTP relay for NV oOS (Open Operator System) WordPress sites.

Every NV oOS site exposes a JSON-RPC 2.0 MCP endpoint at https://<site>/wp-json/mcp-ai/v1/mcp. Most editors and agents (Zed, Claude Desktop, Cursor, Codex) spawn MCP servers over stdio — this package bridges the two transports. Two binaries ship:

BinaryUse when
nvoos-mcpThe site is reachable over HTTPS (normal case)
nvoos-mcp-sshThe site is SSH-only (locked-down VPS / Cloudways droplet) — owns the ssh -N -L port-forward for you
npx -y @nvdigitalsolutions/nvoos-mcp-bridge@latest

Quick start (Zed)

zed: open settings → add to context_servers:

"nv-oos": {
  "source": "custom",
  "command": {
    "path": "npx",
    "args": ["-y", "@nvdigitalsolutions/nvoos-mcp-bridge@latest"],
    "env": {
      "MCP_AI_BASE_URL": "https://your-site.com/wp-json/mcp-ai/v1/mcp",
      "MCP_AI_TOKEN":    "cred_xxxxx.SECRET"
    }
  }
}

Then reload the Agent Panel (agent: restart language servers → or reopen the panel). Use the Fleet Operator admin screen (Settings → External Operators) to mint a scoped operator token and get a ready-pasted block.

SSH-only sites
"nv-oos-ssh": {
  "source": "custom",
  "command": {
    "path": "npx",
    "args": ["-y", "@nvdigitalsolutions/nvoos-mcp-bridge@latest", "ssh"],
    "env": {
      "MCP_AI_SSH_USER": "your-ssh-user",
      "MCP_AI_SSH_HOST": "203.0.113.10",
      "MCP_AI_SSH_PORT": "22",
      "MCP_AI_TOKEN":    "op_xxxxx.SECRET"
    }
  }
}

Pass ssh as the first argument to select the SSH binary via npx (npx exposes only the primary bin as the bare package name). SSH auth is key-only: ssh <user>@<host> must work non-interactively first.

Other clients

Same env vars, different shells — Claude Desktop (claude_desktop_config.json → mcpServers), Cursor (.cursor/mcp.json), VS Code (.vscode/mcp.json):

{
  "mcpServers": {
    "nv-oos": {
      "command": "npx",
      "args": ["-y", "@nvdigitalsolutions/nvoos-mcp-bridge@latest"],
      "env": {
        "MCP_AI_BASE_URL": "https://your-site.com/wp-json/mcp-ai/v1/mcp",
        "MCP_AI_TOKEN": "cred_xxxxx.SECRET"
      }
    }
  }
}

On Windows hosts, some clients need the cmd wrapper: "command": "cmd", "args": ["/c", "npx", "-y", "@nvdigitalsolutions/nvoos-mcp-bridge@latest"].


Configuration

All configuration is environment variables — never put tokens in args (they would show in process listings).

nvoos-mcp (HTTPS relay)
VariableRequiredDefaultPurpose
MCP_AI_BASE_URL✅—Full URL of the MCP endpoint, e.g. https://example.com/wp-json/mcp-ai/v1/mcp
MCP_AI_TOKEN⚠️—Bearer credential (cred_xxxxx.SECRET or operator op_xxxxx.SECRET); unauthenticated if unset
MCP_AI_HOST_HEADER—Override the HTTP Host header (sites that canonical-redirect on Host behind proxies/tunnels)
MCP_AI_HTTP_TIMEOUT120000Request timeout in ms
MCP_AI_ENV_FILE~/.nvoos-bridge.envEnv file for secrets (see below)
nvoos-mcp-ssh (SSH variant)

Adds MCP_AI_SSH_USER, MCP_AI_SSH_HOST (both required), MCP_AI_SSH_PORT (default 22), MCP_AI_SSH_REMOTE_HOST (default localhost), MCP_AI_SSH_REMOTE_PORT (default 80), MCP_AI_LOCAL_PORT (default: free port), MCP_AI_SSH_CMD (default ssh), MCP_AI_SSH_EXTRA_ARGS, MCP_AI_SSH_BATCH_MODE, MCP_AI_SSH_READY_MS (default 15000). Same token, Host-header, timeout, and env-file variables as the HTTPS relay.

Secret file

Keep tokens out of settings files:

# ~/.nvoos-bridge.env  (chmod 600)
MCP_AI_BASE_URL=https://your-site.com/wp-json/mcp-ai/v1/mcp
MCP_AI_TOKEN=cred_xxxxx.SECRET

Values already present in the process environment win over the file, so per-project overrides still work.


Behavior contract

  • Reads one JSON-RPC 2.0 object per stdin line, POSTs it to the endpoint (Authorization: Bearer …), writes the response as one stdout line.
  • Notifications (no id) get no response, ever.
  • All diagnostics go to stderr — stdout carries MCP messages only.
  • On stdin EOF, in-flight requests drain before exit.
  • The SSH tunnel is torn down when the relay exits — including on hard kill (the bridge holds ssh's stdin open for exactly this reason).

Development

The package files under bin/ are byte-identical copies of the repo's bin/mcp-bridge.js, bin/mcp-bridge-ssh.js, and bin/utils/env-file.js — the repo bin/ is canonical. Edit there, then:

npm run sync               # refresh the copies
npm run sync -- --check    # drift gate (run in CI)
npm test                   # node:test suite (in-process fake endpoint/ssh)
npm run pack:dry-run       # inspect the tarball before publishing

Optional Docker E2E against a live NV oOS site (skips when env is unset):

MCP_AI_BASE_URL=http://localhost:8000/wp-json/mcp-ai/v1/mcp \
MCP_AI_TOKEN=cred_xxxxx.SECRET \
npm run test:e2e

Ecosystem discovery

This package is listed in the official MCP Registry (registry.modelcontextprotocol.io) as io.github.nvdigitalsolutions/nvoos-mcp-bridge (stdio / npm). The registry name is declared via the mcpName field in package.json (ownership verification marker); the registry metadata itself lives in server.json and is published with the mcp-publisher CLI. Community directories (mcpservers.org, Glama, PulseMCP, mcp.directory, the awesome-mcp-servers list) carry entries that point back to this package and its registry record.

License

GPL-3.0-or-later — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.