Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
33 tools that make AI write, implement, and verify intent against explicit, testable constraints.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
Authorization비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
이 주소는 요청 header에 키가 필요한데, 커넥터 추가 메뉴에서는 넣을 수 없어요. 대신 Claude Code, Cursor, VS Code를 쓰세요.
터미널에서 이 명령어를 실행하세요
claude mcp add --transport http ivd https://mcp.ivdframework.dev/mcp --header 'Authorization: Bearer {api_key}'실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"ivd": {
"url": "https://mcp.ivdframework.dev/mcp",
"headers": {
"Authorization": "Bearer {api_key}"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"ivd": {
"type": "http",
"url": "https://mcp.ivdframework.dev/mcp",
"headers": {
"Authorization": "Bearer {api_key}"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 주소는 요청 header에 키가 필요한데, 커넥터 추가 메뉴에서는 넣을 수 없어요. 대신 Claude Code, Cursor, VS Code를 쓰세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
Authorization 비밀 필수 HTTP header이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
아직 이 서버의 도구 목록을 읽지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검
레지스트리 이름이 GitHub 계정 leocelis 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요
아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요
아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: Authorization
제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(3.1.2)은 4개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, HotCodePush
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
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.
Manage over-the-air (OTA) updates for React Native, Expo, Capacitor and Cordova apps.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Intent-Verified Development (IVD)
A framework where AI writes the intent, implements against it, and verifies — so hallucinations are caught and turns drop to one.
→ ivdframework.dev — full docs, hosted server, and access request
New here? Start with judgment_explained.md — a 5-minute, plain-English on-ramp that explains what problem the Judgment phase solves and how, before you read the spec.
AI agents hallucinate not because they're bad — but because you're feeding the wrong knowledge system.
Research shows LLMs rely primarily on contextual knowledge (the prompt) over parametric knowledge (training data) — but only when the context is structured and precise (Huang et al., ICLR 2024; 9-LLM contextual vs. parametric study, 2024). When you give vague prose — a PRD, a user story, a chat message — the context channel is underloaded. The model fills the gaps from training. Those gaps are the hallucinations.
Without IVD With IVD
You: "Add CSV export" You: "Add CSV export for compliance" AI: [builds with wrong columns] AI: [writes intent.yaml with constraints] You: "No, these columns, ISO dates" You: "Yes, that's what I meant" AI: [rewrites, still wrong] AI: [implements, verifies against constraints] You: "Still not right..." You: "Done. First try." Many turns. Many hallucinations. One turn. Mismatches caught by the constraint check, not by you.
IVD saturates the contextual channel with structured, verifiable intent — so the model has nothing to guess.
Works locally. No API key required. Under 5 minutes.
git clone https://github.com/leocelis/ivd.git && cd ivd
python3 examples/intent_demo/run_demo.py
Runs offline. Shows a vague prompt producing a hallucinated implementation, then the same request run against a structured intent artifact — with the constraint check catching the mismatch before you'd ever see it. This is the core loop this README is about; everything below is how to wire it into your own agent.
git clone https://github.com/leocelis/ivd.git
cd ivd ./mcp_server/devops/setup.sh # creates .venv, installs all deps
Important: command must point at the venv's Python — setup.sh installs IVD's dependencies into .venv/, not your system Python. Using "command": "python" here will fail with ModuleNotFoundError. Replace /path/to/ivd with your actual clone path.
Cursor (Settings → Features → MCP):
{
"servers": { "ivd": { "type": "stdio", "command": "/path/to/ivd/.venv/bin/python", "args": ["-m", "mcp_server.server"], "cwd": "/path/to/ivd" } } }
VS Code / GitHub Copilot (.vscode/mcp.json):
{
"mcpServers": { "ivd": { "command": "/path/to/ivd/.venv/bin/python", "args": ["-m", "mcp_server.server"], "cwd": "/path/to/ivd" } } }
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": { "ivd": { "command": "/path/to/ivd/.venv/bin/python", "args": ["-m", "mcp_server.server"], "cwd": "/path/to/ivd" } } }
A
pyproject.tomlnow ships in the repo (pip install .orpip install -e .
gives you an
ivd-mcpconsole command). A PyPI release (uvx ivd-mcp, no clone
required) is planned — see ROADMAP.md.
Ask your AI agent to use IVD tools. For example:
That's it. 32 of 33 tools work immediately with zero configuration — only ivd_search needs an OPENAI_API_KEY.
ivd_search requires embeddings. Generate them once (~$0.01, under a minute):
export OPENAI_API_KEY=your-key
./mcp_server/devops/embed.sh
1. You describe → what you want (natural language)
The key insight: clarification happens at the intent stage, not after code. The AI writes a verifiable contract, you approve it, then implementation is mechanical — and self-verifying.
If you already use spec-driven development (GitHub Spec Kit, OpenSpec), IVD adds what neither format provides by default: a test bound to each constraint. See docs/positioning.md.
33 tools available to any MCP-compatible AI agent (19 core + 10 Judgment tools (8 added in v3.0; ivd_judgment_check_installed and ivd_judgment_resolve added in v3.1) + 4 Canon tools added in v3.1):
| Tool | What it does |
|---|---|
ivd_get_context | Load framework principles, cookbook, or cheatsheet |
ivd_search | Semantic search across all IVD knowledge |
ivd_validate | Validate an intent artifact against IVD rules |
ivd_review_intent | Rank constraints by risk before implementation (human review gate) |
ivd_run_constraint_tests | Opt-in runner for allowlisted pytest nodes referenced by an intent |
ivd_attest | Process-attestation gate — check the agent actually *followed* the method (segmentation, re-read, coverage, joint satisfaction), not just that the artifact is well-formed |
ivd_import_spec | Parse a GitHub Spec Kit or OpenSpec spec.md into a constraint scaffold |
ivd_scaffold | Generate a new intent artifact from a template |
ivd_init | Initialize IVD in an existing project |
ivd_assess_coverage | Scan a project and report intent coverage |
ivd_load_recipe | Load a specific recipe pattern |
ivd_list_recipes | Browse all available recipes |
ivd_load_template | Load an intent or recipe template |
ivd_find_artifacts | Discover intent artifacts in a project |
ivd_check_placement | Verify artifact naming and placement |
ivd_list_features | Derive feature inventory from intent metadata |
ivd_propose_inversions | Generate inversion opportunities |
ivd_discover_goal | Help users who don't know what to ask |
ivd_teach_concept | Explain concepts before writing intent |
/.judgment/ exists*New to Judgment? Read
judgment_explained.mdfirst
— plain-English "what problem it solves and how" in 5 minutes — then the tool
table below and the runnable showcase further down will make immediate sense.
| Tool | What it does | |
|---|---|---|
ivd_judgment_init | Bootstrap .judgment/ folder + per-domain baselines | |
ivd_judgment_capture | Write a raw correction ledger entry (< 30s) | |
ivd_judgment_codify | Return a structured codify prompt for the agent | |
ivd_judgment_save_codified | Persist the agent's filled codify fields | |
ivd_judgment_pair | Capture a comparison_pair (Pearl Rung-1 alternative to A/B) | |
ivd_judgment_detect_patterns | Cluster ledger entries into patterns | |
ivd_judgment_inject_context | Prioritized judgment context for downstream agents | |
ivd_judgment_propose_recommendation | Draft recommendation against a pattern (with build/buy/hire/partner sub-types) | |
ivd_judgment_resolve | Close the loop: record an entry's resolution (outcome, whether it held) and move it `codified\ | paired → resolved`, so future runs don't re-derive a settled diagnosis. (v3.1) |
ivd_judgment_check_installed | Detect whether /.judgment/ exists. Never writes to disk — returns the ready-to-call init payload the agent must offer to the user with explicit permission. (v3.1) |
Architecture (v3.1): substance lives in the ivd/judgment/ engine package (typed @dataclass schemas; engine_version + reproducible SHA-256 hash on Pattern and InjectionResult for diffability and audit). mcp_server/tools/judgment.py is a thin facade that dispatches to the engine. Mirrors the Canon (Phase 0) architecture for symmetry. Server-level kill switch: IVD_JUDGMENT_TOOLS_ENABLED=false.
See it work. A runnable showcase walks through the full Judgment loop end-to-end — capture three real-world AI corrections, codify them, promote a Pattern, and watch the same LLM (gpt-4o-mini, temperature=0) generate different code on the same request after the Pattern enters its system message. No trust required — run it, read the terminal.
# From the ivd/ directory — runs offline, no API key required
python examples/judgment_demo/run_demo.py
OPENAI_API_KEY=sk-... python examples/judgment_demo/run_demo.py
The showcase simulates 3 weeks of an AI coding agent ignoring this project's React testing conventions across 3 different test files (PaymentForm.test.tsx, MetricsCard.test.tsx, ProfileSettings.test.tsx), feeds the 3 corrections through the 9 ivd_judgment_* tools, and writes 4 human-readable artifacts to examples/judgment_demo/output/: before.md (the agent's system message without Judgment), after.md (with the Pattern injected), diff.md (what Judgment added), and llm_responses.md (side-by-side Vitest test files with verdict).
Why this scenario: the project's testing conventions (renderWithProviders helper in src/test/test-utils.tsx, MSW server in src/test/mocks/server.ts, userEvent.setup() discipline) live ONLY in the repo. They do not exist in the LLM's training data, so a static system-prompt nudge cannot solve it — the model has to inherit the lesson from YOUR repo. That is precisely the use case Judgment is built for.
Representative result on the live LLM (gpt-4o-mini, temperature=0, n=3 trials, ~$0.001):
| Metric | Result |
|---|---|
| Framework defaults the BEFORE agent reached for | 2–3 of 3 (raw vi.fn() API mocks, bare render(), userEvent.click without setup()) |
| Project conventions the AFTER agent adopted | 3 of 3 (server.use(http.get(...)), renderWithProviders( ), const user = userEvent.setup()) |
| Project-local strings in AFTER (impossible from training data) | `renderWithProviders`, `src/test/mocks/server`, `src/test/test-utils` |
| injection_hash change (a
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요