Skip to content

A local, read-only MCP server over run transcripts - #796

Closed
lmoresi wants to merge 1 commit into
feature/transcript-queryfrom
feature/transcript-mcp
Closed

lmoresi wants to merge 1 commit into
feature/transcript-queryfrom
feature/transcript-mcp

Conversation

@lmoresi

@lmoresi lmoresi commented Sep 27, 2026

Copy link
Copy Markdown
Member

python -m underworld3.mcp speaks MCP on stdio. Thirteen read-only tools, each a projection of uw.Transcript (#792) and the description layer (#790), returning the query's own answer as YAML: uw_transcript_list, _summary, _steps, _patterns, _problems, _events, _step, _compare, _parts, _part (summary / forms / exact), _key, _adjoint_segments, and uw_describe_render. A path may be a transcript file, a run directory, or a transcripts directory for the latest run. Answers are compact by default and drill down on request; the full symbolic forms reach the model only with detail="exact".

.mcp.json registers the server for Claude Code as underworld through scripts/mcp-server.sh, which starts it in the checkout's pixi environment. The mcp package (2.x, where FastMCP became MCPServer) is not in pixi.toml yet: the guide says how to install it into an environment meanwhile and the test skips without it. Adding it to pixi.toml is a lock-file change left for a deliberate commit.

Checked end to end: a client over stdio through the launcher lists the tools and reads the fault example's run. Stacked on #792.

Tests: test_0019_mcp_server.py. Docs: docs/developer/guides/mcp-server.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Na7qBenCp67rDTZhFGTh5V

python -m underworld3.mcp speaks MCP on stdio and answers questions about
runs from their transcripts: the runs under a directory, one run's
summary, its steps paged, its step patterns, everything that went wrong
or went back, events filtered by kind, part, outcome or step, one step
with its attempts, what differs between two steps, the parts that acted,
what a part was solving at a step in three levels of detail, the key, the
adjoint segments, and any description record rendered in another form.
Every tool is a projection of uw.Transcript and the description layer and
returns the query's own answer as YAML, so what a model is told is what
the digest, a notebook and a test read. Nothing runs a model or writes to
one; every tool is annotated read-only.

The repository's .mcp.json registers it for Claude Code under the name
"underworld" through scripts/mcp-server.sh, which starts it in the
checkout's pixi environment. The mcp package (2.x) is not in pixi.toml
yet; the guide says how to install it into an environment meanwhile, and
the test skips without it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Na7qBenCp67rDTZhFGTh5V
@lmoresi

lmoresi commented Sep 27, 2026

Copy link
Copy Markdown
Member Author

Merged into #790 with the rest of the stack after review; nothing lost, the commits are there.

@lmoresi lmoresi closed this Sep 27, 2026
@lmoresi
lmoresi deleted the feature/transcript-mcp branch September 27, 2026 21:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant