Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
AI-agent programming language. JSON AST in, WASM out. Typed, effect-tracked, Z3-verified.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"edict": {
"command": "npx",
"args": [
"-y",
"edict-lang"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add edict -- npx -y edict-langPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"edict": {
"command": "npx",
"args": [
"-y",
"edict-lang"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"edict": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"edict-lang"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub Sowiedu, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (1.9.2) llegó al registro hace 8 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Starreel
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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.
Turn a script into a finished, downloadable short-drama episode — via MCP or REST.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
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
Solo se muestra el principio; lee el resto en el repo