Skip to main content

MCP Server

The VH3 AI MCP server exposes the full intelligence layer as Model Context Protocol tools. Any MCP-compatible client, Claude Desktop, Cursor, a custom agent, or your own toolchain, can connect directly without building middleware. Once connected, the client gets the same tools used by the Connie assistant: investigate, aggregate_jobs, jobs_feed, run_sentinels, reports_generate, search_outcomes, and more, with all credentials and routing handled server-side via JWT authentication.

Server details

Prerequisites

Claude Desktop and Cursor connect to remote MCP servers via a lightweight proxy called mcp-remote. It runs automatically through npx, which ships with Node.js.
1

Install Node.js (if not already installed)

Download the LTS installer for your platform from nodejs.org:
  • macOS: Download the .pkg installer from nodejs.org, open it, and click through the wizard. No terminal required.
  • Windows: Download the .msi installer. Make sure “Add to PATH” is checked during installation (this is the default).
After installing, verify by opening a terminal (macOS: Terminal.app, Windows: Command Prompt) and running:
Both should return a version number (e.g. v22.x.x). If npx is not recognised, Node.js is either not installed or not in your system PATH — see Troubleshooting below.
2

Confirm your IT policy allows outbound HTTPS

The MCP proxy makes outbound HTTPS connections to api.vh3connect.io and registry.npmjs.org (to fetch mcp-remote on first use). If your organisation uses a firewall or proxy, ask your IT team to allowlist these domains.
Why Node.js? Claude Desktop only supports local process (stdio) MCP servers in its config file. It cannot connect to remote HTTP/SSE endpoints directly. The mcp-remote proxy bridges the gap — Claude Desktop launches it as a local process, and it handles the network connection to VH3. This is the standard pattern recommended by the MCP specification.

Get your MCP token

Before connecting any client, you need a long-lived MCP token (valid for 90 days).
1

Log in to get a session JWT

Call the login endpoint with your email and password to obtain a standard session token:
Copy the authToken from the response.
2

Exchange it for an MCP token

Call the auth/mcp-token endpoint using your session token:
The response contains authToken (your 90-day MCP token) and expires_in: 7776000.
3

Store the token securely

Save the MCP token in an environment variable. Never commit it to source control.

Quick start: Claude Desktop

Claude Desktop connects to the VH3 MCP server via SSE using the mcp-remote proxy. Requires Node.js 18+.
1

Open your Claude Desktop config file

The config file location depends on your platform:You can also open it from Claude Desktop: Settings → Developer → Edit Config.Create the file if it does not exist.
2

Add the VH3 server

macOS:
claude_desktop_config.json
Windows:
claude_desktop_config.json
Replace YOUR_MCP_TOKEN with the token from Get your MCP token.
3

Restart Claude Desktop

Quit fully (Cmd+Q on macOS, File → Quit on Windows — closing the window is not enough) and reopen. You should see a hammer icon in the chat input. Click it to confirm the VH3 tools are listed.
4

Test with a query

Try: “How many jobs did we complete last week, broken down by engineer?”Claude will call aggregate_jobs and return a cited answer.
Windows users: You must use "command": "cmd" with "/c" as the first arg. Claude Desktop spawns the command directly without a shell, so npx alone will fail with spawn npx ENOENT. Wrapping it in cmd /c ensures Windows resolves npx via the system PATH.
The auth token is placed in the env block rather than inline in args. This is the recommended patternmcp-remote can misparse header values containing spaces when they appear directly in the args array on Windows.

Quick start: Cursor

Go to Cursor Settings → MCP and add a new server, or edit .cursor/mcp.json in your project root. Requires Node.js 18+. macOS:
.cursor/mcp.json
Windows:
.cursor/mcp.json
Replace YOUR_MCP_TOKEN with your token. See Get your MCP token.
Prefer environment variables over inline tokens. Set VH3_MCP_TOKEN in your shell profile and reference it from the config, or use Cursor Rules alongside the MCP connection to keep tokens out of config files.

Available tools

Once connected, these tools are available in any MCP-compatible client. No company_id or api_key inputs are needed, credentials are resolved automatically from your JWT.

FSI Intelligence

Jobs

Quotes & Invoices

investigate, reports_generate, and connie_chat have 10–17s expected latency. Some MCP clients have aggressive timeouts. If you see tool call failures on these endpoints, check your client’s timeout setting and increase it to at least 25 seconds.

Authentication

The MCP server uses JWT Bearer token authentication. Tokens are obtained via the auth/mcp-token endpoint (see Get your MCP token above). The JWT encodes your user identity. All tool calls are automatically scoped to your company, no company_id or api_key parameters are needed. Cross-tenant access is impossible.
Never commit your MCP token to source control. Use environment variables and reference them from your MCP client configuration.

Troubleshooting

spawn npx ENOENT (Windows)

Claude Desktop cannot find npx. Two possible causes:
  1. Node.js is not installed. Install it from nodejs.org and restart Claude Desktop.
  2. Node.js is installed but not in Claude Desktop’s PATH. Use "command": "cmd" with "/c" as the first arg (see Windows config above). Alternatively, use the full path to npx: "command": "C:\\Program Files\\nodejs\\npx.cmd".

npx is not recognized (Windows)

Same root cause as above — Node.js is not on the system PATH. Install Node.js using the .msi installer (not the zip), which adds it to PATH automatically. After installing, restart Claude Desktop (or reboot) so it picks up the new PATH.

”Not valid MCP server configuration”

The config JSON is malformed. Common causes:
  • Trailing comma after the last entry in an object or array.
  • Two separate JSON objects instead of one (e.g. mcpServers and preferences in separate {} blocks — they must be siblings in a single root object).
  • Using "url" or "headers" keys — Claude Desktop does not support these. Use the command + mcp-remote pattern shown above.
Paste your config into jsonlint.com to validate the JSON syntax.

Tools don’t appear after restart

  • Verify you fully quit Claude Desktop (Cmd+Q / File → Quit), not just closed the window.
  • Check logs: Settings → Developer → Open Logs Folder and look for mcp-remote stderr output.
  • Verify your token hasn’t expired (90-day lifetime). Re-run the token exchange if needed.
  • Confirm outbound HTTPS to api.vh3connect.io and registry.npmjs.org is not blocked by a firewall.

Tool calls timeout

investigate, reports_generate, and connie_chat can take 10–17 seconds. Some clients have aggressive timeouts. Increase your client’s tool call timeout to at least 25 seconds.

Further reading

Using the MCP server from custom agents

For agents built with the Anthropic SDK, OpenAI Agents SDK, or similar frameworks:

Tool selection guide for agents

When your agent receives a free-form question and needs to decide which tool to call: For a full system prompt you can paste directly into your agent, see the Claude.ai Projects and n8n Agent Prompts kits, both include routing logic optimised for agent use.

Pairing with AGENTS.md

If you’re using the MCP server inside a Cursor or Claude Code session, pair it with the AGENTS.md file in your project root. The MCP server handles execution; AGENTS.md handles routing logic, field name correctness, and the rules around what IDs to expose to users.

MCP Server (this page)

Handles execution, connects the client to the actual API, manages auth, returns real data.

AGENTS.md

Handles reasoning, tells the agent which tool to call, which parameters to pass, and how to present results.