Drift MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Drift MCP Serverwhy does this function exist in auth.ts?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Drift is a semantic version-control layer that wraps Git. Every commit becomes an Intent: the prompt that produced the change, the agent model behind it, the AST-level mutations, an optional checkpoint of the agent's cognitive state, and a cryptographic Ed25519 signature — all linked into an auditable, replayable graph.
Built for the AI era. When more than 80% of code is generated, text diffs are useless for review: they show what changed, never why. Drift rejects broken syntax before it enters history, answers "why does this function exist?" with the originating prompt, and lets a crashed agent resume from its last checkpoint.
Quickstart
Give your agent Drift: Claude Code, Antigravity, Codex App, Codex CLI, Cursor, Factory Droid, Gemini CLI, GitHub Copilot CLI, Kimi Code, OpenCode, Pi.
Prefer no agent? Use the CLI, the GitHub App, the
GitHub Action, or VS Code. Want the 5-minute "aha"
first? Seed the demo repo and run drift blame.
Documentation: Quickstart (5-minute start) · API reference (CLI + MCP tools) · Architecture (how Drift works under the hood)
Verified live on Windows 11 (Node v24.18.0, 2026-08-06): fresh clone →
first drift blame in ~8.1 s, 10/10 checks pass, no registry 404 — and the
npm path (packed @drift/* chain installed into an empty dir) answers the MCP
handshake with all six tools in ~1 s. See the
full measured tables.
Related MCP server: gitwhy-mcp
How it works
It starts the moment you run drift init. Drift creates .drift/ — a SQLite DAG,
a config, and a per-repo Ed25519 keypair — and from then on every commit becomes
an intent.
When you (or your agent) run drift realize -p "<prompt>", Drift doesn't just
commit. It parses the change semantically, rejects the commit if the syntax is
broken (exit 2 — broken code never enters history), redacts secrets from your
prompt, computes an AST delta (ADDED / MODIFIED / DELETED / MOVED / RENAMED),
signs the intent, and stores it content-addressed in .drift/objects/ before
committing with a Drift-Intent: trailer.
After that, drift blame can walk any line or function back to the prompt that
created it, drift context hydrates the last intents for a file so an agent
grounds itself before editing, and drift verify re-runs the recorded
verification command. A crashed agent runs drift replay --checkout and resumes
exactly where it left off.
And because these are MCP tools, your coding agent can use them directly —
drift_realize instead of git commit.
Deeper reading: the full command reference lives in docs/api.md (CLI flags, exit codes, JSON schemas, MCP tool inputs), and docs/architecture.md explains the storage model, encryption at rest, the webhook app, and the security boundaries.
Installation
Installation differs by harness. If you use more than one, install Drift
separately for each one. All harnesses expose the same six tools:
drift_realize, drift_context, drift_replay, drift_blame, drift_verify,
drift_log.
Status: the
@drift/*npm packages are not published yet. Every section below leads with the clone path — it works right now from a checkout of this repository. Thenpx -y @drift/mcp/npx -y @drift/clione-liners activate automatically once the packages land on npm; until then they return a 404, so use the clone command shown first.
Every command below is backed by a real manifest in this repository
(.claude-plugin/plugin.json, .plugin/plugin.json,
.cursor-plugin/plugin.json, .codex-plugin/plugin.json,
gemini-extension.json, plugin.json, .factory-plugin/,
package.json → pi) or a ready-made config in
examples/harness-configs/. Today, installation needs Node.js ≥ 24,
npm and a clone of this repository (the MCP server runs straight from
packages/drift-mcp/dist/index.js; no build step needed). Once the
@drift/* packages are published, the same configs work via
npx -y @drift/mcp with no clone.
Claude Code
Install as a plugin from the Drift marketplace (plugin-style, like Superpowers):
/plugin marketplace add lilcipherx/drift
/plugin install drift@driftOr add the Drift MCP server directly (project scope) — from a clone:
claude mcp add drift --env DRIFT_REPO=/abs/path/to/your/repo -- node /path/to/drift/packages/drift-mcp/dist/index.jsOnce the packages are published, the same command works via npx (no clone):
claude mcp add drift --env DRIFT_REPO=/abs/path/to/your/repo -- npx -y @drift/mcpOr copy the ready-made config:
cp examples/harness-configs/claude-code/.mcp.json .mcp.jsonVerify with claude mcp list — you should see drift with its six tools.
The marketplace manifest lives at
.claude-plugin/marketplace.jsonin this repository (github-sourcelilcipherx/drift, strict plugin →.claude-plugin/plugin.jsonin the same repo).
Antigravity
Install Drift as a plugin from this repository:
agy plugin install https://github.com/lilcipherx/driftAntigravity runs the plugin's session-start hook, so Drift is active from the first message. Reinstall with the same command to update.
Codex App
In the Codex app, open Settings → MCP servers and add:
Name:
driftCommand:
node(clone path) — ornpxonce the packages are publishedArgs:
/path/to/drift/packages/drift-mcp/dist/index.js— or-y @drift/mcpafter publicationEnv:
DRIFT_REPO=/abs/path/to/your/repo
Codex CLI
Add the Drift MCP server to ~/.codex/config.toml (from a clone):
[mcp_servers.drift]
command = "node"
args = ["/path/to/drift/packages/drift-mcp/dist/index.js"]
env = { DRIFT_REPO = "/abs/path/to/your/repo" }Once published, the same server runs via npx (no clone):
[mcp_servers.drift]
command = "npx"
args = ["-y", "@drift/mcp"]
env = { DRIFT_REPO = "/abs/path/to/your/repo" }Restart Codex, then ask for drift_blame / drift_context in any session.
Cursor
Copy the ready-made config and enable MCP servers in Cursor settings:
cp examples/harness-configs/cursor/mcp.json .cursor/mcp.jsonThen ask for drift_blame in chat.
Factory Droid
Register the marketplace:
droid plugin marketplace add https://github.com/lilcipherx/driftInstall the plugin:
droid plugin install drift@drift
Gemini CLI
Install the extension:
gemini extensions install https://github.com/lilcipherx/driftUpdate later:
gemini extensions update drift
GitHub Copilot CLI
Add the Drift MCP server (from a clone):
copilot mcp add drift -e DRIFT_REPO=/abs/path/to/your/repo -- node /path/to/drift/packages/drift-mcp/dist/index.jsOnce the packages are published, the same command works via npx (no clone):
copilot mcp add drift -e DRIFT_REPO=/abs/path/to/your/repo -- npx -y @drift/mcpOr copy the ready-made config to .github/mcp.json and restart Copilot.
Kimi Code
Drift is available in Kimi Code's plugin marketplace.
Open Kimi Code's plugin manager:
/pluginsGo to
Marketplace>Driftand install it.Or install directly from this repository:
/plugins install https://github.com/lilcipherx/driftDetailed docs: docs/README.kimi.md
OpenCode
OpenCode uses its own plugin install; install Drift separately even if you already use it in another harness.
Tell OpenCode:
Fetch and follow instructions from https://raw.githubusercontent.com/lilcipherx/drift/main/.opencode/INSTALL.mdDetailed docs: docs/README.opencode.md
Pi
Install Drift as a Pi package from this repository:
pi install git:github.com/lilcipherx/driftFor local development, run Pi with this checkout loaded as a temporary package:
pi -e /path/to/driftVS Code
Add the Drift MCP server to .vscode/mcp.json (native VS Code MCP support):
cp examples/harness-configs/claude-code/.mcp.json .vscode/mcp.jsonVS Code picks it up on window reload.
CLI
From a clone (works today):
git clone https://github.com/lilcipherx/drift.git && cd drift
npm install
node packages/drift-cli/dist/cli.js --helpOnce the CLI is published to npm, npx works without cloning:
npx -y @drift/cli --helpOn your own repository:
node /path/to/drift/packages/drift-cli/dist/cli.js init
# … edit a file …
node /path/to/drift/packages/drift-cli/dist/cli.js realize -p "Fix race condition in token refresh" --agent --model claude-3-5-sonnet
node /path/to/drift/packages/drift-cli/dist/cli.js logGitHub App
Install @drift/app to get intent summaries on every pull request:
Reads
Drift-Intent:trailers from PR commits, hydrates the intent objects from.drift/objects/at the PR head, and posts a semantic summary comment — review the intent, not 2,000 lines of diff. Comments are idempotent: the app updates its own marker comment in place, so they never accumulate.Runs as a webhook server:
drift-app start(seepackages/drift-app/app.ymlfor the app manifest,scripts/webhook-proxy.shfor local debugging).
GitHub Action
Check intent health in CI:
- uses: lilcipherx/drift@v0.3.0
with:
command: log # or: doctor / verify <intent-id>Demo
The 5-minute "aha" — a real Drift history, generated by the CLI itself:
bash scripts/seed-demo.sh
cd examples/demo-repo
node ../../packages/drift-cli/dist/cli.js log
node ../../packages/drift-cli/dist/cli.js blame src/auth.ts --function refreshTokenblame prints the prompt, model and a valid signature for the function:
src/auth.ts:12 (refreshToken)
AGENT @ Drift Demo
model: claude-3-5-sonnet
prompt: Fix race condition in token refresh by de-duplicating in-flight refreshes
intent: did_2941b4547b4ed505a7c37190247768a7
commit: 087c492f… signature: validThe Basic Workflow
init — Creates
.drift/(SQLite DAG, config, Ed25519 keypair). Never rewrites history; deleting.drift/leaves a fully functional git repo.realize — Commit with intent. Syntax gate (exit 2), secret redaction, AST delta, Ed25519 signature,
Drift-Intent:trailer. This isgit commitfor the AI era.log — Timeline of intents: id, author (agent vs human), model, prompt.
blame / context —
blame --line|--functionwalks a symbol back to its originating prompt;context <file>hydrates the last N intents for grounding.verify — Re-runs the recorded verification command for an intent and checks the Ed25519 signature against the object file (never against DB rows).
replay — Restore a checkpointed agent state;
--checkoutresets the worktree. Crash recovery for agents.doctor — DAG integrity, signature checks, orphan cleanup, encryption-key check when encryption is enabled.
The agent checks the intent before any task. Mandatory for anyone touching generated code.
What's Inside
Core
Package | What it does |
| The |
| Intent store (SQLite DAG), git wrapper, Ed25519 signatures, secret redaction, AES-256-GCM encryption at rest |
| Semantic parser (TypeScript/JavaScript, Python) + AST deltas with a real syntax gate |
Agent integration
Package | What it does |
| MCP server — six tools for Claude Code / Codex / Cline, delegates to the CLI |
| Typed SDK + Zod intent schemas |
| GitHub App — |
Review & CI
Package | What it does |
| GitHub Action (composite) — |
Philosophy
Semantics over text — diffs show what; intents show why. Always.
Broken code never enters history — the syntax gate is the front door.
Evidence over claims — every intent is signed; every claim is verifiable.
Security by default — secrets redacted, telemetry off, no network calls, optional AES-256-GCM encryption at rest (v0.2.0+).
Simplicity — zero native dependencies, strict git compatibility, no rewriting of history.
Security
Every intent is Ed25519-signed; verification uses the object-file canonical JSON, so signature checks never need the master key.
Prompts are regex-redacted for secrets (AWS, OpenAI, GitHub, Slack, JWT, PEM, …) before any storage.
Encryption at rest (v0.2.0):
[encryption] enabled = true+DRIFT_MASTER_KEYencryptspromptandagentStatewith AES-256-GCM (AAD-bound to the intent id). Note: the commit message keeps the plaintext prompt by design (PRD §9.1) — see SECURITY.md.Keys are never committed (
.drift/keys/is gitignored) except throwaway demo keys.
Evaluation
The eval harness (PRD §22) drives the real CLI with mock file states — no LLM calls, no network — and records a baseline:
npm run eval # run scenarios + compare against baseline (regression gate)
npm run eval:record # re-record eval/baseline.jsonMetrics gated at >5% regression (PRD §22.3): syntax-error rejection rate (must be 100%), blame accuracy, replay fidelity. Scenarios live in eval/scenarios/.
Contributing
See CONTRIBUTING.md. The general flow:
Fork the repository.
Create a branch for your work.
Keep
npm testgreen (110 tests: unit, temp-git-repo integration, MCP JSON-RPC e2e, GitHub App handler + live webhook-server E2E + client-abortgraceful-shutdown robustness).
Keep the eval baseline green:
npm run eval(PRD §22).Submit a PR using the template.
Design decisions are tracked in docs/adrs.md — note that the PRD
originally chose Rust (ADR-003); this implementation ships TypeScript-first
(ADR-006) for a zero-native-dependency MVS. The drift-ast parser interface is
the drop-in point for a future tree-sitter implementation.
Updating
Once published, MCP servers launched via npx -y @drift/mcp pick up new
versions automatically (npx always fetches the latest published release).
Until then, servers launched from a clone (the commands shown in
Installation) track this checkout — update with
git pull origin main
npm installReleases are tagged on the
releases page (v0.1.0,
v0.2.0, v0.2.1, …).
Changelog: CHANGELOG.md.
License
MIT — see LICENSE. Security notes: SECURITY.md.
Community
Repository: github.com/lilcipherx/drift
Releases: github.com/lilcipherx/drift/releases
Documentation: quickstart · API reference · architecture ·
examples/demo-repoCode of Conduct: CODE_OF_CONDUCT.md
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceGives AI coding assistants persistent memory, safety controls, and project awareness by tracking coding sessions, protecting critical files from modifications, and managing approval workflows with automatic changelog generation.1920MIT
- Alicense-qualityDmaintenanceThe shared AI context engine for git — save, search, and share the reasoning behind code changes. Captures the why behind every commit and slide on PRs for coding agents.34MIT
- AlicenseAqualityAmaintenanceChange tracking for AI-era codebases. AI agents call it to log structured change events (entity + diff + reasoning) before the session ends, then query history with diff, blame, history, changeset, and search. Captures the intent that would otherwise evaporate.819MIT
- Alicense-qualityDmaintenanceProvides a memory layer for AI coding agents with Git-powered version control, enabling automatic tracking of prompts, context, and code diffs.190MIT
Related MCP Connectors
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
33 tools that make AI write, implement, and verify intent against explicit, testable constraints.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lilcipherx/drift'
If you have feedback or need assistance with the MCP directory API, please join our Discord server