
Heimdall MCP
Trace every MCP tool call. No code changes needed.
Details
- Follow on
- @enmanuelmagLinkedIn
- Categories
- Open Source
- Use Cases
- AI AgentsAI Code Assistant
- Target Audience
- AI DevelopersDevelopers
- Pricing
- Free
About Heimdall MCP
I built Heimdall MCP after getting frustrated not knowing what was actually happening inside MCP servers — which tools were slow, which failed silently, what inputs Claude was sending. The idea: a transparent proxy that sits between your MCP client (Claude Desktop, OpenCode, Cursor) and any MCP server, captures every JSON-RPC message as an OpenTelemetry span, and persists it to a storage backend you configure. No modifications to the target server required. You just wrap it in mcp.json: "command": "heimdall", "args": ["--store", "sqlite://~/.heimdall/traces.db", "--", "node", "my-server.js"] For remote servers (HTTP/SSE): "command": "heimdall", "args": ["--store", "postgres://...", "--target", "http://remote-server/sse"] Storage options: SQLite (local WASM, no native deps), Postgres, MySQL, or any OTLP-compatible backend. Also ships as a TypeScript library with a fluent builder API if you want to embed it directly. Why I think this is useful: - LLM agents are increasingly orchestrating MCP tools, but observability tooling hasn't caught up - Existing proxies (mcpwall, Airlock, MetaMCP) focus on security/policy enforcement, not persistence of traces - IBM's ContextForge does something similar but it's a heavy Python gateway — this is meant to be a lightweight npm package Schema design note: the DB schema stores spans in native OTel format — Unix nanosecond timestamps (`BIGINT` in Postgres/MySQL), integer SpanKind and SpanStatusCode, and `resource_attributes` set via official `@opentelemetry/semantic-conventions`. This means you can point any OTel-compatible UI (Jaeger, Grafana Tempo, SigNoz) at the data without transformation. The `--otlp` flag also exports spans to a live OTLP HTTP endpoint in real time, additive to DB storage. Still early (v0.1), but the core proxy + all three stores + OTLP export are working. Looking for feedback on the interceptor API design and whether the OTel semantic conventions mapping makes sense. GitHub: https://github.com/enmanuelmag/heimdall-mcp
Product Insights
Heimdall MCP is a free CLI and desktop observability tool for AI developers that captures JSON-RPC messages from MCP servers. It functions as a transparent proxy to provide deep visibility into tool calls for Claude Desktop, Cursor, and OpenCode without requiring code modifications.
- Operates as a lightweight proxy requiring zero modifications to existing MCP server code.
- Supports multiple storage backends including SQLite, Postgres, MySQL, and OTLP-compatible backends.
- Provides native OpenTelemetry span formatting for easy integration with Jaeger, Grafana, and SigNoz.
- Available as both a standalone CLI tool and a TypeScript library with a fluent builder API.
Ideal for: AI developers who need to debug tool latency and execution failures within MCP servers used by Claude Desktop or Cursor.
Screenshots
Reviews (1)
Average 5.0 out of 5
Based on 1 review
Great open source tool to trace every MCP tool call without any code changes!

Comments (1)
Tiny proxy that sits between your MCP client and server, captures every tool call as an OTel span, persists to SQLite/Postgres/MySQL or Open Telemtry backends. Zero code changes to target server.