Audits MCP configs, scores risk, and creates reversible repair plans.
Clean your MCPs.
dr-mcp is a local-first MCP audit and cleanup tool for developers who use agentic coding every day. It scans the Model Context Protocol configs your tools load, finds stale servers, abandoned packages, duplicate entries, context-heavy tools, risky permissions, and major upgrades, then generates reversible patch plans.
If you use Claude Code, OpenAI Codex, Cursor, Windsurf, GitHub Copilot, VS Code, Cline, Roo Code, Continue, or Zed across multiple projects, your MCP setup can grow quietly: old demo servers, duplicate GitHub tools, broad filesystem access, package pins behind npm latest, abandoned repositories, and large tool surfaces your agent has to consider before it writes code.
dr-mcp shows what to clean up without deleting anything during scan.
npx @inferensys/dr-mcp cleanup
That starts a local cleanup scan in the current project. You get a redacted report, a ranked list of context-heavy MCPs, package and repository freshness signals, and patch plans you can apply after review.
For the full cleanup scan with package/repo checks and local install-history tracking:
npx @inferensys/dr-mcp cleanup --registry --track-usage
Inside Claude Code, Codex, Cursor, Windsurf, GitHub Copilot, or any MCP client that exposes server prompts/tools, use dr_mcp_scan or dr_mcp_cleanup. If your client maps MCP prompts into slash commands, use /dr-mcp scan.
MCP servers are powerful because they put tools directly into an agent's loop. That also means every extra server can add tool-selection noise, context-window pressure, startup failures, stale dependencies, or permissions you no longer intend to grant.
dr-mcp helps with:
--registry, check npm metadata and GitHub activity for archived or stale projects.--track-usage and build a local ledger of MCPs that keep showing up across scans.npx packages using latest or no version.dr-mcp uses practical static analysis and package metadata checks:
.mcp.json.dist-tags.latest, and optional official registry matching.# Local audit in the current project
npx @inferensys/dr-mcp
# Deeper cleanup report with package/repo checks and local install history
npx @inferensys/dr-mcp cleanup
# Full scan alias for agent workflows
npx @inferensys/dr-mcp scan --deep
# Local-only cleanup flow with no network checks or usage ledger writes
npx @inferensys/dr-mcp cleanup --local
# JSON for scripts or CI
npx @inferensys/dr-mcp scan --workspace . --json --registry
# Shareable cleanup report
npx @inferensys/dr-mcp report --workspace . --format html > dr-mcp-report.html
# Preview a repair plan
npx @inferensys/dr-mcp patch --workspace . --plan remove-duplicate-servers
npx @inferensys/dr-mcp patch --workspace . --plan upgrade-stale-packages
# Apply a reviewed repair plan with backups
npx @inferensys/dr-mcp patch --workspace . --plan remove-duplicate-servers --apply
# Run as an MCP server
npx @inferensys/dr-mcp server
dr-mcp separates findings from action. A finding tells you what looks wrong; a patch plan tells you the exact config edit it can make.
remove-duplicate-servers: remove duplicate MCP server entries while keeping the first enabled definition.remove-dead-servers: remove entries that cannot launch or packages missing from npm.upgrade-stale-packages: update MCP package refs to npm latest.remove-abandoned-servers: remove servers from archived or abandoned repositories.remove-heavy-context-servers: remove servers estimated to load many tools into every session.remove-long-lived-servers: remove servers that have stayed installed across multiple tracked scans after you confirm they are no longer useful.| Tool | Configs scanned |
|---|---|
| Claude Desktop | claude_desktop_config.json |
Claude Code / cc | ~/.claude.json, ~/.claude/settings.json, .claude/settings.json |
| OpenAI Codex | ~/.codex/config.toml, .codex/config.toml |
| Cursor | ~/.cursor/mcp.json, .cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json, .windsurf/mcp.json |
| GitHub Copilot in VS Code | VS Code user settings, VS Code Insiders settings, .vscode/mcp.json, .vscode/settings.json |
| GitHub Copilot CLI | ~/.copilot/mcp-config.json, .copilot/mcp-config.json |
| Cline | ~/.cline/data/settings/cline_mcp_settings.json, .cline/data/settings/cline_mcp_settings.json |
| Roo Code | .roo/mcp.json, common Roo Code VS Code global storage paths |
| Continue | ~/.continue/config.yaml, .continue/config.yaml |
| Zed | Zed user settings, .zed/settings.json |
| Generic MCP | .mcp.json |
Once added, start from the shortest in-session action:
dr_mcp_scan
For cleanup candidates, upgrades, abandoned servers, and long-lived installs:
dr_mcp_cleanup
Clients that expose MCP prompts as slash commands may show these as dr_mcp_scan, dr_mcp_cleanup, or a prompt such as /dr-mcp scan.
codex mcp add dr-mcp -- npx -y @inferensys/dr-mcp server
claude mcp add dr-mcp -- npx -y @inferensys/dr-mcp server
Use this for Claude Desktop, Cursor, Windsurf, Cline, Roo Code, VS Code, and GitHub Copilot in VS Code:
{
"mcpServers": {
"dr-mcp": {
"command": "npx",
"args": ["-y", "@inferensys/dr-mcp", "server"]
}
}
}
VS Code and GitHub Copilot may use servers:
{
"servers": {
"dr-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@inferensys/dr-mcp", "server"]
}
}
}
{
"context_servers": {
"dr-mcp": {
"command": "npx",
"args": ["-y", "@inferensys/dr-mcp", "server"]
}
}
}
mcpServers:
dr-mcp:
command: npx
args:
- -y
- @inferensys/dr-mcp
- server
When running as a server, dr-mcp exposes:
dr_mcp_scandr_mcp_cleanupscan_mcp_setupexplain_issuegenerate_patch_planapply_patch_planexport_reportdr_mcp with action=scan or action=cleanupdr_mcp_scandr_mcp_cleanupScans never edit MCP client configs.
Patch plans create timestamped backups before writing. Reports redact secrets, tokens, emails, home paths, and private GitHub repo URLs.
Usage tracking is opt-in. --track-usage writes a local ledger at ~/.dr-mcp/usage-ledger.json. It tracks what remains installed across scans; it does not claim true per-tool usage unless a client exposes that data.
dr-mcp does not auto-install, uninstall, upgrade packages, or run destructive cleanup.
npm install
npm run check
node dist/cli.js scan --workspace tests/fixtures/mixed --json
Registry name: io.github.Inferensys/dr-mcp
Package: @inferensys/dr-mcp
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @inferensys/dr-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-inferensys-dr-mcp": {
"command": "npx",
"args": [
"-y",
"@inferensys/dr-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@inferensys/dr-mcpnpmdr-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.