Skip to content

MCP servers

hipmmcode is a full Model Context Protocol client: stdio, HTTP, and SSE transports, OAuth 2.0 sign-in, standard .mcp.json files, and a trust gate for project-supplied servers. Each connected server's tools appear to the model as mcp__<server>__<tool>; its resources via ListMcpResources / ReadMcpResource.

Adding servers

bash
# stdio — everything after `--` is the subprocess command
hipmmcode mcp add fs -- npx -y @modelcontextprotocol/server-filesystem /tmp

# HTTP
hipmmcode mcp add --transport http notion https://mcp.notion.com/mcp

# HTTP with an auth header
hipmmcode mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer <PAT>"

# raw JSON (same shape as a .mcp.json entry)
hipmmcode mcp add-json weather '{"type":"http","url":"https://…"}'

# a packaged .mcpb bundle
hipmmcode mcp add-mcpb ./server.mcpb

Useful flags: -e KEY=VALUE (stdio env), -H "Header: V" (repeatable), --transport stdio|http|sse (inferred from URL when omitted), --client-id / --callback-port (OAuth).

Scopes

ScopeWhere it livesVisibility
local (default)your config, keyed to this projectjust you, just here
project.mcp.json in the repoeveryone on the repo — requires approval (below)
useryour configyou, in every project

hipmmcode mcp add -s project … writes the standard .mcp.json, so the whole team shares the server definition.

Managing

bash
hipmmcode mcp list             # merged view across scopes, marks [project, pending approval]
hipmmcode mcp get <name>       # resolved config, secrets masked
hipmmcode mcp remove <name>    # scope auto-detected, or -s to pin
hipmmcode mcp login <name>     # browser OAuth flow for protected servers (--force re-auth)
hipmmcode mcp reset-project-choices [--all]

Live in the REPL, /mcp opens the interactive panel: ↑/↓ select → view tools / reconnect / enable / disable / approve / reject:

hipmmcode
 /mcp

MCP servers  3 configured · 1 pending approval
 notion   http · connected · 12 tools
  fs       stdio · connected · 8 tools
  corp     sse · [project, pending approval]

Enter: View tools · r Reconnect · d Disable · a Approve · x Reject

Trust gate

A server that arrives via a project's .mcp.json stays pending until you approve it (/mcp approve or the panel) — checked-in config can't silently gain tool access. Decisions persist per project; reset with mcp reset-project-choices.

Agent-driven configuration

The agent can manage MCP itself through the McpConfig tool — "connect the Notion MCP server" just works, writing standard .mcp.json. Mutating operations are gated by the permission engine (prompt in default mode, fail-closed when unattended).

Live tool refresh

When a connected server's tool set changes mid-session (a server added, renamed, or removed a tool), the agent can call RefreshMcpTools to re-run tools/list over the existing connections and publish the changed schemas before its next request — no session restart needed. It fails safe: a failed refresh keeps the previous catalog, stale concurrent results can't overwrite newer ones, and a disconnected server is never silently redialed (reconnect from the /mcp panel instead).

Server config shape

.mcp.json / mcpServers entries:

json
{
  "mcpServers": {
    "fs":     { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"], "env": {} },
    "notion": { "type": "http",  "url": "https://mcp.notion.com/mcp", "headers": {} },
    "corp":   { "type": "sse",   "url": "https://mcp.corp.dev/sse",
                "headersHelper": "vault read -field=hdrs secret/mcp",
                "oauth": { "clientId": "", "callbackPort": 8080, "scopes": "read write" },
                "timeout": 30000, "alwaysLoad": true }
  }
}

${VAR} environment expansion is supported in values; headersHelper runs a shell command that prints headers as JSON (short-lived tokens).

External sync & CLI overrides

  • mcpSyncFromClaude (default on) auto-imports MCP servers already configured for the .claude ecosystem, so existing setups work immediately. hipmmcode mcp sync off disables; bare hipmmcode mcp sync does a one-shot copy into user scope instead.
  • --mcp-config <file|json> (repeatable) loads extra servers for one run; --strict-mcp-config uses only those, ignoring project/user/plugin/IDE sources.