{"_id":"@dark_creative/prompt-forge-mcp","_rev":"9-355915b7b785d69f189c63f17e1b183f","name":"@dark_creative/prompt-forge-mcp","dist-tags":{"latest":"0.5.0"},"versions":{"0.2.0":{"name":"@dark_creative/prompt-forge-mcp","version":"0.2.0","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.2.0","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"52a6fc2825cbfa3f64dba18895d3a836d432280f","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.2.0.tgz","fileCount":36,"integrity":"sha512-xz3Sn/pqzl/9J/OEADOP4bPLkAf9NUiXuwi+Em/hL/Gj9JL/Fu/dPQWshsz7QlahdGpQEm/VvLCKQ9+84Ha8Pg==","signatures":[{"sig":"MEQCIEbV4Bq1Oz1QFZar7924DsVsBcKvVgkudo9xf75EnkOMAiASW2jVaD05UmyLWNCpoLYiG6dKtr7C9IfZM2jnXtZ66A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216330},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.2.0_1785757070749_0.18417862600314838","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dark_creative/prompt-forge-mcp","version":"0.3.0","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.3.0","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"60061779cce6bb84927f8570d4ba21d087dfc64b","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.3.0.tgz","fileCount":36,"integrity":"sha512-7B37sFr5CTAolbIsdy4MWHqHfF63S8FbNWkcqMXxe+oHiDs78xxJ4AZ97ePJ7k48ORmgDAImWdip/nLE9hcOPQ==","signatures":[{"sig":"MEUCIQCQPViwrI5yGlBZqnz8MdR2oyltVOMmyGMr/a3Q6l9dlAIgDNOmWHxvSqfpMyIBVlktrwFAK2U44fTb/+mXfV7B1mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213336},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.3.0_1785758236771_0.6348220417270687","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dark_creative/prompt-forge-mcp","version":"0.4.0","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.4.0","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"8eab4e0c32de4a0d0dac4e3d5a173ed1ce5cc18e","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.4.0.tgz","fileCount":37,"integrity":"sha512-alQys0FkdkjXBovHQtimWO2WcZfEwsL8Wui/6LOglqlrw5xlyH5LZuGwcbh6jzr0VoZ1ur8HkTzz5vEWl6ErQA==","signatures":[{"sig":"MEQCIEEL2wNyK0WBeyllTKrz3HsIoR8frjraex1bwBreTSUFAiABElJMgRvPiwtgMnDDkJ7YLtJQ/U3eUIGOzHTdhbOW6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216494},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.4.0_1785758589333_0.1959403671585207","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dark_creative/prompt-forge-mcp","version":"0.4.1","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.4.1","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"2abde415373113b34cac3d82fc03f96fb0b22660","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.4.1.tgz","fileCount":37,"integrity":"sha512-D1bCri5ogKGqw5mG5d1V6m+94c21a+aYABJR33zgUdWmt1FUW8XE4nI5pxJNdfrJllXD6eUighkTPd63jCWoxQ==","signatures":[{"sig":"MEYCIQDI0cQV6/7bVpa+6pT+hN0CEq5hfDXvB7C8Cxt/QN8/QQIhAO4qo6fLhGyjHYOFF3lnnNQMrjDwlJ9Q5RYrE57V8jJQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216582},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.4.1_1785758776629_0.11016587035634617","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@dark_creative/prompt-forge-mcp","version":"0.4.2","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.4.2","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"1f4062c859f0ae4f4ecf70fd1e63ceae4f65d605","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.4.2.tgz","fileCount":37,"integrity":"sha512-1su+b3Vfbtwn5MMaE3/up2fMXu7BOSPVXYni6SCsFKaUYmtQrDaDJzzKNtrlZ2zvoXYIA/rPtWZ23P/mE1WTqA==","signatures":[{"sig":"MEQCIGjXhfNnXiciXmkVJsktQPXyoMJajavYiGIaDwpc/KPIAiBGqrCynmiIiJFgHPZB+kuEU+pcCROrITDksBDw0auGeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216294},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.4.2_1785759612973_0.36030955743603954","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@dark_creative/prompt-forge-mcp","version":"0.4.3","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.4.3","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"f6dd184a38fce59c8842ab233b398a3d38b46260","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.4.3.tgz","fileCount":38,"integrity":"sha512-qOhqVt0R94Cn6VuOxjxWDAhWz+bMS1EKUAV0Ak1/tkdzrKH4kDhfkef5N1Qh+pkNLq0I/EvMfhRLjoQuiD25Wg==","signatures":[{"sig":"MEUCIQDqGqas3FEFc/q+ZHQh5VFoc05o4wvjGgDjJE1LZU8keQIgQVE7TFnBhPWMVOceqoDDBbmV+Fz9fchGebaK0rCdyp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231237},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.4.3_1785829216292_0.570689346591764","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@dark_creative/prompt-forge-mcp","version":"0.4.4","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.4.4","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"a9bf845a9ec26eba60959a32bac59f46f0df0f01","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.4.4.tgz","fileCount":38,"integrity":"sha512-A7bmCut/NTsP0BENd3/9MYZg3JZ+tGk+pf5g+sGlVyMFFFOnpbs/fbSourV9RvkR+ckW0obkxfU3pmlrdr1YXA==","signatures":[{"sig":"MEUCIEEbSc9xf8LaKWBoGg4GoUXbfths+bD8gJMbaa01PF2pAiEAtzlcqCbAaj85Ju3ef3z8io+SDoFbEh7X70rEVgPsUjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234261},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.4.4_1785829511313_0.2712012410691167","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@dark_creative/prompt-forge-mcp","version":"0.4.5","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"license":"MIT","_id":"@dark_creative/prompt-forge-mcp@0.4.5","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"bin":{"prompt-forge-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js"},"dist":{"shasum":"5243b2a6fae26693e3978113976b9f7c079bd822","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.4.5.tgz","fileCount":41,"integrity":"sha512-mHsfvveFufWg8Tp/C6ZrWBfdGGsWgDjvGA8mebUWo4eccY3wsKJ/TmlaQa5wIJeTgUrplJCpU4CZ7kd9fGdoTw==","signatures":[{"sig":"MEYCIQDnK8kuu4O5y6JSsdU1pDCIcgKAaLZ330Nvsk5bne0x4AIhAND4LfpqWu1y/XJlMEXKrOWhw2z9Skx6sCFjidu7x2tL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262533},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/server.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/server.js","stress":"tsx scripts/stress.ts","benchmark":"tsx scripts/benchmark.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"_npmVersion":"10.9.2","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-forge-mcp_0.4.5_1785834106512_0.9694187227728597","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@dark_creative/prompt-forge-mcp","version":"0.5.0","description":"A local-first MCP that turns short requests into optimized, executable task contracts.","license":"MIT","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"type":"module","bin":{"prompt-forge-mcp":"dist/cli.js","prompt-orchestrator-mcp":"dist/cli.js","ai-orchestrator-mcp":"dist/cli.js"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.json","start":"node dist/server.js","dev":"tsx src/server.ts","benchmark":"tsx scripts/benchmark.ts","benchmark:opencode":"tsx scripts/opencode-benchmark.ts","stress":"tsx scripts/stress.ts","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","zod":"^3.25.0"},"devDependencies":{"@types/node":"^22.15.0","tsx":"^4.19.0","typescript":"^5.8.0","vitest":"^3.2.4"},"_id":"@dark_creative/prompt-forge-mcp@0.5.0","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-af1YjwaUsY4LoMEqLT4XgHsDhW5xsFg2Qf8LYniaXSql/BuuLbWUSNlOw/zmrp+kz5siFEp2dVJerHBjNOYlLQ==","shasum":"f18855787ee70376f4298190b7ff2edaaee6069a","tarball":"https://registry.npmjs.org/@dark_creative/prompt-forge-mcp/-/prompt-forge-mcp-0.5.0.tgz","fileCount":47,"unpackedSize":283807,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDRo77JJNmXf+T8jxRG0Dp8MH2vEec1HYnAUrhRd9QauQIhAM8/rEgH4RATuSjcUs4CILYdM0v8UBUiUNY0d4Fd9Z2c"}]},"_npmUser":{"name":"dark_creative","email":"ismailaliokur70@gmail.com"},"directories":{},"maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prompt-forge-mcp_0.5.0_1785840274722_0.7164666890320224"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-03T11:37:50.482Z","modified":"2026-08-04T10:44:34.989Z","0.2.0":"2026-08-03T11:37:50.898Z","0.3.0":"2026-08-03T11:57:16.910Z","0.4.0":"2026-08-03T12:03:09.491Z","0.4.1":"2026-08-03T12:06:17.810Z","0.4.2":"2026-08-03T12:20:13.149Z","0.4.3":"2026-08-04T07:40:16.455Z","0.4.4":"2026-08-04T07:45:11.452Z","0.4.5":"2026-08-04T09:01:46.666Z","0.5.0":"2026-08-04T10:44:34.857Z"},"license":"MIT","keywords":["mcp","prompt-forge","prompt-engineering","context-engine","model-context-protocol"],"description":"A local-first MCP that turns short requests into optimized, executable task contracts.","maintainers":[{"name":"dark_creative","email":"ismailaliokur70@gmail.com"}],"readme":"# Prompt Forge MCP\n\n> **One MCP entry point for better AI work.** Prompt Forge turns short, vague requests into structured, context-aware task contracts that your AI host can execute.\n\n[![npm version](https://img.shields.io/npm/v/%40dark_creative%2Fprompt-forge-mcp?label=npm)](https://www.npmjs.com/package/@dark_creative/prompt-forge-mcp)\n[![Node.js](https://img.shields.io/badge/Node.js-20%2B-339933?logo=node.js&logoColor=white)](https://nodejs.org/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n## ✨ The idea\n\nYou write a simple request:\n\n> Build me a beautiful, modern restaurant website.\n\nPrompt Forge decides what the request needs, gathers only useful context, improves the task definition, and returns a high-quality prompt for the AI model already connected to your MCP host.\n\n```text\nShort request\n    ↓\nIntent & risk analysis\n    ↓\nTask expansion and missing-information checks\n    ↓\nMemory, local Context Engine, web, npm, GitHub, or connectors when useful\n    ↓\nSource-aware prompt contract\n    ↓\nYour host model continues the work\n```\n\nThe user does not need to select MCP servers manually. Prompt Forge acts as the lightweight decision layer between the request and the model.\n\n## 🚀 Quick start\n\nRequires **Node.js 20 or newer**.\n\nRun the interactive installer:\n\n```bash\nnpx -y @dark_creative/prompt-forge-mcp\n```\n\nUse the arrow keys to move, press **Space** to select or deselect clients, and press **Enter** to install the selected configurations.\n\nThe installer includes a colored terminal interface with a highlighted active client, selection count, and clear success/error states. Use **A** to select all clients, **N** to clear the selection, **Home/End** to jump through the list, and **Q** or **Esc** to cancel.\n\nThe installer supports:\n\n| Client | Installation method |\n| --- | --- |\n| Claude Desktop | Merges the user MCP configuration |\n| Claude Code | Uses `claude mcp add` when available |\n| Kilo Code | Updates the global Kilo MCP configuration |\n| Antigravity | Updates the Gemini/Antigravity MCP configuration |\n| OpenCode CLI + Desktop | Uses the shared global OpenCode MCP configuration |\n| ChatGPT | Use the optional Streamable HTTP mode described below |\n\n### Install one client directly\n\n```bash\nnpx -y @dark_creative/prompt-forge-mcp setup --client claude-desktop\nnpx -y @dark_creative/prompt-forge-mcp setup --client claude-code\nnpx -y @dark_creative/prompt-forge-mcp setup --client kilo-code\nnpx -y @dark_creative/prompt-forge-mcp setup --client antigravity\nnpx -y @dark_creative/prompt-forge-mcp setup --client opencode\n```\n\n### Start the MCP server directly\n\nUse `--server` when an IDE or another MCP host starts Prompt Forge in the background:\n\n```bash\nnpx -y @dark_creative/prompt-forge-mcp --server\n```\n\nOn Windows, some hosts use `npx.cmd` instead of `npx`.\n\n### OpenCode CLI and Desktop\n\nOpenCode's CLI and desktop app read the same global configuration. The installer first tries the native CLI command:\n\n```bash\nopencode mcp add --global prompt-forge -- npx -y @dark_creative/prompt-forge-mcp --server\n```\n\nIf the OpenCode CLI is not available, Prompt Forge writes the equivalent entry to `~/.config/opencode/opencode.json` (using `npx.cmd` on Windows and `npx` elsewhere). The interactive installer also adds a marked Prompt Forge routing block to OpenCode's global `AGENTS.md`, so ordinary user requests automatically pass through `prompt-forge_orchestrate` and drafted answers pass through `prompt-forge_validate_output`. Restart OpenCode after installation.\n\nFor a manual setup, copy [`config/clients/opencode.instructions.md`](config/clients/opencode.instructions.md) into the global `~/.config/opencode/AGENTS.md` or the project `AGENTS.md`, then copy [`config/clients/opencode.json`](config/clients/opencode.json) into OpenCode's global configuration.\n\n## 🧠 What Prompt Forge does\n\nFor every request, Prompt Forge can:\n\n- classify the user's intent and task complexity;\n- choose a suitable working mode: `fast`, `balanced`, or `deep`;\n- detect missing information and state reasonable assumptions;\n- expand a short request into actionable requirements;\n- add deterministic specialist implementation guidance for frontend, motion, and high-end portfolio work;\n- select the right context sources automatically;\n- use saved preferences without exposing unnecessary memory;\n- inspect documentation, package metadata, public repositories, or web pages when needed;\n- remove irrelevant context to protect the token budget;\n- preserve citations, source URLs, confidence, and execution details;\n- return a deterministic fallback when a host capability or network source is unavailable;\n- produce a prompt contract that the connected model can continue executing.\n\nThe host model remains responsible for the final generation. Prompt Forge does not download or run a local LLM.\n\n## 🎨 Taste-inspired design policy and safe response compression\n\nPrompt Forge includes a small, local policy layer inspired by two complementary ideas:\n\n- **Taste-style design direction:** frontend requests receive an intentional preset, design dials, anti-slop checks, and a preflight checklist. The policy is automatically activated for portfolio, landing-page, UI, animation, Three.js, GSAP, and similar visual tasks.\n- **Caveman-style response control:** concise requests can use a deterministic local compression pass that removes prose filler while preserving technical content byte-for-byte.\n\nThese are native Prompt Forge policies, not runtime dependencies on either external repository. No additional model, daemon, embedding service, or API key is required.\n\n`orchestrate` returns `designContract` and `responseStyleContract` alongside the optimized prompt. You can also provide explicit overrides when an MCP host supports tool arguments:\n\n```json\n{\n  \"request\": \"Build a cinematic Three.js portfolio.\",\n  \"designPreset\": \"cinematic-editorial\",\n  \"responseStyle\": \"detailed\"\n}\n```\n\nFor an allowed concise response, call `compress_output` and then call `validate_output` again. The compressor protects code, commands, URLs, paths, identifiers, errors, citations, and security warnings. Security, credential, deletion, migration, deployment, and other clarity-critical requests automatically keep normal detail.\n\n## 📚 A Context7-style engine built into the project\n\nPrompt Forge does **not** depend on the original Context7 service. It includes its own local-first Context Engine for documentation and project knowledge.\n\n```text\nSource\n  → sanitize HTML/Markdown\n  → split into meaningful sections\n  → attach library, version, title, and URL metadata\n  → build a lightweight local index\n  → search with lexical + trigram similarity\n  → boost exact phrases, headings, scope, and source agreement\n  → return compact citations with confidence\n```\n\nThe Context Engine supports:\n\n- local Markdown and text documents;\n- public documentation URLs;\n- npm package metadata and README files;\n- library and version-aware indexing;\n- section-aware citations;\n- `hybrid` and `lexical` search modes;\n- lightweight similarity without downloading embedding models;\n- source confidence and agreement signals;\n- stale-source detection and refresh;\n- persistent local indexes with atomic writes and process locks;\n- bounded memory, document, chunk, response, and timeout limits;\n- protection against private-network URLs, unsafe redirects, and oversized responses.\n\nWhen automatic indexing is enabled, common packages such as React, TypeScript, Next.js, Vue, Svelte, Express, NestJS, Vite, Zod, Tailwind CSS, and Three.js can be discovered from npm metadata when the request needs them. `fast` mode never performs network-backed indexing.\n\nFor documentation-oriented requests, Prompt Forge also has curated official endpoints for common libraries including React, TypeScript, Next.js, Vue, Svelte, Three.js, GSAP, Anime.js, Playwright, Prisma, and more. It fetches those pages directly into the local index and keeps an official-documentation result in the final context. A package README or manifest is not accepted as a substitute when a curated official source is required but unavailable.\n\n## ⚙️ Working modes\n\n| Mode | Behaviour | Best for |\n| --- | --- | --- |\n| `fast` | Local-only, no network-backed source calls | Quick edits, simple prompts, offline work |\n| `balanced` | Selective context and lightweight documentation lookup | Most development and content tasks |\n| `deep` | More source gathering, deeper public-page inspection, and stronger validation | Research, unfamiliar libraries, complex multi-step work |\n\nThe mode is selected automatically, but the `orchestrate` tool can also receive an explicit mode.\n\n## 🛠️ MCP tools\n\n### Orchestration\n\n| Tool | Purpose |\n| --- | --- |\n| `orchestrate` | Analyze, plan, route context, and generate the final optimized prompt contract |\n| `validate_output` | Check a drafted answer for task coverage, source evidence, required failures, output format, score threshold, and obvious credential leakage |\n| `compress_output` | Conservatively remove prose filler from concise drafts while preserving protected technical content |\n| `explain_decision` | Explain which sources would be selected and why |\n| `health_check` | Report version, limits, memory, Context Engine, and connector health |\n\n### Context Engine\n\n| Tool | Purpose |\n| --- | --- |\n| `index_context_source` | Add Markdown or text content to the local index |\n| `index_context_url` | Fetch and index a public documentation URL |\n| `index_context_package` | Index npm metadata and README content |\n| `search_context` | Search indexed documentation with citations and confidence |\n| `context_stats` | Show index size and usage statistics |\n| `list_context_sources` | List indexed sources and versions |\n| `refresh_context_source` | Refresh a stale or selected source |\n| `remove_context_source` | Remove a library, version, or URL from the index |\n| `clear_context` | Clear the local Context Engine index |\n\n### Memory and prompt history\n\n| Tool | Purpose |\n| --- | --- |\n| `remember_preference` | Save an explicit user preference locally |\n| `get_memory` | Read stored preferences when relevant |\n| `prompt_history` | List previously generated prompt contracts |\n| `favorite_prompt` | Add or remove a prompt from favorites |\n| `clear_memory` | Clear stored preferences |\n| `clear_history` | Clear saved prompt history |\n\n### Connectors\n\n| Tool | Purpose |\n| --- | --- |\n| `list_connectors` | Show configured connector status without exposing secrets |\n| External MCP connectors | Optionally connect to other MCP servers when a task genuinely needs them |\n\n## 🔎 Source routing\n\nPrompt Forge uses a layered source strategy:\n\n1. Understand the request and its constraints.\n2. Check relevant local memory and conversation context.\n3. Search the local Context Engine first.\n4. For known libraries, prefer curated official documentation over general web discovery.\n5. Use npm, public GitHub, direct web pages, or DuckDuckGo only when useful.\n6. Ask for connector approval when a configured external connector requires it.\n7. Keep only relevant, trusted, bounded context.\n8. Return a source-aware prompt contract for the host model and a final-answer validation contract.\n\nBuilt-in public readers are intentionally lightweight:\n\n- **DuckDuckGo** provides API-key-free web search with bounded results, timeout, cache, and cooldown handling.\n- **Public GitHub** reads repository trees, README/manifest files, and a small number of relevant text files without cloning the repository.\n- **Direct web** reads an explicitly supplied public URL with HTML cleanup and redirect/private-network checks.\n- **npm** provides package metadata and README context for supported libraries.\n\nPublic services can still apply their own availability or anonymous rate limits. Prompt Forge reports failures and falls back instead of turning a temporary source error into a broken orchestration.\n\nIf a request says not to use **general web search**, Prompt Forge suppresses DuckDuckGo and other discovery connectors but can still use a direct curated official documentation page. If a request says not to use the **internet**, **network**, or **external sources**, all network-backed retrieval is disabled.\n\n## 💬 Conversation context and attachments\n\nWhen the host supports it, the connected conversation can provide:\n\n- previous conversation context;\n- text attachments;\n- file references;\n- image context through host sampling capabilities.\n\nPrompt Forge treats conversation, attachment, web, repository, and connector content as **untrusted data**, not as system instructions. This keeps README files, screenshots, and copied text from silently changing the orchestration policy.\n\nBinary images are not copied into local memory or history. File URIs are read only under bounded size limits, and remote URLs are not fetched automatically unless the task explicitly routes them through a supported reader.\n\n## 🔐 Security and privacy\n\n- Local stdio mode is the default.\n- No local embedding model or background crawler is installed.\n- Memory, history, and Context Engine data stay on the user's machine.\n- External connector secrets are read from environment variables and are never included in status output.\n- HTTP responses, connector output, document size, and search results are bounded.\n- Public and private-network targets are validated before fetching.\n- Connector retries use bounded exponential jitter, concurrency limits, and circuit breakers.\n- Optional `ORCHESTRATOR_DATA_KEY` enables encrypted local memory/history storage.\n- Without that key, the project keeps the simpler local JSON format.\n\n## 🌐 Optional Streamable HTTP mode\n\nLocal `stdio` is the recommended mode for Claude Desktop, Claude Code, Kilo Code, Antigravity, and OpenCode. A remote host such as ChatGPT needs a public, authenticated Streamable HTTP deployment.\n\n### Linux/macOS\n\n```bash\nMCP_TRANSPORT=streamable-http \\\nMCP_HTTP_HOST=0.0.0.0 \\\nMCP_HTTP_PORT=8787 \\\nMCP_AUTH_TOKEN=\"use-a-random-token-at-least-24-characters\" \\\nnpx -y @dark_creative/prompt-forge-mcp --server\n```\n\n### Windows PowerShell\n\n```powershell\n$env:MCP_TRANSPORT = \"streamable-http\"\n$env:MCP_HTTP_HOST = \"0.0.0.0\"\n$env:MCP_HTTP_PORT = \"8787\"\n$env:MCP_AUTH_TOKEN = \"use-a-random-token-at-least-24-characters\"\nnpx -y @dark_creative/prompt-forge-mcp --server\n```\n\nThe MCP endpoint is `/mcp`. Put a public deployment behind TLS, a reverse proxy, and rate limiting. Do not expose a development machine directly to the internet.\n\n## 🔧 Configuration\n\nThe package includes ready-to-copy templates in [`config/clients`](config/clients).\n\nExample stdio configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"prompt-forge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dark_creative/prompt-forge-mcp\", \"--server\"]\n    }\n  }\n}\n```\n\nOpenCode uses this equivalent configuration shape:\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"mcp\": {\n    \"prompt-forge\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"@dark_creative/prompt-forge-mcp\", \"--server\"],\n      \"enabled\": true,\n      \"timeout\": 20000\n    }\n  }\n}\n```\n\nUseful orchestration options include:\n\n| Option | Effect |\n| --- | --- |\n| `useMemory` | Include relevant saved preferences |\n| `executeSources` | Run selected local or external sources |\n| `allowExternal` | Disable external MCP calls |\n| `autoIndexSources` | Disable automatic npm/documentation indexing |\n| `refreshStaleSources` | Refresh stale local sources before searching |\n| `requireApproval` | Require approval for connector calls |\n| `useHostSampling` | Allow the host model to perform a final refinement pass |\n| `saveHistory` | Save the generated prompt contract locally |\n\n## 📁 Local data locations\n\n| Platform | Location |\n| --- | --- |\n| Windows | `%APPDATA%\\\\ai-orchestrator-mcp` |\n| macOS | `~/Library/Application Support/ai-orchestrator-mcp` |\n| Linux | `~/.config/ai-orchestrator-mcp` |\n\nThe legacy data directory is intentionally preserved for backward-compatible migration to Prompt Forge.\n\n## 🧪 Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\nAdditional local checks:\n\n```bash\nnpm run dev        # Run the server from TypeScript\nnpm run benchmark  # Measure local p50/p95 latency\nnpm run stress     # Run high-pressure local mock tests\nnpm start          # Run the compiled server\n```\n\nThe benchmark intentionally excludes host sampling, first-time `npx` installation, and live Web/GitHub latency. The stress suite uses local mock services and does not send requests to external providers.\n\n## 📦 Package contents\n\nThe published package contains:\n\n- compiled server and CLI files in `dist/`;\n- client configuration templates in `config/`;\n- this README and the MIT license.\n\nThe default runtime is intentionally small, bounded, and suitable for a single user's local machine.\n\n## 📄 License\n\nMIT © Prompt Forge MCP contributors\n","readmeFilename":"README.md"}