Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
8ad79e4
docs: add stateless HTTP transport mode design spec
tmunzer-AIDE Jun 16, 2026
fc01b1c
docs: address spec review — deterministic elicitation guard + wording
tmunzer-AIDE Jun 16, 2026
b8b44b2
docs: spec cleanups — section order, tool count, experimental row
tmunzer-AIDE Jun 16, 2026
ed268e3
docs: add stateless HTTP mode implementation plan
tmunzer-AIDE Jun 16, 2026
9441bf9
feat: add stateless config field and validate_stateless_config
tmunzer-AIDE Jun 16, 2026
39f7f15
feat: fail closed in config_elicitation_handler under stateless http
tmunzer-AIDE Jun 16, 2026
ab7d536
docs: clarify why stateless elicitation guard is broader than the sta…
tmunzer-AIDE Jun 16, 2026
2820ca0
feat: resolve write-tool visibility at build time in create_mcp_server
tmunzer-AIDE Jun 16, 2026
f5dd825
feat: add on_call_tool request-scoped elicitation bypass for stateles…
tmunzer-AIDE Jun 16, 2026
14a27e8
docs: cross-reference the two danger-zone disable_elicitation paths
tmunzer-AIDE Jun 16, 2026
7f718e4
feat: thread stateless into start() and add stateless http launch path
tmunzer-AIDE Jun 16, 2026
3ec86b0
refactor: autouse stateless reset fixture + restore start() docstring
tmunzer-AIDE Jun 16, 2026
d5bdd31
feat: add --stateless flag, env parsing, and fatal exit on invalid co…
tmunzer-AIDE Jun 16, 2026
1047efe
test: parametrize disable_elicitation parse + named tuple destructuring
tmunzer-AIDE Jun 16, 2026
ef583a7
docs: document stateless HTTP mode and new env vars
tmunzer-AIDE Jun 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ OPTIONS:
-d, --debug Enable debug output
--enable-write-tools Enable write tools (by default only read tools are enabled for safety)
--disable-elicitation DANGER ZONE! Disable elicitation for write tools
--stateless Only when transport==http, serve statelessly so clients survive a server restart (no server->client push)
-h, --help Show help message

TRANSPORT MODES:
Expand Down Expand Up @@ -92,6 +93,7 @@ Set environment variables directly or via a `.env` file. Requirements differ by
| MIST_ENV_FILE | No | Path to .env file |
| MISTMCP_DEBUG | No | true/false (default: false) |
| MISTMCP_ENABLE_WRITE_TOOLS | No | true/false (default: false) |
| MISTMCP_DISABLE_ELICITATION | No | DANGER ZONE! true/false (default: false) |

### HTTP Mode

Expand All @@ -102,9 +104,35 @@ Set environment variables directly or via a `.env` file. Requirements differ by
| MISTMCP_PORT | No | HTTP port (default: 8000) |
| MISTMCP_DEBUG | No | true/false (default: false) |
| MISTMCP_ENABLE_WRITE_TOOLS | No | true/false (default: false) |
| MISTMCP_DISABLE_ELICITATION | No | DANGER ZONE! true/false (default: false) |
| MISTMCP_STATELESS | No | true/false (default: false) — survive server restart, no server->client push |

> **Note:** In HTTP mode, Mist API credentials are provided by the client (e.g. Claude, VS Code) via HTTP headers or query parameters, not as environment variables.

### Stateless HTTP mode

Set `MISTMCP_STATELESS=true` (or `--stateless`) with `--transport http` to serve each
request on a fresh transport. There is no server session id to go stale, so an
already-connected MCP client survives a server restart without reconnecting.

Trade-offs:

- **No server→client push.** Notifications and in-band elicitation are disabled.
- **Writes require the DANGER ZONE.** Because elicitation can't prompt, write tools are
only available with `--enable-write-tools` **and** `--disable-elicitation` (or
`MISTMCP_DISABLE_ELICITATION=true`), which auto-accepts. Starting stateless + http +
`--enable-write-tools` without `--disable-elicitation` is refused at startup.
- **Read-only stays safe.** Without write tools, destructive upgrade/utility actions
fail closed with a clear error.

Example:

```bash
uv run mistmcp --transport http --stateless # read-only, restart-safe
uv run mistmcp --transport http --stateless \
--enable-write-tools --disable-elicitation # writes (DANGER ZONE)
```


## Example: Claude Desktop / VS Code MCP Client

Expand Down
Loading
Loading