/ 디렉터리 / 플레이그라운드 / drift
● 커뮤니티 dadbodgeoff ⚡ 바로 사용

drift

제작: dadbodgeoff · dadbodgeoff/drift

Give Claude long-term memory of your codebase's conventions and past decisions — across every session, not just today's.

drift is a codebase-intelligence MCP server. It scans your repo, extracts patterns and conventions (naming, error handling, layering), and remembers architectural decisions across sessions so every new chat inherits your team's context. Works offline as a CLI too.

왜 쓰나요

핵심 기능

라이브 데모

실제 사용 모습

drift.replay ▶ 준비됨
0/0

설치

클라이언트 선택

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config 열기. 저장 후 앱 재시작.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

Cursor는 Claude Desktop과 동일한 mcpServers 스키마 사용. 프로젝트 설정이 전역보다 우선.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

Cline 사이드바의 MCP Servers 아이콘 클릭 후 "Edit Configuration" 선택.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop과 같은 형식. Windsurf 재시작 후 적용.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "drift",
      "command": "uvx",
      "args": [
        "drift"
      ]
    }
  ]
}

Continue는 맵이 아닌 서버 오브젝트 배열 사용.

~/.config/zed/settings.json
{
  "context_servers": {
    "drift": {
      "command": {
        "path": "uvx",
        "args": [
          "drift"
        ]
      }
    }
  }
}

context_servers에 추가. 저장 시 Zed가 핫 리로드.

claude mcp add drift -- uvx drift

한 줄 명령. claude mcp list로 확인, claude mcp remove로 제거.

사용 사례

실전 활용법: drift

Onboard an AI assistant to your codebase's conventions

👤 Tech leads tired of reminding Claude 'no, we don't use classes here' ⏱ ~20 min beginner

언제 쓸까: First session on a new repo, or after a big refactor that changed conventions.

사전 조건
  • drift installed — uvx drift or install globally
흐름
  1. Run the initial scan
    Run drift scan on this repo. Tell me what patterns you detected around error handling, module structure, and naming.✓ 복사됨
    → Concrete convention summary with examples
  2. Record decisions you want preserved
    Record these team decisions: we use Result<T,E> not exceptions, one controller per feature folder, snake_case for file names. Tag them 'conventions'.✓ 복사됨
    → Confirmation; entries queryable later
  3. Verify future sessions pick it up
    In a new session: what conventions does this repo follow?✓ 복사됨
    → Claude recites the decisions you recorded

결과: Every future AI session starts with your team's conventions loaded — fewer corrections, more productive chats.

함정
  • Patterns are inferred from existing code, including bad code — Review the initial scan and delete any 'conventions' that are actually tech debt you're trying to escape
  • Decision memory drifts from reality if you forget to update it — Treat memory entries like docs — review quarterly
함께 쓰기: filesystem · github

Enforce team conventions during PR review

👤 Code reviewers ⏱ ~10 min intermediate

언제 쓸까: Before approving a PR, check it didn't silently break team patterns.

흐름
  1. Load this PR's diff
    Load the diff for PR #213 and compare it against the conventions drift has recorded.✓ 복사됨
    → List of convention-matches and misses
  2. Draft review comments for deviations
    For each deviation, draft a polite review comment citing the convention.✓ 복사됨
    → Comment text per finding

결과: Consistent PR reviews without the reviewer having to remember every unwritten rule.

함정
  • New patterns may be intentional — don't be dogmatic — Let the author override with a 'new pattern' decision that gets recorded for future PRs
함께 쓰기: github

Maintain a lightweight architecture decision log

👤 Any team that keeps forgetting why choices were made ⏱ ~5 min beginner

언제 쓸까: Instead of a formal ADR folder no one updates.

흐름
  1. Record a decision when made
    Record decision: we picked Postgres over DynamoDB because of ad-hoc query needs. Date today. Tags: db, architecture.✓ 복사됨
    → Entry saved with ID
  2. Query later when the question returns
    Why did we pick Postgres?✓ 복사됨
    → The stored decision surfaces

결과: Institutional memory that survives turnover.

조합

다른 MCP와 조합해 10배 효율

drift + filesystem

drift knows the conventions, filesystem does the edits

Using the conventions drift has recorded, refactor src/api/users.ts to match. Use filesystem to apply edits.✓ 복사됨
drift + github

Review incoming PRs against recorded conventions

Fetch PR #88, check it against drift conventions, draft review comments for any drift.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
scan_codebase path: str First session, or after large refactors free; CPU-bound
list_conventions tag?: str Load context at session start free
record_decision title: str, body: str, tags?: str[] When team agrees on something non-obvious free
query_memory query: str When Claude should recall past context free (local embeddings)
detect_pattern area: str Ad-hoc 'how do we normally do X here?' free

비용 및 제한

운영 비용

API 쿼터
None — fully local
호출당 토큰
Convention summaries: ~1k tokens. Full scan dumps can be 10k+
금액
Free and open source
Load summary conventions at session start, not the full scan. Full scan only on refactor.

보안

권한, 시크릿, 파급범위

자격 증명 저장: Local SQLite or filesystem only
데이터 외부 송신: None by default — runs fully offline

문제 해결

자주 발생하는 오류와 해결

Scan hangs on a large monorepo

Exclude generated and vendor directories via .driftignore (same syntax as .gitignore).

확인: drift scan --dry-run
Memory query returns nothing relevant

Rebuild local embeddings index; new decisions don't surface until indexed.

확인: drift reindex
Claude doesn't use recorded conventions

Make sure the MCP is listed first in your client config so its context loads at the start of every session.

확인: claude mcp list

대안

drift 다른 것과 비교

대안언제 쓰나단점/장점
MARM-SystemsYou want general cross-session memory not specific to codeLess code-aware; more general notes
llm-context.pyYou want rule-driven code bundling rather than memoryNo persistence layer
Plain ADRs in the repoYou prefer docs-as-codeAI has to read them each session — higher token cost

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기