MCP KB server

Expose Nitpick's knowledge base to Claude Code, Cursor, Cline, and any MCP-aware client.

Nitpick v2.0 ships a Model Context Protocol (MCP) server backed by the project knowledge base. Any MCP-aware client — Claude Code, Claude Desktop, Cursor, Cline, Continue — can query your KB directly: page models, bugs, flaky tests, flows. No agent runtime needed.

How it works

Claude Code / Cursor / Cline
        │  stdio JSON-RPC

nitpick mcp serve


  KnowledgeBase
  ./knowledge-base/

nitpick mcp serve starts an MCP server on stdio. Your host reads its capabilities and routes nitpick-kb.* tool calls to it. The same KnowledgeBase class used by the full agent runtime serves all requests — so results are always consistent with what nitpick run produced.

Tools

ToolDescription
kb_list_pagesList all pages in the page graph with metadata
kb_get_pageReturn the full Derived UI Model for a page
kb_searchFull-text search across page models, bugs, and flows
kb_list_open_bugsReturn unfixed bugs across all pages
kb_get_flowReturn a multi-role flow definition
kb_add_bugRecord a new bug (read-write trust)
kb_note_flakyMark a test as flaky (read-write trust)
kb_put_resolved_questionPersist a Phase 3.5 approval resolution (read-write trust)

The first five tools are always available. The write tools (kb_add_bug, kb_note_flaky, kb_put_resolved_question) require mcp.kb.trust: read-write in nitpick.yaml.

Configuration

In your project’s nitpick.yaml:

mcp:
  kb:
    trust: read-write   # read-write | read-only | deny
Trust tierWhat it allows
read-writeAll 8 tools. Agents can write bugs, flaky notes, and resolutions back to the KB.
read-only5 read-only tools. Clients can query but not modify.
denyMCP server starts but registers no tools.

Setup per host

Claude Code

Add the server to ~/.claude/settings.json:

{
  "mcpServers": {
    "nitpick-kb": {
      "command": "nitpick",
      "args": [
        "mcp", "serve",
        "--kb", "/absolute/path/to/your-project/knowledge-base",
        "--trust", "read-write"
      ]
    }
  }
}

The KB path must be absolute. Claude Code resolves tool server commands from its own working directory, not yours.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/claude/claude_desktop_config.json (Linux):

{
  "mcpServers": {
    "nitpick-kb": {
      "command": "nitpick",
      "args": [
        "mcp", "serve",
        "--kb", "/absolute/path/to/your-project/knowledge-base",
        "--trust", "read-only"
      ]
    }
  }
}

Cursor

Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):

{
  "mcpServers": {
    "nitpick-kb": {
      "command": "nitpick",
      "args": [
        "mcp", "serve",
        "--kb", "/absolute/path/to/your-project/knowledge-base",
        "--trust", "read-write"
      ]
    }
  }
}

Cline / Continue

Follow the same pattern — command nitpick, args ["mcp", "serve", "--kb", "<absolute-path>"]. Both clients consume standard MCP stdio servers.

What the agent can do with the KB

When connected via MCP, a Claude Code or Cursor session can:

  • Understand your app before writing code: ask “what fields does /tasks/new have?” and get the full Derived UI Model
  • See open bugs: ask “what bugs were found last run?” without running anything
  • Check for flaky tests: query flaky test history before reviewing a failing CI run
  • Write findings back: if trust is read-write, the AI can add bugs it discovers during a code review session directly to the KB

Running as part of a session

You don’t need to start the server manually — your host starts it on demand when you open a session. The server process is spawned once per session and stays alive until the session ends.

To test the server manually:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | nitpick mcp serve --kb ./knowledge-base

You should see the tool manifest returned on stdout.

Next: auto-registration (v2.2)

v2.2 will ship nitpick mcp register, which auto-detects installed hosts and writes the nitpick-kb server entry into each one’s config. One command, no manual JSON editing.