Inspect MCP Transports
Use /mcp or /mcp status to inspect attached MCP servers in detail. Use
/mcp list for the shorter configured-and-attached inventory.
Protocol era and transport are separate concepts. A remote Streamable HTTP endpoint can negotiate modern or legacy protocol behavior; a legacy protocol connection is not necessarily the configured legacy SSE transport.
/mcp label |
Meaning | Display difference |
|---|---|---|
(modern) |
Automatic negotiation selected the discovery-era protocol. | Session, legacy Health, and ping columns are omitted. |
(legacy) |
Automatic negotiation selected the initialization-era protocol. | Session and legacy Health are shown. |
(forced modern) / (forced legacy) |
protocol_mode was explicitly selected for interoperability testing or debugging. |
Uses the corresponding modern or legacy display. |
auto is the default and should be preferred for normal connections. To test
a server's legacy compatibility path, connect with --protocol legacy; forcing
a mode changes client negotiation behavior, not the HTTP transport.
Modern remote MCP: JSON, SSE, and progress
This recording connects to Hugging Face's MCP Server, calls hf_whoami for a
direct JSON response, then generates an image over SSE. The image call receives
progress notifications and renders the result before /mcp opens. The
diagnostic timeline distinguishes direct JSON-RPC messages from SSE streams
and shows request, response, and notification activity. The LISTEN (SSE)
channel is disabled because the server does not advertise list-change
notifications or resource subscriptions.
The command leaves protocol selection at its default, auto. Fast-agent
discovers the server's supported modern protocol and /mcp reports the
negotiated result:
The modern display intentionally omits the legacy Session and Health fields,
and its channel timeline has no legacy ping column. The identity lookup appears
on POST (JSON). The image request and its progress notifications appear on
POST (SSE), both during execution and as notification activity in the
subsequent transport display.
Legacy remote MCP: session and health
This deterministic recording connects to a local legacy Streamable HTTP
fixture. The server returns a fixed MCP-Session-Id; one-second health pings
establish a visible healthy state before /mcp opens its 60-segment timeline.
For a forced legacy connection, /mcp shows the initialization-era protocol,
the observed HTTP session identifier, and legacy health state:
forced legacy means the client was configured with protocol_mode: legacy.
The Session value is an observed MCP-Session-Id response header. Health and
ping information belong to the legacy client path; their absence from the
modern display is intentional.
Reading the /mcp display
Implementation, protocol, and session
The first lines identify the server implementation, version, client, and
negotiated protocol era. A forced mode is shown as (forced modern) or
(forced legacy). The protocol label reports the negotiated result rather than
printing internal negotiation steps separately.
Successful negotiation requests are included in mcp calls: alongside normal
operations. Modern negotiation records discover; legacy negotiation records
initialize. Forced-modern connections still send server/discover so
capabilities and metadata are available, but they fail rather than falling back
to legacy initialization when discovery is rejected. Reconnecting repeats and
counts the corresponding negotiation request.
For modern-era connections, /mcp omits Session and legacy Health fields.
Non-modern displays include Session; it contains the observed
MCP-Session-Id, or None when no session header was captured. The local
value for stdio describes transport locality, not a protocol session.
Transport channel history
Transport activity is shown only when fast-agent has a live diagnostics
source. Public httpx hooks classify outgoing Streamable HTTP requests,
responses, resumptions, and errors without consuming response bodies or
streamed SSE events.
POST (JSON) and POST (SSE) classify observed POST responses by their
Content-Type. LISTEN (SSE) is the separate server-event listening channel.
These labels describe live HTTP behavior; they do not mean the server was
configured with the legacy SSE transport.
Timeline symbols prioritize significant events in this order:
When several events land in one segment, the higher-priority state remains visible.
Server capabilities
To,Pr,Re: Tools, Prompts, and Resources. A highlighted token indicates list-change notifications.Rs: Resource subscriptions.Lo,Co: Logging and completions.Ex: Experimental capabilities.In: Server instructions. Warning and error colors indicate instructions that are available but not injected into the agent system prompt, or disabled.
Extensions and client settings
Sk: SEP-2640 Skills Extension Draft (d7490ecd) support. It does not indicate compatibility with legacy index/archive skill servers.Ui: Detected MCP Apps or OpenAI Apps SDK configuration.Ro: Roots offered to the MCP server.El: Elicitation mode.Sa: Sampling mode.Sp: Client-name spoofing.
Provider-managed MCP does not use fast-agent's MCP client, so these local negotiation and transport diagnostics do not apply to provider-owned connections.
Diagnostics configuration
Configure timeline density in fast-agent.yaml:
steps controls the number of rendered segments and step_seconds controls
the duration represented by each segment. Set mcp.diagnostics.enabled to
false to disable MCP diagnostics collection.