The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Term MCP Deepseek listing page.
See the command, risk, workspace, and limits before anything runs. Then keep a signed receipt of what actually happened.
Term MCP DeepSeek is a local, approval-first terminal control plane for MCP clients and humans. It gives DeepSeek an isolated advisory role while deterministic policy owns command planning, approval, bounded execution, live events, and signed evidence.
Explore the interactive project website →

Most terminal agents collapse suggestion and execution into one opaque moment. Term MCP DeepSeek makes the boundary visible:
Requirements: macOS or Linux, Python 3.10–3.13, and pipx.
The server prints a one-time bearer token. Open http://127.0.0.1:8000, paste that token, choose Inspect workspace, then select Build plan and Execute.
Expected result: the UI shows a low-risk pwd plan before execution, then a succeeded receipt with exit code 0, separate stdout/stderr, and a verified HMAC signature. No DeepSeek key is required.
Stop the server with Ctrl+C. The generated token and in-memory sessions disappear with the process.
Use this path when contributing or testing unreleased changes:
startup.sh creates .venv, installs the package, and delegates to the same term-mcp CLI used by packaged installations.
The default is APPROVAL_MODE=inspect with network disabled.
| Mode | Intended use | Writes | Project code | Approval |
|---|---|---|---|---|
inspect | Repository discovery | Blocked | Blocked | Long-running processes only |
confirm | Deliberate local work | Policy-scoped | Allowed by policy | Required for risky actions |
trusted | Pre-approved automation | Policy-scoped | Allowed by policy | Pre-approved, always receipted |
Confirm and trusted modes are not an operating-system sandbox. Test untrusted repositories in a disposable container or VM. Keep WORKSPACE_ROOT narrow, ALLOW_NETWORK=false, and never expose the HTTP service directly to an untrusted network.
Read SECURITY.md and the threat model before enabling a wider command surface.
Run a complete local quality gate with:
The repository includes six small workflows for repository inspection, Python and JavaScript test discovery, log inventory, port configuration, and proof of the read-only boundary. Every recipe is schema-versioned, inspect-only, network-free, write-free, bounded, and checked by the production policy before it can run.
Browse the recipe catalog and contribution template. CI executes the complete catalog and runs the no-model benchmark.
See the proof gallery for signed, sharing-redacted success, cancellation, and timeout receipts. The three short demos apply the recipes to an unfamiliar repository, a test surface, and local incident evidence.
The server targets modern MCP 2026-07-28 and supports the legacy 2025-11-25 initialize lifecycle. HTTP and STDIO share one dispatcher and tool catalog.
Recommended local STDIO configuration:
STDOUT contains JSON-RPC messages only; diagnostics go to STDERR. See the MCP compatibility matrix for protocol details and dated client evidence.
Protected routes require Authorization: Bearer $AUTH_TOKEN. Public routes are intentionally limited to the UI shell, health, demos, static assets, and receipt schema.
| Method | Path | Auth | Purpose |
|---|---|---|---|
GET | /health | Public | Readiness and package version |
GET | / | Public | Approval-first mission control |
GET | /demo/scenarios | Public | No-key local demo catalog |
GET | /schemas/receipt-1.0.json | Public | Receipt JSON Schema |
POST | /mcp | Bearer | Modern or legacy MCP calls |
DELETE | /mcp | Bearer | Close a legacy MCP transport session |
GET | /mcp/info | Bearer | Runtime, limits, model, and protocol information |
POST | /sessions | Bearer | Create an isolated web execution session |
DELETE | /sessions/{id} | Bearer | Close a web session and stop its process |
GET | /stream?session_id=... | Bearer | Session-scoped execution events |
POST | /chat | Bearer | Advisory DeepSeek text; never execution |
POST | /receipts/validate | Bearer | Validate schema and local signature |
POST | /receipts/redact | Bearer | Remove private content and re-sign for sharing |
The /sessions, /stream, and /chat routes are web compatibility APIs, not separate MCP transports.
The image uses a pinned Python base, builds wheels in a separate stage, installs without network in the runtime stage, and runs as UID/GID 10001.
Open http://127.0.0.1:8000. The compose workspace mount is read-only because the default mode is inspect. Stop with docker compose down.
The no-key defaults are enough for local inspection. Copy .env.example only when persistent configuration is useful:
Do not commit .env. Add DEEPSEEK_API_KEY only for the optional advisor panel. The complete variable reference and deployment/rollback guidance are in operations.
| Area | Source of truth |
|---|---|
| Interactive overview and web docs | Project website |
| Product and trust boundaries | Architecture |
| Supported and unsupported behavior | Feature matrix |
| MCP versions and clients | Compatibility |
| Deployment and rollback | Operations |
| Security assumptions | Security policy and threat model |
| Safe examples | Recipe catalog |
| Receipts and concrete demos | Proof gallery and demo scripts |
| Local performance evidence | Benchmark contract |
| Adoption without telemetry | Adoption evidence |
| Direction and acceptance criteria | Roadmap |
| Release history | Changelog |
Small tests, protocol fixtures, safe recipes, accessibility improvements, and client compatibility reports are welcome. Start with CONTRIBUTING.md, run ./local_ci.sh, and include a redacted receipt when a terminal-execution bug produces one.
Security vulnerabilities belong in GitHub private vulnerability reporting, never in a public issue.
MIT — see LICENSE.