Claude Code

Claude Code speaks remote HTTP MCP natively, so the integration is a single command.

Add it

Command
claude mcp add --transport http vulnetix https://mcp.vulnetix.com/mcp \
  --header "Authorization: ApiKey ${VULNETIX_ORG}:${VULNETIX_KEY}"

Confirm:

claude mcp list
vulnetix  http  https://mcp.vulnetix.com/mcp  ✓ connected
Config file

Edit ~/.claude.json and add under mcpServers:

{
  "mcpServers": {
    "vulnetix": {
      "type": "http",
      "url": "https://mcp.vulnetix.com/mcp",
      "headers": {
        "Authorization": "ApiKey <orgId>:<hex>"
      }
    }
  }
}

Restart Claude Code.

Which scope

claude mcp add takes --scope, and the choice decides where your key lands.

ScopeWritten toAvailable inKey in git?
local (default)Project section of ~/.claude.jsonThis project, only youNo
userUser section of ~/.claude.jsonEvery projectNo
project.mcp.json in the repoEveryone who clonesYes, unless you use a variable
claude mcp add --scope user --transport http vulnetix https://mcp.vulnetix.com/mcp \
  --header "Authorization: ApiKey ${VULNETIX_ORG}:${VULNETIX_KEY}"

--scope user is the right default: the server follows you into every repository and the credential never sits inside one.

Sharing with a team

Use --scope project so .mcp.json is committed, and keep the key out of it with an environment variable:

{
  "mcpServers": {
    "vulnetix": {
      "type": "http",
      "url": "https://mcp.vulnetix.com/mcp",
      "headers": {
        "Authorization": "ApiKey ${VULNETIX_ORG}:${VULNETIX_KEY}"
      }
    }
  }
}

Each developer exports their own:

export VULNETIX_ORG=...
export VULNETIX_KEY=...
Important Claude Code expands ${VAR} in .mcp.json, so the file stays safe to commit. Paste a literal key instead and it goes into git history on the next git add. If that has already happened, rotate the key.

Claude Code asks for approval the first time it sees a project-scoped server from a repository. That prompt is a security feature. Reset the decision with claude mcp reset-project-choices.

Confirm it works

Inside a session:

/mcp

You should see vulnetix connected with 31 tools and 33 prompts.

Then ask something the model cannot answer from memory:

Is CVE-2021-44228 still being actively exploited, and is there a CISA deadline?

Using the skill prompts

The 33 Pix workflows appear as slash commands, namespaced by server:

/mcp__vulnetix__vulnetix_vuln
/mcp__vulnetix__vulnetix_incident_respond
/mcp__vulnetix__vulnetix_fix

Sixteen of them drive your local machine and expect the Vulnetix CLI on your PATH, and each says so in its first paragraph. See Skill prompts.

Already using the Pix plugin?

They complement each other and share one credential. The Pix plugin adds hooks, subagents and capability detection that MCP has no equivalent for; the MCP server needs no CLI and works in every other client. Running both is fine, though you will see some workflows twice, once as a plugin skill and once as an MCP prompt.

Troubleshooting

Tools do not appear. Restart fully; /mcp shows the live connection state.

401 inside every tool result. The header is missing the org half. It must be ApiKey <orgId>:<hex>.

${VULNETIX_KEY} shows up literally. The variable was not exported in the shell that launched Claude Code. Export it in your rc file and start a new terminal.

A project server never loads. You likely declined the approval prompt. Run claude mcp reset-project-choices.