Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Block an action a signed mandate does not permit: amount, payee, audience, currency, window, intent.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://drift.rta.lat/mcpRun this in your terminal
claude mcp add --transport http drift https://drift.rta.lat/mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"drift": {
"url": "https://drift.rta.lat/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"drift": {
"type": "http",
"url": "https://drift.rta.lat/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://drift.rta.lat/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account mrpkk, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 22 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, AvaHR
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Read hiring data and create inactive assessment and questionnaire drafts for human review.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Continuous mandate enforcement for AI agents. Every action is checked against the signed mandate *before* it happens, not once at signing.
Live: [https://drift.rta.lat](https://drift.rta.lat) · MCP endpoint: [https://drift.rta.lat/mcp](https://drift.rta.lat/mcp)
pip install drift # or: pip install -e .
python3 -m drift.http_server --http 8080
An agent is granted a mandate: who to pay, how much, in which currency, until when. AP2 verifies that mandate once, at signature time. After that the agent acts alone, and nothing holds it inside its authority.
Measured proof that this matters, from the AP2 Python SDK itself:
verify_chain documents:
"enforcing expected_aud / expected_nonce on the terminal hop when provided"
but kb_sd_jwt.verify calls verify_expected_claims only when typ in TYP_TERMINAL, and a kb+sd-jwt+kb token — which the SDK itself produces whenever the payload carries a cnf — falls into TYP_INTERMEDIATE:
hop type : kb+sd-jwt+kb aud in token : https://attacker.example/ap2 expected_aud : https://honest-merchant.example/ap2 ACCEPTED a token with the wrong audience.
The protocol an agent trusts with its spending authority does not check that the authority was not substituted. drift checks it.
| # | rule | catches |
|---|---|---|
| 1 | amount | over the limit — the most common form of drift |
| 2 | payee | wrong recipient |
| 3 | audience | payment redirected to someone else |
| 4 | currency | currency substituted |
| 5 | window | outside the validity period |
| 6 | intent | intent outside the allowlist |
Default is DENY. Rules run in fixed order, so a refusal names the most important reason rather than an incidental one.
| tool | purpose |
|---|---|
drift_check | check one action against a mandate |
drift_session | check a sequence, get a report with a chain fingerprint |
drift_explain | show the rules in the order they apply |
No SSE, no stateful sessions, no HTTP framework. Standard library only.
from drift import Mandate, Drift, Action
m = Mandate( payee_id="shop", audience="https://merchant.example/ap2", max_amount_minor=10_000, currency="USD", valid_from=1_700_000_000, valid_until=1_700_086_400, allowed_intents=("buy",), ) d = Drift(m) verdict, rule = d.submit(Action( intent="buy", payee_id="shop", audience="https://merchant.example/ap2", amount_minor=99_999, currency="USD", at=1_700_000_060, )) print(verdict, rule) # DENY amount
intent arrives from the agent and is untrusted input. drift bounds the damage; it does not certify the intent.If an agent controls both intent and amount, it can lie in both. Closing that gap is attest's job: attest proves afterwards, drift bounds beforehand. They are complements.
{
"mcpServers": { "drift": { "url": "https://drift.rta.lat/mcp" } } }
That block is how our own agents call this server. Tools: drift_check (one action), drift_session (a sequence), drift_explain (the six rules and why each exists). 100 free checks per day, then $0.005 per call over x402.
Apache-2.0.