Skip to main content

Dudley MCP server — the intelligence layer (memory, decisions, personas) above your IDE.

Project description

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_dudley continues the same IDE · <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

  1. 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.)

  2. Install the dudley-mcp command. 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.

  3. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dudley_mcp-0.2.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dudley_mcp-0.2.0-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file dudley_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: dudley_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for dudley_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 09ec2d3ce5e6987f12c08db57cb0544d15e50ee2e3452a87b902779c308a53a9
MD5 4b421731a0905568aece210276e4727b
BLAKE2b-256 e989eb1d3cabca1e95ee62eb1f88c27917e9e95705f33b31b47a970501cb8d13

See more details on using hashes here.

File details

Details for the file dudley_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dudley_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for dudley_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cbbc419a66529a4f5292f2241fe3970b0ec8b66e0047fc69e6ad08e288d97460
MD5 268071ed1bbdd1c575b1a1ebddde353f
BLAKE2b-256 69180e59167029f84116ffcc1747758c693907038a92f7cfe4c85e04ebcd172a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page