Dudley MCP server
The intelligence layer above your IDE. Link Dudley into Cursor, Claude Code, Windsurf, or any MCP-speaking editor — and get memory, past decisions, and expert-persona deliberation your editor's context window can't hold.
Your IDE knows the current file. Dudley knows why you got here.
What makes it different
- Repo-scoped memory that fills itself. The server detects your git remote
and binds the workspace to a Routabout project. When you tell Dudley
"we decided to drop RabbitMQ", the decision is captured to that repo's
Decision Vault automatically — and you see it happen:
📌 Decision captured to this repo's vault: "…". Months later, in a different IDE,recall_decision("rabbitmq")answers with the stored reasoning, not a fresh guess. - Never-empty on day one. First use in a repo auto-seeds the vault from
your existing ADRs / decision docs (
docs/adr/*,DECISIONS.md, …) — doc-only, idempotent. - One durable thread per repo.
ask_dudleycontinues the sameIDE · <repo>conversation across restarts and across editors, so context accumulates instead of resetting per session. Outside a git repo, asks stay stateless.
Tools
| Tool | What it does |
|---|---|
ask_dudley(question, lens?, conversation_id?) |
Memory-aware Q&A over your accumulated project context. Optional lens answers through an expert persona (Zeus/Flint/Maeve/Len/Ellie/Grace/Ruby/Percy) with Dudley's single recommendation + visible deliberation. Decisions stated in the exchange are captured to the repo's vault, with a visible 📌 acknowledgment. |
recall_decision(topic, project_id?) |
The Decision Vault: why did we choose X — a synthesized answer PLUS the source decisions (summary, rationale, confidence, date) so you can verify it. Auto-scoped to the current repo; auto-seeds from repo docs on first use. |
save_decision(summary, rationale?, alternatives?, tradeoffs?) |
Explicit capture — record a decision with its alternatives and tradeoffs at full confidence. |
bootstrap_repo(limit?) |
Seed the vault from the repo's ADR/decision docs on demand (idempotent; also runs automatically on first recall_decision). |
review_with(code, models?, focus?, sequential?) |
Cross-model code review — decorrelated parallel panel by default, sequential council opt-in. Model-attributed, cost shown. |
project_history(days?, project_id?) |
Rollup for the repo: activity, PRs, CI, decisions captured. |
eng_digest(days?) |
Same rollup, across all your projects — the daily standup view. |
Design + custody spec: ../docs/DUDLEY_MCP_WEDGE.md.
Setup
-
Create a scoped API key in Routabout settings — it looks like
sk-rb-…. The API-keys screen shows this exact config with your fresh key inlined, ready to paste. (A headless client uses an API key, not an interactive login.) -
Install the
dudley-mcpcommand. Until it's on a public index, install from this repo (clone it first):uv tool install ./mcp_server # or: pipx install ./mcp_server
uvx dudley-mcp(zero-install) will work once the package is published to PyPI — that's a naming/ownership decision still pending; use the local install above in the meantime. -
Add the server to your MCP client config.
Cursor / Claude Code (~/.cursor/mcp.json or the client's MCP settings) — using the installed console script:
{
"mcpServers": {
"dudley": {
"command": "dudley-mcp",
"env": {
"ROUTABOUT_API_KEY": "sk-rb-your-key-here",
"ROUTABOUT_API_URL": "https://routabout-production.up.railway.app"
}
}
}
}
Local dev (run straight from a clone, no install — deps on your PATH):
{
"mcpServers": {
"dudley": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"env": {
"ROUTABOUT_API_KEY": "sk-rb-your-key-here",
"ROUTABOUT_API_URL": "http://localhost:8000"
}
}
}
}
Launch your editor from the repo you want Dudley bound to — the server reads the workspace's git remote to scope memory, recall, and digests to that repo.
Environment
| Var | Required | Default | Notes |
|---|---|---|---|
ROUTABOUT_API_KEY |
yes | — | Scoped key, sk-rb-…. Never committed; lives only in your client config. Leaked or done with it? Revoke it in Routabout settings — keys are cheap, regret isn't. |
ROUTABOUT_API_URL |
no | https://routabout-production.up.railway.app |
Point at localhost for dev. |
ROUTABOUT_TIMEOUT |
no | 120 |
Request timeout (seconds). |
Privacy & custody
The complete inventory of what leaves your machine — short enough to audit, specific enough to falsify — is in TRUST.md.
This server sends only what you submit — never Cabildo-held profile data. A
persona or council lens that reaches a frontier model inherits the backend's
dehydration + no-training contract. review_with (cross-model review) is a
standard-tier, cost-shown operation; the backend refuses it in privacy/ephemeral
mode by design.
Captured decisions and conversation history are owner-scoped and retained under
Routabout's standard terms (no-training default). Repo binding uses only the
git remote URL — file contents never leave your machine unless you paste them
into a question or review_with.
MCP sessions run in Standard mode (memory on). An API key resolves your account but not a per-session privacy mode — if you use Privacy mode in the app, know that IDE asks through this server persist to your project memory. That persistence is the product; we say it plainly rather than imply otherwise.
Captured decisions pass a redaction gate before they're stored: direct
identifiers (email, SSN, phone, IBAN, card) and credential-shaped tokens
(sk-…, sk_live_…, ghp_…, AKIA…, …) are replaced with typed markers —
the decision is kept, the identifier never is. The 📌 acknowledgment shows
exactly what was stored, redactions included.
Metadata
Release files for dudley-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dudley_mcp-0.2.0.tar.gz | 17.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dudley_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.5 kB
Release files / dudley_mcp-0.2.0.tar.gz
| Download URL | dudley_mcp-0.2.0.tar.gz |
|---|---|
| Size | 17.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09ec2d3ce5e6987f12c08db57cb0544d15e50ee2e3452a87b902779c308a53a9
|
|
BLAKE2b-256 checksum How to use checksums |
e989eb1d3cabca1e95ee62eb1f88c27917e9e95705f33b31b47a970501cb8d13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / dudley_mcp-0.2.0-py3-none-any.whl
| Download URL | dudley_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cbbc419a66529a4f5292f2241fe3970b0ec8b66e0047fc69e6ad08e288d97460
|
|
BLAKE2b-256 checksum How to use checksums |
69180e59167029f84116ffcc1747758c693907038a92f7cfe4c85e04ebcd172a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|