Serve an existing Streamlit app as an MCP server — agents drive it natively, no browser.
Server exposes 6 core tools + 2 semantic tools with minimal schema documentation. Core tools have brief descriptions (10-60 chars) but lack parameter descriptions entirely. Input schemas are present but sparse: set_widget and click accept only identifier/value with no type constraints, enums, or validation guidance. No output schemas documented. Error handling is absent, tools return raw engine results without recovery guidance. Naming is verb-first (list_, get_, set_, click, read_, reset_) which is good, but descriptions are too terse to guide LLM selection. No tool annotations (readOnlyHint/destructiveHint) despite clear read/write risk classification in metadata.
Click a button (by key or label) and rerun.
Full layout: widgets, rendered outputs, session_state, unsupported elements.
Return the app's session_state.
List the app's widgets with their MCP tool schemas.
Read the rendered element tree and session_state.
Reset everything to defaults.
Reset the counter to zero.
Parameter descriptions completely absent. set_widget accepts 'identifier' and 'value' with no guidance on format, constraints, or expected types. LLMs cannot infer whether identifier is a key string, numeric index, or label.
Output schemas not documented. Tools return dict but LLMs have no visibility into field names, types, or structure. Agents cannot plan downstream calls or extract required data reliably.
Tool descriptions too brief (10-60 chars). 'List the app's widgets with their MCP tool schemas' lacks context on WHEN to call it vs get_layout, or what 'MCP tool schemas' means to an LLM unfamiliar with Streamlit internals.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Set a widget (by key or label) to a value and rerun.
No error handling or recovery guidance. Tools return raw engine results; if a widget is not found or value is invalid, LLM receives no actionable error message or next steps.
Semantic tools (reset_count, reset_all) have no visible schema or parameter documentation in source. Tool definitions inferred from file paths only; registration mechanism unclear.