Skip to content
Telltale

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 either mcp_inventory_supported or mcp_inventory_unsupported
  • evidence field mcp_server_inventory with 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

ClientStatic config pathStatusNotes
Codex.codex/config.tomlsupportedReads [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 4supportedReads mcpServers, mcp_servers, and mcp.servers JSON objects.
OpenCode.config/opencode/opencode.jsonsupportedReads common JSON MCP server objects when present.
OpenClaw.openclaw/config.jsonsupportedReads common JSON MCP server objects when present.
Qwen CLI.qwen/settings.jsonsupportedReads common JSON MCP server objects when present.
GitHub CopilotCopilot MCP configurationnot yet supportedTelltale 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.

Apache-2.0 license