PluginBench
MCP Server
Active
MIT

Madar MCP Server

io.github.mohanagy/madar

Give coding agents repo context before they start searching—local TypeScript/Node.js graph indexing for Claude, Cursor, Copilot, and more.

What is the Madar MCP server?

Madar is an MCP server that builds a local graph of your TypeScript or Node.js repository and delivers task-aware context packs to coding agents. It indexes source files, symbols, imports, calls, routes, and framework metadata locally—without uploading code or requiring cloud services—so agents like Claude Code, Cursor, and Copilot can start from relevant entrypoints and runtime paths instead of broad searches.

Madar reduces token usage and latency by giving coding agents a focused starting context before they begin exploring your codebase. It runs locally, stays private, and integrates with popular agents via simple install commands. Instead of agents rediscovering your repository structure, they receive likely files, exported symbols, direct snippets, and runtime-flow hypotheses tailored to each question.

How to install Madar

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "madar": {
      "command": "npx",
      "args": [
        "-y",
        "@lubab/madar",
        "mcp"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • context_pack — Generates a bounded, task-aware context pack for a given question, including likely files, symbols, snippets, imports, calls, and runtime paths.
  • graph_generation — Builds and maintains a local directed graph of TypeScript/Node.js source code, indexing symbols, imports, calls, routes, handlers, and framework metadata.
  • graph_refresh — Automatically refreshes the local graph when the active workspace changes, keeping context current without manual regeneration.
  • prompt_generation — Creates provider-ready prompts (e.g., for Claude) from indexed context and the current question.
  • handoff_generation — Produces share-safe handoff reports for passing context to other coding tools without exposing sensitive details.

Use cases

  • Ask architecture and runtime-flow questions (e.g., 'How does authentication work?') and receive focused file and symbol context instead of broad searches.
  • Review code impact by querying how changes to a service ripple through imports and calls.
  • Reduce token usage and latency when working with medium or large TypeScript/Node.js repositories by providing agents with pre-indexed context.
  • Maintain code privacy by generating and inspecting context locally without uploading source code to cloud services.
  • Integrate Madar into your existing agent workflow (Claude Code, Cursor, Copilot, Aider, Gemini, Codex, OpenCode) with a single install command per agent.

Madar MCP server FAQ

What is Madar?

Madar is an MCP server that indexes your TypeScript or Node.js repository locally and gives coding agents focused context packs before they start searching. It reduces token usage, latency, and redundant file reads by providing likely entrypoints, symbols, snippets, and runtime paths tailored to each question.

Is Madar free?

Yes. Madar is open-source under the MIT license. Graph generation runs locally on your machine and does not require an API key or cloud service.

How do I install Madar in Cursor or Claude?

Install Madar globally with `npm install -g @lubab/madar`, then run `madar cursor install` (for Cursor) or `madar claude install` (for Claude Code) inside your repository. Run `madar doctor` and `madar status` to verify the installation.

Does Madar upload my code?

No. Madar generates graphs locally and does not upload source code. Your coding agent may still send prompts or selected file context to its own model provider, depending on that agent's configuration.

What languages does Madar support?

Madar is optimized for TypeScript and Node.js. It uses legacy fallback semantics for other supported languages but is most effective on TypeScript/JavaScript projects.

How does Madar keep the graph fresh?

Installed MCP profiles automatically watch your workspace and refresh the graph when relevant files change. Manual CLI users can regenerate the graph with `madar generate .` or enforce freshness with `--require-fresh-context`.

README (reference)

Source of truth, from the repository.

Madar

Give your coding agent the repo context it needs before it starts searching.

Madar builds a local graph of your TypeScript or Node.js repository and turns the current question into a small, task-aware context pack. Claude Code, Codex, Cursor, Copilot, Gemini, Aider, and OpenCode can start from relevant files, symbols, snippets, and relationships instead of rediscovering the repository from scratch.

  • Start smaller: give the agent likely entrypoints and runtime paths before broad search.
  • Stay local: graph generation does not upload your source code or require a cloud service.
  • Stay current: installed MCP profiles refresh the graph as the active workspace changes.

npm node >=20 local first license MIT

Try It in 60 Seconds

Install Madar with Node.js 20 or newer, then run it inside your repository:

npm install -g @lubab/madar
cd your-repository
madar try "how does authentication work?"

madar try builds or reuses the local graph, prints a human-readable first result, and recommends the next agent-install command. It does not modify your source code.

For a concrete example, Madar's included password-reset workspace contains this path:

account-routes.ts
  -> PasswordResetService.requestPasswordReset()
  -> userRepository.saveResetToken()
  -> enqueueResetEmailJob()
  -> sendPasswordResetEmail()

That is the kind of focused starting path Madar gives an agent before it decides whether any additional file inspection is necessary.

Connect Your Agent

Choose the agent you use. For Claude Code:

madar claude install
madar doctor
madar status

After installing a profile, run madar doctor and madar status. The agent can then ask Madar for context when you use normal prompts such as:

How does authentication work?
Why does this endpoint return 403?
Where is the report generated?
What breaks if I change this service?
Add telemetry to this flow.

Madar supports these project-local installers:

AgentInstall command
Claude Codemadar claude install
Codex CLImadar codex install
Cursormadar cursor install
GitHub Copilotmadar copilot install
Gemini CLImadar gemini install
Aidermadar aider install
OpenCodemadar opencode install

Installer details are in the CLI and MCP reference. Step-by-step setup and smoke tests are in the agent quickstarts.

After upgrading Madar, rerun your agent's install command to refresh its managed profile. Older profiles may lack automatic refresh or Codex's longer startup window.

Codex installs create a workspace-scoped MCP block with longer startup and tool timeouts. Madar stays available during initial reconciliation; graph-backed calls become available once the graph is ready.

Starting with 0.31.3, a graph-backed call made while Madar is starting, pending, or reconciling returns a structured retryable response. The agent should retry the same Madar request after the suggested delay instead of bypassing Madar or running generation manually. A dead refresh owner is recovered automatically; only failed, incomplete, or policy-mismatched graph states ask for repair.

What Changes for the Agent

Without Madar, a coding agent often begins with broad filename searches, repeated reads, and guesses about which route, service, or handler owns the task.

With Madar, the first pass can include:

  • likely files, exported symbols, routes, and handlers
  • direct snippets relevant to the question
  • imports, calls, framework roles, and runtime handoffs
  • a static runtime-path hypothesis when the graph supports one, not a live execution trace
  • graph freshness and indexing-completeness signals
  • explicit guidance to answer, answer with a caveat, or verify a focused target

Madar does not replace your agent or prevent it from reading code. It gives the agent a smaller, repo-grounded place to start.

How It Works

Your repository
      |
      v
Local Madar graph
      |
      v
Context for the current question
      |
      v
Claude, Codex, Cursor, or another coding agent
  1. Madar indexes source files, symbols, imports, calls, routes, handlers, framework metadata, and selected documentation.
  2. A question selects a bounded context pack rather than dumping the whole repository into the prompt.
  3. The response reports evidence strength, coverage, freshness, and whether focused verification is still needed.
  4. Installed MCP profiles watch the active workspace and refresh graph-backed context after relevant changes.

The full response contract, including bounded recovery and answerability states, is documented in MCP response shape.

Use Madar Without MCP

The CLI can generate and inspect context without installing an agent integration:

madar generate .
madar summary
madar pack "how does auth work?" --task explain --format text

By default, madar generate . combines SPI metadata with proven legacy semantics for JavaScript/TypeScript, and uses legacy fallback for other supported languages. Strict modes are in the CLI reference.

Create a provider-ready prompt:

madar prompt "how does auth work?" --provider claude

Create a share-safe handoff for another coding tool:

madar handoff "add auth telemetry" --task implement --consumer copilot

Generated graphs and indexing manifests stay in the project output location. See the getting-started tutorial for a reproducible sample workspace and expected output.

Where Madar Fits

Madar is most useful when:

  • your repository is medium or large
  • the project is primarily TypeScript or Node.js
  • agents keep reopening the same files or searching unrelated folders
  • you ask architecture, runtime-flow, review, or impact questions
  • token usage, latency, or local repo privacy matter

It helps less when:

  • the repository is small or the task is obvious from one file
  • the question depends on live runtime behavior that static analysis cannot observe
  • the code relies heavily on dynamic patterns that are absent from the graph
  • the graph is stale or relevant source files could not be indexed

Madar complements agents and IDE indexing. It is not a hosted knowledge base, runtime tracer, PR reviewer, or vulnerability scanner.

Local by Design

  • Privacy: Madar graph generation runs locally and does not require an API key. Your coding agent may still send prompts or selected file context to its own model provider, depending on that agent's configuration.
  • Sensitive files: ordinary security source code remains indexable, while private keys, .env*, credential stores, and known non-source secret material are excluded. This is a path policy, not a content-level secret scanner.
  • Freshness: installed MCP profiles use automatic refresh. Manual CLI users can regenerate with madar generate .; strict workflows can require --require-fresh-context or --require-fresh-graph.
  • Worktrees: run Madar and the agent from the same linked Git worktree. Each worktree receives isolated graph artifacts outside the checkout; reconnect the MCP server after switching worktrees.
  • Telemetry: Telemetry is disabled unless you explicitly enable it. Controls and the exact source-safe event schema are documented in telemetry.

Treat every local MCP install, hook, or agent profile as part of your local trust boundary. The MCP threat model documents the boundary in detail.

Evidence and Limits

Madar publishes the prompts, answers, traces, and share-safe reports behind its benchmark statements. Two public experiment types answer different questions and should not be compared as if they were the same test.

Controlled v0.30 evidence

Six June TypeScript runtime-flow trials used a source checkout with task-specific proof profiles. In those controlled runs, Madar was invoked once per row and the recorded results showed:

  • 3.5x to 18.5x fewer tool calls
  • 2.2x to 15.6x less provider-reported input
  • 1.65x to 7.09x lower latency

Those receipts are real measurements of profile-assisted Madar. They demonstrate what the workflow can achieve when the correct task evidence is available. They are not evidence that an untuned npm installation will reproduce the same result for arbitrary questions, because the old prompts and checkout retrieval contained benchmark-specific obligations unavailable to normal package users.

v0.31 production-artifact validation

The July reruns removed that assistance and used the same isolated, unpacked @lubab/madar@0.31.0 package artifact. Four of six repositories recorded an agent-adoption failure: no attributable Madar MCP call occurred. The other two invoked Madar but failed strict prompt or answer gates. The correct result is zero valid performance comparisons, not six product losses. These reruns expose adoption and answer-completeness work; they neither confirm nor refute the earlier controlled efficiency measurements.

Read the benchmark suite and all dated receipts or the shorter claims and evidence map.

Current Release

Current version: 0.32.1.

0.32.1 keeps automatic refresh recoverable when Git removes a file during a watched rebuild, and reports a healthy single-client setup without requiring optional agent integrations.

0.31.4 keeps receipts tied to visible context and hardens Claude/Codex hook handling.

0.31.3 recovers dead refresh owners, waits through live refresh contention, and returns a retry signal during temporary reconciliation instead of pushing agents to bypass Madar.

0.31.2 keeps the Codex MCP connection responsive while its initial automatic graph refresh runs, adds an explicit 180-second Codex startup window, and keeps graph-backed answers unavailable until the refreshed graph is ready.

0.31.1 rebuilt the public onboarding path and clarified what each benchmark experiment proves. Runtime behavior was unchanged from 0.31.0.

0.31.0 made code graphs directed by default, separated evidence strength from answer readiness, added bounded context recovery, made indexing completeness explicit, preserved generation policy during automatic refresh, isolated linked-worktree artifacts, and removed benchmark expectations from production retrieval.

Read the full notes in the 0.32.1 changelog.

Documentation

NeedStart here
First runGetting started
Agent setupAgent quickstarts
CLI and MCP toolsCLI and MCP reference
Context packsContext-pack concepts
Freshness and automatic refreshAuto-refresh policy
Indexing coverageIndexing completeness
Privacy and MCP trustThreat model
Evidence and benchmarksClaims and evidence
RoadmapPublic roadmap
Release historyChangelog

Contributing

The most useful contributions right now are tests on real TypeScript and Node.js repositories, missed-context reports, Windows/WSL/MCP reliability improvements, framework detection, and clearer setup examples.

Open issues or pull requests against the next branch. Before opening a PR, run:

npm test
npm run build
npm run release:verify

See the full contributor graph on GitHub contributors.

Contributors

Thanks to everyone shaping Madar. The list below is regenerated automatically on every push to main.

<!-- readme: contributors -start --> <table> <tbody> <tr> <td align="center"> <a href="https://github.com/mohanagy"> <img src="https://avatars.githubusercontent.com/u/11216054?v=4" width="80;" alt="mohanagy"/> <br /> <sub><b>mohanagy</b></sub> </a> </td> <td align="center"> <a href="https://github.com/Gunselheli"> <img src="https://avatars.githubusercontent.com/u/125200242?v=4" width="80;" alt="Gunselheli"/> <br /> <sub><b>Gunselheli</b></sub> </a> </td> <td align="center"> <a href="https://github.com/qorexdevs"> <img src="https://avatars.githubusercontent.com/u/277760369?v=4" width="80;" alt="qorexdevs"/> <br /> <sub><b>qorexdevs</b></sub> </a> </td> <td align="center"> <a href="https://github.com/zhengjynicolas"> <img src="https://avatars.githubusercontent.com/u/32067765?v=4" width="80;" alt="zhengjynicolas"/> <br /> <sub><b>zhengjynicolas</b></sub> </a> </td> <td align="center"> <a href="https://github.com/jamemackson"> <img src="https://avatars.githubusercontent.com/u/7982720?v=4" width="80;" alt="jamemackson"/> <br /> <sub><b>jamemackson</b></sub> </a> </td> </tr> <tbody> </table> <!-- readme: contributors -end -->

Special thanks to @jamemackson for #54, the first community-contributed feature in Madar.

License

MIT. Use it, fork it, ship it.

Related MCP servers

Open-source, write-capable MCP server for Oracle Fusion HCM. Safe by default. Unofficial.

0
Python
Apache-2.0
View repository →
JPjPOS MCP Server logo

jPOS MCP Server

Maintained

MCP server for jPOS and ISO 8583. Deterministic payment protocol tools for AI agents.

4
Python
MIT
View repository →

1117 professional agent skills — frameworks, templates, and checklists for senior-level work and life tasks.

1.3k
HTML
MIT
View repository →

Saudi economic & social statistics (GASTAT/DataSaudi) in English or Arabic. Keyless, no database.

1
Python
MIT
View repository →

Turn HTML, Markdown, URLs and saved templates into PDFs with the PodPDF API.

MOMoira logo

Moira

Active

Agent Workflow Engine — multi-step MCP workflows with per-step directives and validation.

2
TypeScript
Apache-2.0
View repository →