Use case

MCP dependency mapping

An mcp.json file tells you which servers are configured. It doesn't tell you which agents, workflows, or repositories actually depend on each one, or which credential a server is authorized against.

Problem

MCP configuration lives in config files, but the things that actually consume a server (an agent's tool list, a workflow's startup script, a teammate's local dev setup) don't live next to that config. As a team adds servers across repositories, nobody keeps a map of server to consumer by hand, and the config file itself only tells you a server exists, not who relies on it.

Why it is hard

A single MCP server can be referenced from multiple repositories under different names, authorized by a credential declared in a completely different file, and consumed by an agent definition that imports it indirectly through a framework (LangChain, CrewAI, the Anthropic or OpenAI Agents SDKs) rather than naming it directly. Grepping for a server name finds the config; it doesn't find every consumer, and it can't tell you whether a match is a real dependency or a stale comment.

How Wirecheck helps

Wirecheck parses mcp.json and claude_desktop_config.json as first-class MCP server configuration (stdio, HTTP, and SSE transports), links each server to the credential that authorizes it, and resolves consumers through SDK/framework imports (@modelcontextprotocol/*, OpenAI SDK, Anthropic SDK, LangChain, Vercel AI SDK, CrewAI, AutoGen, Mastra, OpenAI Agents SDK), webhooks, cron, GitHub Actions, and REST/database references. A credential or server referenced by name across multiple connected repositories is merged into one node, so cross-repo usage shows up as one dependency graph, not N separate ones. See Supported detections for the current coverage and its limits.

Example workflow

cli
wirecheck impact zendesk-mcp --json

Returns the component, its known consumers, and any relationship Wirecheck couldn't resolve:

output
{
  "component": { "name": "zendesk-mcp", "type": "MCP_SERVER", "confidence": "HIGH" },
  "direct_dependants": 3,
  "indirect_dependants": 1,
  "orphaned_integrations": 0,
  "unknown_relationships": 1,
  "direct": [{ "name": "support-bot", "type": "AGENT", "confidence": "HIGH" }]
}

What Wirecheck can prove

Every edge in the map traces back to a repository, file, and line, with a confidence level, not just a name match. That evidence is what a wirecheck evidence call returns, and it is what the agent workflow commands build on.

What Wirecheck cannot safely resolve

A deterministic pass can miss a consumer that references a server through dynamic configuration, an uncommon framework, or a naming convention Wirecheck doesn't yet recognize. Those show up as UNKNOWN rather than being silently dropped, and an LLM classifier only resolves genuinely ambiguous cases, never fabricates a relationship a deterministic pass didn't find.

Map your own MCP servers

Connect a repository and see every MCP server, its credential, and its consumers, with evidence for each edge.

Related