{"_id":"@dici1435/spec-review-mcp","_rev":"4-aa8af9bd074cb3c2ce58092414ccc9ac","name":"@dici1435/spec-review-mcp","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.2":{"name":"@dici1435/spec-review-mcp","version":"0.1.2","keywords":["mcp","spec-review","llm","dici-spec"],"license":"MIT","_id":"@dici1435/spec-review-mcp@0.1.2","maintainers":[{"name":"dici1433","email":"alex@maker.software"}],"homepage":"https://github.com/MakerSoftware/dici-spec/tree/main/mcp-servers/spec-review#readme","bugs":{"url":"https://github.com/MakerSoftware/dici-spec/issues"},"bin":{"dici-spec-review-mcp":"dist/index.js"},"dist":{"shasum":"28673cfc5788ca8a9fc41500c24d70399d9dc275","tarball":"https://registry.npmjs.org/@dici1435/spec-review-mcp/-/spec-review-mcp-0.1.2.tgz","fileCount":3,"integrity":"sha512-O1E4/JI2uQYicbvJyTtbOHWNvifXBQHoPdRsw+9AEqJabAsxeNiRRWytadtzAdmSMQv4QgwWqgKbIMssW61gUA==","signatures":[{"sig":"MEUCIQDEzEZpe/m2NBLJhjMaTxsFY+YSVUuGv1VaR9+QzrKkUQIgZ0OVPNslHMTyBj76sBSEYg1ZFYsau5D71BqwYQNNCXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12812},"type":"module","engines":{"node":">=18"},"scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --banner:js=\"#!/usr/bin/env node\" --packages=external","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dici1433","email":"alex@maker.software"},"repository":{"url":"git+https://github.com/MakerSoftware/dici-spec.git","type":"git","directory":"mcp-servers/spec-review"},"_npmVersion":"11.6.2","description":"LLM-powered spec compliance review MCP server for dici-spec projects.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^4.1.0","esbuild":"^0.25.1","typescript":"^5.8.2","@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/spec-review-mcp_0.1.2_1774043678941_0.8858462091104018","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@dici1435/spec-review-mcp","version":"0.1.5","keywords":["mcp","spec-review","llm","dici-spec"],"license":"MIT","_id":"@dici1435/spec-review-mcp@0.1.5","maintainers":[{"name":"dici1433","email":"alex@maker.software"}],"homepage":"https://github.com/MakerSoftware/dici-spec/tree/main/mcp-servers/spec-review#readme","bugs":{"url":"https://github.com/MakerSoftware/dici-spec/issues"},"bin":{"dici-spec-review-mcp":"dist/index.js"},"dist":{"shasum":"5d9e63a661403bd2824455d20f8c272ddcb255e3","tarball":"https://registry.npmjs.org/@dici1435/spec-review-mcp/-/spec-review-mcp-0.1.5.tgz","fileCount":3,"integrity":"sha512-hgZRtHhOLnPwz8P2gu8Ban/Dwt2F620Xcimbhf4tn59uzHCTfNDoyrYzCWT3T3fz9QmZVS1wOx4qZFvNVPCcFw==","signatures":[{"sig":"MEUCIBb+M2+k6yiUpPcZquyB5vH2wIcbnvmVJDvN1yeMdRlpAiEApTyXxgaGk7z/PjL9j8v1RC5X90JDZVHyFoyxavj2cuE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16062},"type":"module","engines":{"node":">=18"},"scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --banner:js=\"#!/usr/bin/env node\" --packages=external","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dici1433","email":"alex@maker.software"},"repository":{"url":"git+https://github.com/MakerSoftware/dici-spec.git","type":"git","directory":"mcp-servers/spec-review"},"_npmVersion":"11.6.2","description":"LLM-powered spec compliance review MCP server for dici-spec projects.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^4.1.0","esbuild":"^0.25.1","typescript":"^5.8.2","@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/spec-review-mcp_0.1.5_1774624275483_0.6522762069490333","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@dici1435/spec-review-mcp","version":"0.1.6","keywords":["mcp","spec-review","llm","dici-spec"],"license":"MIT","_id":"@dici1435/spec-review-mcp@0.1.6","maintainers":[{"name":"dici1433","email":"alex@maker.software"}],"homepage":"https://github.com/MakerSoftware/dici-spec/tree/main/mcp-servers/spec-review#readme","bugs":{"url":"https://github.com/MakerSoftware/dici-spec/issues"},"bin":{"dici-spec-review-mcp":"dist/index.js"},"dist":{"shasum":"78e1d8219678c6ab7c6e8396ff19463ffa6b021a","tarball":"https://registry.npmjs.org/@dici1435/spec-review-mcp/-/spec-review-mcp-0.1.6.tgz","fileCount":3,"integrity":"sha512-L+yHsIb9ntlaguKLb7SwFedpRlRqZ2mQ5pLFirkitvL0o5y/UetyzSF92O4s+GRA8cFOZl1kTDflC/9gDQ/nvg==","signatures":[{"sig":"MEUCIQDN+fiMZ664wb1pu0sOWzfFoLwMqYHazItm6SDKFDrWsgIgFBdGjhhDk8fGN6ws9KP2rl99C+87F+x9dJgOMOz5xck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16429},"type":"module","engines":{"node":">=18"},"scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --banner:js=\"#!/usr/bin/env node\" --packages=external","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dici1433","email":"alex@maker.software"},"repository":{"url":"git+https://github.com/MakerSoftware/dici-spec.git","type":"git","directory":"mcp-servers/spec-review"},"_npmVersion":"11.6.2","description":"LLM-powered spec compliance review MCP server for dici-spec projects.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^4.1.0","esbuild":"^0.25.1","typescript":"^5.8.2","@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/spec-review-mcp_0.1.6_1774628979126_0.7087044329187131","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@dici1435/spec-review-mcp","version":"0.1.7","description":"LLM-powered spec compliance review MCP server for dici-spec projects.","type":"module","bin":{"dici-spec-review-mcp":"dist/index.js"},"scripts":{"build":"esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --banner:js=\"#!/usr/bin/env node\" --packages=external","dev":"tsx src/index.ts","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"keywords":["mcp","spec-review","llm","dici-spec"],"license":"MIT","engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/MakerSoftware/dici-spec.git","directory":"mcp-servers/spec-review"},"homepage":"https://github.com/MakerSoftware/dici-spec/tree/main/mcp-servers/spec-review#readme","bugs":{"url":"https://github.com/MakerSoftware/dici-spec/issues"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.1"},"devDependencies":{"@types/node":"^22.13.10","esbuild":"^0.25.1","tsx":"^4.19.3","typescript":"^5.8.2","vitest":"^4.1.0"},"_id":"@dici1435/spec-review-mcp@0.1.7","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-ESCzVpdgwoufBkdMbyBnOJuOMhZVQnw1Dy8vEeyQsoeturUiNmRd6zOFzjCoiNpTcc/O9lfEAdzxO4zILEK/1g==","shasum":"d28536df6d03bf95d1c235fe213d32c5e284e2d2","tarball":"https://registry.npmjs.org/@dici1435/spec-review-mcp/-/spec-review-mcp-0.1.7.tgz","fileCount":3,"unpackedSize":16429,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDRHLlTilPS+6v2j8xdNBLwidc2ZepNd8ybgABvuic9KgIhAKKFaG/8zoOeyPAbKQc0uV3OYh19UltUNoCtP+UNUFCf"}]},"_npmUser":{"name":"dici1433","email":"alex@maker.software"},"directories":{},"maintainers":[{"name":"dici1433","email":"alex@maker.software"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/spec-review-mcp_0.1.7_1774630793172_0.8345412579052913"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T21:54:38.828Z","modified":"2026-03-27T16:59:53.455Z","0.1.2":"2026-03-20T21:54:39.088Z","0.1.5":"2026-03-27T15:11:15.620Z","0.1.6":"2026-03-27T16:29:39.297Z","0.1.7":"2026-03-27T16:59:53.339Z"},"bugs":{"url":"https://github.com/MakerSoftware/dici-spec/issues"},"license":"MIT","homepage":"https://github.com/MakerSoftware/dici-spec/tree/main/mcp-servers/spec-review#readme","keywords":["mcp","spec-review","llm","dici-spec"],"repository":{"type":"git","url":"git+https://github.com/MakerSoftware/dici-spec.git","directory":"mcp-servers/spec-review"},"description":"LLM-powered spec compliance review MCP server for dici-spec projects.","maintainers":[{"name":"dici1433","email":"alex@maker.software"}],"readme":"# @dici1435/spec-review-mcp\n\nLLM-powered spec compliance review MCP server for dici-spec projects. Reviews code against spec documents and constraints, returning structured findings with category, severity, file location, and description.\n\n## Installation\n\n```bash\nnpm install -g @dici1435/spec-review-mcp\n# or run directly\nnpx @dici1435/spec-review-mcp\n```\n\nAdded to a project via `dici-spec add spec-review`, which prompts for your LLM API key.\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `review_code` | Review code files against spec documents for compliance. Accepts spec paths, code paths, and optional constraints. Returns structured findings. |\n\n### Finding Structure\n\nEach finding includes:\n\n| Field | Values |\n|---|---|\n| `category` | `spec-compliance`, `missing-implementation`, `deviation`, `architecture`, `correctness` |\n| `severity` | `blocker`, `major`, `minor`, `nit` |\n| `file` | Path to the file with the finding |\n| `line` | Line number (when applicable) |\n| `description` | Detailed explanation of the finding |\n\n## Environment Variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `LLM_API_KEY` | **Yes** | — | API key for the LLM provider (OpenAI or Anthropic) |\n| `LLM_BASE_URL` | No | `https://api.openai.com/v1` | Base URL for the LLM API. Set to `https://api.anthropic.com/v1` to use Anthropic. |\n| `LLM_MODEL` | No | `gpt-4o` (OpenAI) / `claude-3-5-sonnet-20241022` (Anthropic) | Model to use for review |\n| `PROJECT_ROOT` | No | `process.cwd()` | Root directory of the project |\n| `SPECS_DIR` | No | `agents/specs` | Directory containing spec files (relative to PROJECT_ROOT) |\n| `CONSTRAINTS_DIR` | No | `agents/constraints` | Directory containing constraint files (relative to PROJECT_ROOT) |\n\nThe provider is **auto-detected from `LLM_BASE_URL`** — no separate provider flag needed. If the URL contains `anthropic.com`, the Anthropic Messages API is used. Everything else uses the OpenAI Chat Completions API.\n\n## Provider Configuration\n\n### OpenAI (default)\n\n```json\n\"dici-spec-review\": {\n  \"command\": \"npx\",\n  \"args\": [\"@dici1435/spec-review-mcp\"],\n  \"env\": {\n    \"LLM_API_KEY\": \"sk-...\",\n    \"LLM_MODEL\": \"gpt-4o\"\n  }\n}\n```\n\n### Anthropic\n\n```json\n\"dici-spec-review\": {\n  \"command\": \"npx\",\n  \"args\": [\"@dici1435/spec-review-mcp\"],\n  \"env\": {\n    \"LLM_API_KEY\": \"sk-ant-...\",\n    \"LLM_BASE_URL\": \"https://api.anthropic.com/v1\",\n    \"LLM_MODEL\": \"claude-sonnet-4-5\"\n  }\n}\n```\n\nThe provider is detected automatically from `LLM_BASE_URL`. When using Anthropic, the server uses the `/v1/messages` endpoint with `x-api-key` authentication and passes the system prompt as Anthropic's top-level `system` parameter.\n\n### OpenAI-compatible providers (OpenRouter, Azure, etc.)\n\nAny provider with an OpenAI-compatible `/chat/completions` endpoint works by setting `LLM_BASE_URL`:\n\n```json\n\"LLM_BASE_URL\": \"https://openrouter.ai/api/v1\",\n\"LLM_MODEL\": \"anthropic/claude-sonnet-4-5\"\n```\n\n## How It Works\n\n1. Loads spec documents from `SPECS_DIR` and constraints from `CONSTRAINTS_DIR`\n2. Reads the specified code files\n3. Assembles a review prompt with system instructions, spec content, code content, and constraint context\n4. Sends the prompt to the configured LLM (auto-detecting OpenAI vs. Anthropic from `LLM_BASE_URL`)\n5. Parses the response into structured findings\n\n## Transport\n\nStdio (stdin/stdout). Designed to be launched by AI agent IDEs as a child process.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}