Serve an existing Streamlit app as an MCP server — agents drive it natively, no browser.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"streamlit-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# streamlit-mcp **Serve any Streamlit app as an MCP server.** Agents introspect your app's widgets, set values, click buttons, and read the rendered output and `session_state` — natively, over MCP, with **no browser automation**. 📖 **Documentation:** <https://dkedar7.github.io/streamlit-mcp/> ```bash pip install streamlit-mcp # or run with no install via: uvx streamlit-mcp ... # serve an app over MCP (stdio for local clients) streamlit-mcp serve app.py # ...or HTTP/SSE on loopback for local networked agents streamlit-mcp serve app.py --transport http --port 8000 # drive it yourself from the terminal (same engine the agent uses) streamlit-mcp inspect app.py streamlit-mcp call app.py --set "Name=agent" --click "Save" --read ``` Streamlit has no callback graph — it reruns the whole script per interaction — so streamlit-mcp drives the app headlessly through Streamlit's own test runtime (`streamlit.testing.v1.AppTest`) and returns the **semantic element tree**, not pixels. Gradio and Dash already shipped native app-as-MCP; this fills the Streamlit gap. ## Demo A normal Streamlit app (what a human opens in a browser) and what an agent does with the same app over MCP — `inspect` the widgets, `call` to set values / click / read the result. No browser: <table> <tr> <td width="50%"><img src="docs/assets/demo-app.png" alt="A Streamlit signup form in a browser"></td> <td width="50%"><img src="docs/assets/agent-view.png" alt="The streamlit-mcp CLI introspecting and driving the app"></td> </tr> <tr> <td align="center"><em>The app a human runs</em></td> <td align="center"><em>What the agent sees over MCP</em></td> </tr> </table> A human can also watch the agent work **live** in their browser — no refresh, no browser automation — by opting in with one `with` block (`from streamlit_mcp.live import live`). See the [live / human-in-the-loop guide](https://dkedar7.github.io/streamlit-mcp/live/). ## Use it with an MCP client **Claude Desktop / Cursor** — add to yo…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.