Inspect configured MCP servers
Review static MCP configuration inventory, supported clients, and what it cannot tell you about runtime tool use.
Technical reference for a development snapshot. Check the matching release when operating an installed version.
On this page
Telltale emits MCP inventory as activity events when telltale scan --emit-activity or telltale watch --emit-activity is enabled.
These are native Event 3.0 activity events; historical event imports do not use this inventory path.
The first implementation is static and local-only. It reads known MCP configuration files, normalizes configured server metadata, and emits one activity event per configured server with:
session_id = "mcp_inventory"tool_name = "mcp::<server_name>"- tags including
mcp,mcp_inventory, and eithermcp_inventory_supportedormcp_inventory_unsupported - evidence field
mcp_server_inventorywith server name, transport, redacted command/package details, URL host, argument count, environment variable names, declared tool names when present, and support status
Telltale does not connect to MCP servers during scan. That keeps the batch scanner side-effect free and avoids executing arbitrary configured commands. Actual tool names are only emitted when a local config or exported inventory payload explicitly declares a tools array. Otherwise Telltale reports the configured MCP server as configured tooling and leaves runtime tool enumeration to later active-inspection work.
Usage attribution matches declared tools within the same client. Each configuration path, source identity, and server name keeps its own candidate attribution, even when names overlap. Case/whitespace variants of one server’s declaration do not multiply calls. Multiple matching configurations remain ambiguous: their usage counts are not additive observed-call totals, and do not prove which server ran.
The supported Rust inventory facade remains telltale_core::inventory.
collect_mcp_inventory accepts explicit files or fixed-root paths without a
workspace walk and returns construction-sanitized observations. The discovery
functions also inspect workspace configurations and can return host-local raw
McpServerInventory values. Codex TOML tool declarations contribute counts to the
structured collector, but remain excluded from scan Event3 inventory and usage
inference.
Supported Static Config Sources
| Client | Static config path | Status | Notes |
|---|---|---|---|
| Codex | .codex/config.toml | supported | Reads [mcp_servers.<name>] and [mcp.servers.<name>] sections with command, url, type/transport, and args metadata. |
| Claude Code | .claude.json, .mcp.json, workspace .mcp.json within depth 4 | supported | Reads mcpServers, mcp_servers, and mcp.servers JSON objects. |
| OpenCode | .config/opencode/opencode.json | supported | Reads common JSON MCP server objects when present. |
| OpenClaw | .openclaw/config.json | supported | Reads common JSON MCP server objects when present. |
| Qwen CLI | .qwen/settings.json | supported | Reads common JSON MCP server objects when present. |
| GitHub Copilot | Copilot MCP configuration | not yet supported | Telltale currently supports Copilot process-log activity, but not static MCP config inventory. |
Open Source Enumeration Reference
The open MCP ecosystem already has active enumeration tooling. The official MCP Inspector supports tools/list, resources/list, and prompts/list over stdio, SSE, and streamable HTTP transports. Telltale’s static inventory deliberately stops before that active connection step; a future optional command can reuse the same normalized event shape for inspector-style tools/list output.
Unsupported And Lossy Fields
- Env values are never emitted; Telltale only records env variable names.
- Full command lines are redacted when they look likely to carry inline secrets.
- TOML parsing is intentionally narrow for Codex MCP server sections and should be replaced with a full parser only if the dependency and lockfile impact are accepted.
- Runtime MCP tool enumeration, resources, prompts, OAuth state, and server capability negotiation are not performed by the scanner today.
Source and version
This reference reproduces the complete upstream document. Heading and status presentation follow this site’s theme; technical text and limitations stay with the source.
Read the original Markdown at e67786817228.
