SigMap

Local code-signature index for a repository, served to coding assistants as on-demand MCP tools

By Manoj Mallick (individual) JavaScript Local · stdio Developer tools

59 popularity score ★ 646 ↓ 884/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add sigmap -- npx -y sigmap --mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "sigmap": {
      "command": "npx",
      "args": [
        "-y",
        "sigmap",
        "--mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "sigmap": {
      "command": "npx",
      "args": [
        "-y",
        "sigmap",
        "--mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "sigmap": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "sigmap",
        "--mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.sigmap]
command = "npx"
args = ["-y", "sigmap", "--mcp"]
Gemini CLITerminal
gemini mcp add --scope user sigmap npx -- -y sigmap --mcp
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

FirstTerminal
git clone https://github.com/manojmallick/sigmap.git
Claude CodeTerminal
claude mcp add sigmap -- node '<ABSOLUTE_PATH_TO_CLONE>/gen-context.js' --mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "sigmap": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/gen-context.js",
        "--mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "sigmap": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/gen-context.js",
        "--mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "sigmap": {
      "type": "stdio",
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/gen-context.js",
        "--mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.sigmap]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/gen-context.js", "--mcp"]
Gemini CLITerminal
gemini mcp add --scope user sigmap node -- '<ABSOLUTE_PATH_TO_CLONE>/gen-context.js' --mcp

What it does

SigMap is a command-line tool that scans a repository and writes a compact map of its function, class and method signatures, with line anchors, for AI coding assistants. Started with `--mcp`, it becomes a stdio MCP server that answers questions about that map on demand instead of pasting the whole codebase into the conversation.

The tools rank files for a task, search signatures, fetch an exact line range, show which files and functions are affected when a file or symbol changes, summarise uncommitted changes with their blast radius, and check a code suggestion against symbols that really exist in the repo and in installed libraries. Other tools compress long logs or stack traces, recall a project decision log, report how many tokens SigMap has served in the session, and let the assistant tell the index about files it has just created or deleted.

Since the `mcp.tools` key arrived in the project config, you can trim what a client sees. Leave it out and all 22 tools are listed. Set it to `"core"` and you get seven (`query_context`, `read_context`, `get_callee_signatures`, `get_lines`, `get_impact`, `get_method_impact`, `verify_suggestion`), or give an array of tool names. A tool the profile hides is refused if called, and a value it cannot parse falls back to all tools rather than failing (src/mcp/profile.js, src/mcp/server.js at v8.82.0). There is also a 23rd tool, `log_session_usage`, which no profile includes: it appears only when `session.mcpCapture` is on.

Everything runs on your machine with no embeddings, vector database or LLM calls, and the package declares no runtime dependencies. The npm package also installs `gen-context` and `gen-project-map` programs.

What it needs

RuntimeNode.js 18+
Runs onmacOS, Windows, Linux
Also
  • A local code repository indexed once with `npx sigmap`

A standalone binary for macOS, Linux x64 or Windows x64 replaces Node.js. Run `npx sigmap` in the repository once so the context files the tools read exist. `get_map` needs `gen-project-map` to have been run. `create_checkpoint` and `get_diff_context` use git when the folder is a git repository.

Limits

  • Not covered Serves the project in the directory it is started in, not a path given per call.
  • Not covered `get_lines` refuses paths that resolve outside the project root.
  • Size cap `query_context` returns 10 files by default, 25 at most with `topK`.
  • Size cap `read_memory` returns 10 notes by default, 50 at most with `limit`.
  • Not covered Ruby, R, Lua, Elixir, C/C++ and config formats are indexed without line anchors, as the README notes.
  • Limit `read_context` keeps serving the old context file until you regenerate it.
  • Limit With `mcp.tools` set to `core`, only seven tools are listed and the others are refused when called.
  • Limit The VS Code and Zed entries written by `sigmap mcp install` run `node` on an absolute script path, not `npx` (src/mcp/install.js).

Serves the project in the directory it is started in, not a path given per call. `get_lines` refuses paths outside the project root. `query_context` returns 10 files by default, at most 25 with `topK`; `read_memory` returns 10 notes by default, at most 50 with `limit` (src/mcp/handlers.js). Ruby, R, Lua, Elixir, C/C++ and config formats are listed without line anchors, as the README notes. `read_context` keeps serving the old context file until it is regenerated. The docs' sample config runs `node /absolute/path/to/your/project/gen-context.js --mcp`, which assumes a copy of the script in the project; with the npm package use `npx -y sigmap --mcp`.

Who it suits

Developers using Claude Code, Cursor, Codex CLI, OpenCode or another MCP client on a mid-sized or large repository who want the assistant to look up signatures, line ranges and change impact instead of reading whole files, offline and with no API keys. The `core` profile suits clients where tool definitions eat into a small context. It is less useful for repos mostly in languages it indexes without line anchors, for search by meaning rather than names (it ranks by keywords and symbols, not embeddings), or for anyone who wants the server to edit code: it reads the project and writes only its own index files.

Tools 23

19 only read, 4 change things. A ? marks an optional parameter.

read_context
Return the generated signature map for the whole project or one modulemodule?: string
search_signatures
Keyword search across all extracted signaturesquery: string
get_map
Return the imports, classes or routes section of the project maptype: enum
create_checkpoint
Build a session snapshot with git branch, recent commits and a context summarynote?: string
get_routing
Group files into complexity tiers with model hints
explain_file
Show a file's signatures, the files it imports and the files that import itpath: string
list_modules
List top-level source folders by token count
query_context
Rank the files most relevant to a task or questionquery: stringtopK?: number
get_method_impact
List functions that call a symbol, or that it calls, transitivelysymbol: stringdirection?: enumdepth?: number
get_impact
List files, tests and routes affected when a file changesfile: stringdepth?: number
get_lines
Fetch an exact line range from a file in the projectfile: stringstart: numberend: number
read_memory
Recall recent project decision notes and the last ranking focuslimit?: number
get_callee_signatures
Give the current exact signatures of named symbolssymbols: array
sigmap_notify_file_created changes
Index a new or changed file into the live overlaypath: stringcontent?: string
sigmap_notify_symbol_added changes
Add one new symbol signature to the live indexsignature: stringfile: stringline?: number
sigmap_notify_file_deleted changes
Drop a deleted file's symbols from the live indexpath: string
get_diff_context
Signatures and blast radius for changed, staged or base-ref filesbase?: stringstaged?: booleandepth?: number
get_architecture_overview
Summarise modules, hub files, dependency cycles and routes
verify_suggestion
Check a code snippet against repo symbols and installed librariescode: string
squeeze_output
Shrink a noisy log, stack trace or JSON payloadcontent: string
get_budget
Report estimated tokens SigMap has served this sessionsession?: stringbudgetTokens?: number
query_knowledge_map
Query typed nodes and edges such as libraries, routes and env varslibrary?: stringfile?: stringenv?: string
log_session_usage changes
Record the session's own token usage; offered only with session.mcpCapture onid?: stringmodel?: stringusage?: object

Similar servers