Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
AI-agent programming language. JSON AST in, WASM out. Typed, effect-tracked, Z3-verified.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"edict": {
"command": "npx",
"args": [
"-y",
"edict-lang"
]
}
}
}ターミナルでこれを実行します
claude mcp add edict -- npx -y edict-langプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"edict": {
"command": "npx",
"args": [
"-y",
"edict-lang"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"edict": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"edict-lang"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Sowiedu で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.9.2)がレジストリに届いたのは8 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, EmbeddedCI BenchPod
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況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.
Drive a BenchPod hardware-in-the-loop bench: power, flash, UART, I2C, CAN, analog and logic.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A programming language designed for AI agents. No parser. No syntax. Agents produce AST directly as JSON.
Edict is a statically-typed, effect-tracked programming language where the canonical program format is a JSON AST. It's purpose-built so AI agents can write, verify, and execute programs through a structured pipeline — no text parsing, no human-readable syntax, no ambiguity.
Agent (LLM)
│ produces JSON AST via MCP tool call ↓ Schema Validator ─── invalid? → StructuredError → Agent retries ↓ Name Resolver ────── undefined? → StructuredError + candidates → Agent retries ↓ Type Checker ─────── mismatch? → StructuredError + expected type → Agent retries ↓ Effect Checker ───── violation? → StructuredError + propagation chain → Agent retries ↓ Contract Verifier ── unproven? → StructuredError + counterexample → Agent retries (Z3/SMT) ↓ Code Generator (pure-JS WASM encoder) → WASM → Execute
Int, Float, String, Bool, Array , Option , Result , records, enums, refinement types.pure, reads, writes, io, fails. The compiler verifies consistency.Edict compiles to WebAssembly and runs in a sandboxed VM. This is a deliberate security decision — not a limitation:
EdictHostAdapter interfaceio, reads, writes, fails) lets the host inspect what a program requires _before_ running itRunLimits controls execution timeout, memory ceiling, and filesystem sandboxingHost capabilities available through adapters: filesystem (sandboxed), HTTP, crypto (SHA-256, MD5, HMAC), environment variables, CLI arguments. New capabilities are added by extending EdictHostAdapter.
The fastest way to use Edict is through the MCP server — it exposes the entire compiler pipeline as tool calls:
npx edict-lang # start MCP server (stdio transport, no install needed)
Or install locally:
npm install edict-lang
npx edict-lang # start MCP server
Two calls to get started: edict_schema (learn the AST format) → edict_check (submit a program). See MCP Tools for the full tool list.
npm install
npm test # 2675 tests across 136 files npm run mcp # start MCP server (stdio transport)
Run the Edict MCP server in a container — no local Node.js required:
# stdio transport (default — for local MCP clients)
docker run -i ghcr.io/sowiedu/edict
docker run -p 3000:3000 -e EDICT_TRANSPORT=http ghcr.io/sowiedu/edict
Supported platforms: linux/amd64, linux/arm64.
Run the Edict compiler entirely in the browser — no server required:
| Bundle | Size | Phases | Use case |
|---|---|---|---|
edict-lang/browser | 318 KB | 1–3 (validate, resolve, typecheck, effects, lint, patch) | Lightweight checking |
edict-lang/browser-full | ~14 MB | 1–5 (+ WASM codegen, Z3 contracts, WASM execution) | Full compile & run |
import { compileBrowser, runBrowserDirect } from 'edict-lang/browser-full';
const result = compileBrowser(astJson); if (result.ok) { const run = await runBrowserDirect(result.wasm); console.log(run.output); // "Hello, World!" }
Note: ESM modules require HTTP serving. Use
npx serve .or any static server —file://won't work.
See examples/browser/index.html for a working example.
The Edict compiler also runs inside QuickJS WASM — useful for sandboxed runtimes, edge workers, or embedding in other WASM applications:
| Bundle | Size | Phases | Slowdown vs Node.js |
|---|---|---|---|
dist/edict-quickjs-check.js | 373 KB | 1–3 (validate, resolve, typecheck, effects) | ~3.7x |
dist/edict-quickjs-full.js | 932 KB | 1–5 (check + WASM compile) | ~3.7x |
import { EdictQuickJS } from "edict-lang/quickjs";
const edict = await EdictQuickJS.createFull(); // phases 1-5 const result = edict.compile(ast); if (result.ok) { console.log(result.wasm); // Uint8Array of valid WASM } edict.dispose();
Note:
quickjs-emscriptenis an optional peer dependency — install it alongsideedict-langto useEdictQuickJS. For fs-free environments, passbundleSourcedirectly instead of loading from disk.
See docs/quickjs-feasibility-report.md for full benchmarks and recommendations.
| Tool | Description |
|---|---|
edict_schema | Returns the full AST JSON Schema — the spec for how to write programs |
edict_version | Returns compiler version and capability info |
edict_examples | Returns 41 example programs as JSON ASTs (includes schema snippet) |
edict_validate | Validates AST structure (field names, types, node kinds) |
edict_check | Full pipeline: validate → resolve names → type check → effect check → verify contracts |
edict_compile | Compiles a checked AST to WASM (returns base64-encoded binary) |
edict_run | Executes a compiled WASM binary, returns output and exit code |
edict_patch | Applies targeted AST patches by nodeId and re-checks |
edict_errors | Returns machine-readable catalog of all error types |
edict_lint | Runs non-blocking quality analysis and returns warnings |
edict_debug | Execution tracing and crash diagnostics |
edict_compose | Combines composable program fragments into a module |
edict_explain | Explains AST nodes, errors, or compiler behavior |
edict_export | Packages a program as a UASF portable skill |
edict_import_skill | Imports and executes a UASF skill package |
edict_generate_tests | Generates tests from Z3-verified contracts |
edict_replay | Records and replays deterministic execution traces |
edict_deploy | Compiles and deploys an Edict program to edge runtimes (Cloudflare Workers) |
edict_invoke | Invokes a deployed Edict WASM service via HTTP |
edict_invoke_skill | Invokes a UASF skill package directly |
edict_package | Packages a compiled program as a deployable skill bundle |
edict_support | Returns diagnostics and environment info for troubleshooting |
| URI | Description |
|---|---|
edict://schema | The full AST JSON Schema |
edict://schema/minimal | Minimal schema variant for token-efficient bootstrap |
edict://examples | All example programs |
edict://errors | Machine-readable error catalog |
edict://schema/patch | JSON Schema for the AST patch protocol |
edict://guide | Agent bootstrap guide for MCP-first onboarding |
edict://support | Diagnostics and environment info |
A "Hello, World!" in Edict's JSON AST:
{
"kind": "module", "id": "mod-hello-001", "name": "hello", "imports": [], "definitions": [ { "kind": "fn", "id": "fn-main-001", "name": "main", "params": [], "effects": ["io"], "returnType": { "kind": "basic", "name": "Int" }, "contracts": [], "body": [ { "kind": "call", "id": "call-print-001", "fn": { "kind": "ident", "id": "ident-print-001", "name": "print" }, "args": [ { "kind": "literal", "id": "lit-msg-001", "value": "Hello, World!" } ] }, { "kind": "literal", "id": "lit-ret-001", "value": 0 } ] } ] }
The core design: an agent submits an AST → the compiler validates it → if wrong, returns a StructuredError with enough context for the agent to self-repair → the agent fixes it → resubmits.
// 1. Agent reads the schema to learn the AST format
const schema = edict_schema();
// 2. Agent writes a program (may contain errors) const program = agentWritesProgram(schema);
// 3. Compile — returns structured errors or WASM const result = edict_compile(program);
if (!result.ok) { // 4. Agent reads errors and fixes the program // Errors include: nodeId, expected type, candidates, counterexamples const fixed = agentFixesProgram(program, result.errors); // 5. Resubmit return edict_compile(fixed); }
// 6. Run the WASM const output = edict_run(result.wasm);
src/
├── ast/ # TypeScript interfaces for every AST node ├── validator/ # Schema validation (structural correctness) ├── resolver/ # Name resolution (scope-aware, with Levenshtein suggestions) ├── checker/ # Type checking (bidirectional, with unit types) ├── effects/ # Effect checking (call-graph propagation) ├── contracts/ # Contract verification (Z3/SMT integration) ├── codegen/ # WASM code generation (pure-JS encoder) │ ├── codegen.ts # IR → WASM module orchestration │ ├── compile-ir-expr.ts # IR expression compilation │ ├── compile-ir-*.ts # Specialized IR compilers (calls, data, match, scalars) │ ├── runner.ts # WASM execution (Node.js WebAssembly API) │ ├── host-adapter.ts # EdictHostAdapter interface + platform adapters │ ├── closures.ts # Closure capture and compilation │ ├── hof-generators.ts # Higher-order function WASM generators │ ├── wasm-encoder.ts # Pure-JS WASM binary encoder (replaced binaryen) │ ├── wasm-interpreter.ts # Pure-JS WASM interpreter (no WebAssembly API needed) │ ├── recording-adapter.ts # Execution recording for replay │ ├── replay-adapter.ts # Deterministic replay from recorded traces │ └── string-table.ts # String interning for WASM memory ├── ir/ # Mid-level IR (lowering, optimization) ├── builtins/ # Builtin registry and domain-specific builtins ├── compact/ # Compact AST format (token-efficient for agents) ├── compose/ # Composable program fragments ├── deploy/ # Edge deployment scaffolding (Cloudflare Workers) ├── incremental/ # Incremental checking (dependency graph + diff) ├── lint/ # Non-blocking quality warnings ├── patch/ # Surgical AST patching by nodeId ├── migration/ # Schema version migration (auto-upgrade older AS
冒頭だけを表示しています。続きはリポジトリで読めます