{"_id":"@portel/ncp","_rev":"30-1617ec83b66be60d1fd6d63a6d7abf4e","name":"@portel/ncp","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.2":{"name":"@portel/ncp","version":"1.0.2","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.0.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"e9fc5a9f6e1ed56723f6833fe887331204894edc","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.0.2.tgz","fileCount":85,"integrity":"sha512-l8PHK/fw+ZN2m2BbVG2SOy+nVh6VXbuECJ5i7ImjYlSJKgUkl/RACqGQsVi3nX5tPrwMNF+m3C1CwS0AY68rXQ==","signatures":[{"sig":"MEUCIQCl5+9+Fsiw5FkHD1gI1VYpM9cXArC7XxUdsoTCxHXP4AIgZPr5xn1EhMTeXau7MYrAhzKnpE6YrgNRtve/U1I/5IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":639017},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9f067ea44bf37ff4a3186749a60dbd81185fd516","scripts":{"dev":"npm run build && npm run start","test":"echo \"Golden reference - tests TBD\" && exit 0","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"env-paths":"^3.0.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.0.2_1758053802998_0.5770944298300642","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@portel/ncp","version":"1.0.3","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.0.3","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"93ea482f99443c5dae492db847788562b458a1d0","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.0.3.tgz","fileCount":144,"integrity":"sha512-1xY/DwG5jgrPFU/nq+IIJe8bqMVDIBvpN1Lmgo1xmwu0qyEloRQQMkas60ROdv+d0KRCbdwnpS3YpOOrrCTS2w==","signatures":[{"sig":"MEUCIQDT1C8cZLBrwJGphJ+A+fPszhzmcb6ClcslT9x0j3MewwIgUq66X/XBLc27k7+jfkhJcdwSy1mcdyF8ZfEU2siMW94=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1674907},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d85e04b8424f344d1b3a25f4ffa80ceaaad81eb1","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","release":"release-it","changelog":"node scripts/ai-changelog-generator.js","test:watch":"jest --watch","release:dry":"release-it --dry-run","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"env-paths":"^3.0.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.0.3_1758089773930_0.40674683566222614","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@portel/ncp","version":"1.0.4","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.0.4","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"90b888014b0f8d7f691e4e7efb8730080272e93e","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.0.4.tgz","fileCount":120,"integrity":"sha512-Epxb7UxF1/LKhmpeYuiLcsL8o5YUWGC78A5vNUTMgWBPEs6Ftyb40pXxkTuVTJINF28g+dwUnHKdLmLDHN+c2w==","signatures":[{"sig":"MEUCICTKqOWYbds0bt2iFj7xGsz4PBM+BZ8yDJm1B75Yn7f1AiEAwdRxmiPx/QWc20ynnIWAWBSxWBQVL1YcnxMOTfr0wbc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686436},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4f5941188cef10f5beceaf91cc16e76a02a356cf","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","release":"release-it","changelog":"node scripts/ai-changelog-generator.js","test:watch":"jest --watch","release:dry":"release-it --dry-run","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^5.3.0","marked":"^15.0.12","commander":"^14.0.1","env-paths":"^3.0.0","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/prettyjson":"^0.0.33","@types/marked-terminal":"^6.1.1","@types/string-similarity":"^4.0.2","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.0.4_1758652570392_0.835085585390636","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@portel/ncp","version":"1.1.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.1.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"e5927605baac8da64095f7868991d48e8533aa5e","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.1.0.tgz","fileCount":150,"integrity":"sha512-4MH4/HszUy8aeiiFiY0h2pN8oAmE01JD+wMfdcz2MK6qnm54YEXYe5a3UQEQx/llMay2juzWSL5wz6rcXUcviw==","signatures":[{"sig":"MEUCIFDwOf6pPGNHkT4hMXRJTsazTdjxx/Fyg9Z6kR3zn76KAiEAkHX0Cq7VCxoHJ9X5eEOuoW0NWhFJmfHWtTUHaQyKnow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":843289},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4e17ef9a86f84f0f80b2fa17c50507a1d27a10fc","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","release":"release-it","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^5.3.0","marked":"^15.0.12","express":"^5.1.0","commander":"^14.0.1","env-paths":"^3.0.0","clipboardy":"^4.0.0","node-fetch":"^3.3.2","prettyjson":"^1.2.5","@octokit/rest":"^21.0.2","cli-highlight":"^2.1.11","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@types/string-similarity":"^4.0.2","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.1.0_1758795319317_0.26699973363573815","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@portel/ncp","version":"1.2.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.2.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"9722684c711ec830161438497f1008c032766b82","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.2.0.tgz","fileCount":139,"integrity":"sha512-58cbhhWUVIow9iBLBNSLF+6gBIr9EayZnhdjBosslUjmSU0Jj397yfjfLHI8h5cbCU3vdsGI+1sxgyRTMWJoZw==","signatures":[{"sig":"MEQCIB3HYp0YMlqeaooD22KmTOcS+EGqqfysfO2bSiTRer2fAiBobo20IZbbNrqsdP2uErfJyQo5uweM0nwfnAeMxUPaXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":834031},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"de5fa8f7eb100eb48d466dde27b5d3584e681607","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build","release":"release-it","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^5.3.0","marked":"^15.0.12","express":"^5.1.0","commander":"^14.0.1","env-paths":"^3.0.0","clipboardy":"^4.0.0","node-fetch":"^3.3.2","prettyjson":"^1.2.5","@octokit/rest":"^21.0.2","cli-highlight":"^2.1.11","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@types/string-similarity":"^4.0.2","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.2.0_1758797704048_0.43939987028954497","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@portel/ncp","version":"1.2.1","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.2.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"dc21865d333087a858dee203ee2a7007f9ec1874","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.2.1.tgz","fileCount":139,"integrity":"sha512-bMRBnX2VfDVdsEQctMgZ+Igrj4HI/AgvWEVpFxFLr7oxMuUxtk+L81GENnRhBArnBq9hafK85GnM9GNJMwwAhQ==","signatures":[{"sig":"MEQCIGp2rQI3qVgYmZnSzx9nKB/y+uhaujSDVMha8nDrXAP0AiA2Y9WxsPfHv4h/fObWMS4YExTebEY5aF4uWXWWtRf6KA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":833946},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4e3ffb248cd41ad0a5cdb56118b1fd22ff91c469","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build","release":"release-it","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^5.3.0","marked":"^15.0.12","commander":"^14.0.1","env-paths":"^3.0.0","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@types/string-similarity":"^4.0.2","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.2.1_1758799085906_0.060833151915214545","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@portel/ncp","version":"1.3.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.3.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"7a1ff41c75f40efa38f30fa7aa98647c99ec77f0","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.3.0.tgz","fileCount":209,"integrity":"sha512-LQQvmEt5ski8ugEdNiizeMyEBq8rAgEbl047bZD0AyRvZLrxK053UVyX56xgf+XydzVD/e6z+dYMq3Igtdo3jQ==","signatures":[{"sig":"MEYCIQCVkfJJ8vqrFuw8NMhjZd7FxuAC57GSw/9S1ObppOo9FwIhANk21swO4L/dkRitfijW+6MK7X7+3hPNXfSDPrplCa0/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4545245},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f525646b2bf5e3037ac3712ca9b3ad3c60dee145","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build","release":"release-it","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^5.3.0","marked":"^15.0.12","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","json-colorizer":"^3.0.1","blessed-contrib":"^4.11.0","marked-terminal":"^7.3.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@types/string-similarity":"^4.0.2","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.3.0_1758880741474_0.8935877414414062","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@portel/ncp","version":"1.3.1","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.3.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"f150b7948b65606aefb037107d9ed2c182d5ad61","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.3.1.tgz","fileCount":210,"integrity":"sha512-9NGSdURVErIKhM68hFb00gUkvygfjw+U7tbBcOqPLy+2fPgjViCX0aYBzQYJhAnf9VkFsbzGn2OTRTjD2jLFeQ==","signatures":[{"sig":"MEQCICM3MYzGeJ+28YBW8/LNp/PSoXFlO39zrOiYipMDkaSyAiAjPDMd6v8wiTk3Oa7HYRYSNK5tk+ohDrdcIUHL5YTePw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4565156},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4f6e89cfa0af5d9e01e4cedb8618d083b790eeae","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose","prepublishOnly":"npm run build && npm run test:pre-publish","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^5.3.0","marked":"^15.0.12","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","json-colorizer":"^3.0.1","blessed-contrib":"^4.11.0","marked-terminal":"^7.3.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@types/string-similarity":"^4.0.2","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.3.1_1758959660629_0.7361657655759526","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@portel/ncp","version":"1.3.2","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.3.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"3152a68948b8984f5a2f2d073deb088d2e0b3a4a","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.3.2.tgz","fileCount":206,"integrity":"sha512-3IzRFP6p6cXYLLPbFqlSj5yRRP7HKwjxtvPwcHx94JEhQI8f/lneUmNQUos4GVgFKbMxElbbpMFmK0F1UWzY5Q==","signatures":[{"sig":"MEQCIC4F6VX+J5B0y11xVBvK+O6c1PUtWoJzmsF6EUP9yM/mAiBinaLdK3MOZkDHkTFj6aRV6xlYAp9LJ1wv6WYhXB8NRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4547918},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5d29542284367e40dcdbe575e250d4c4b935c06f","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose","prepublishOnly":"npm run build && npm run test:pre-publish","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^5.3.0","marked":"^15.0.12","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","json-colorizer":"^3.0.1","blessed-contrib":"^4.11.0","marked-terminal":"^7.3.0","string-similarity":"^4.0.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@types/string-similarity":"^4.0.2","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.3.2_1758960332188_0.6995554868019758","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@portel/ncp","version":"1.4.1","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.4.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"4f88300069a0732aa75dbf018b6d8c9b9bcbf7b2","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.4.1.tgz","fileCount":91,"integrity":"sha512-7aa3pkkjvoHPq9gFeamFy1i3mUWBsMCQcN2+jd2xifRoZmcGsv2qSJOXkvuF2qFikFSR8PiXUsaimNz4tkkLnw==","signatures":[{"sig":"MEUCIQCng1hAz+VTHjX7LJVCO+WmFuWmKT0u39+egtbhLBJTpQIgS0eaub7YJMZU2AofhqnJSCNh6fSpqKFWU/VNXrXDOFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":663808},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"bd6ea80c02435932702cdaa12390e159dc5a845a","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:cli":"bash test/cli-help-validation.sh","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","blessed-contrib":"^4.11.0","marked-terminal":"^7.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0","@gongrzhe/server-gmail-autoauth-mcp":"^1.1.11"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.4.1_1759470291732_0.8673891283412725","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@portel/ncp","version":"1.4.2","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.4.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"2c94aeb025c60efc32acf1a39d3ccb4e13f5e3ee","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.4.2.tgz","fileCount":93,"integrity":"sha512-9nZGh5qBj6F9n6FW2mYkAAwugTrALh5cDwfLKwcykJ5MYptS7cZQU/zmFf6PnrL5SuiWgbZg/WF7xrgooafn3g==","signatures":[{"sig":"MEUCICRgc2Ln+nNnv9o6xrtuAvtULkIwqBGbqAvnd+1txs9JAiEAxB64o5m3a0A8tuE5c4ayfqjOcXtWeRKykJG45aivniw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":670242},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f843f07fed3bf81331b76221818e6690c3d5f95a","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:cli":"bash test/cli-help-validation.sh","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","blessed-contrib":"^4.11.0","marked-terminal":"^7.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0","@gongrzhe/server-gmail-autoauth-mcp":"^1.1.11"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.4.2_1759470434472_0.2582106248196223","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@portel/ncp","version":"1.4.3","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.4.3","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"0165156da45a4b71dcfbe5357d17c221468b075e","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.4.3.tgz","fileCount":93,"integrity":"sha512-wAkhy46P0iKMhsO6p7lyw+CqLHe7AQIRKJoXJ51Wl/1bg0I1Vv3hjfUcUfOe5Oc9J9DifTqXxYfZ6oigBNrtbA==","signatures":[{"sig":"MEYCIQDQpnEqUTDqPz57lyOuVF3h/30N/mjjqRhC5sOufXsntgIhAMgU8cWQRUTwy9jOfU9TpDOaa5h6Nhqbm52nGSY5dcSu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":670287},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"fac28ff24523045bcbe76926d90297c99bbab69c","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:cli":"bash test/cli-help-validation.sh","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","blessed-contrib":"^4.11.0","marked-terminal":"^7.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0","@gongrzhe/server-gmail-autoauth-mcp":"^1.1.11"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@sentry/mcp-server":"^0.18.0","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.4.3_1759472559611_0.6056942665586276","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@portel/ncp","version":"1.5.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.5.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"b95d7c581f056d89120b22d4ac538fdaf9ccc112","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.5.0.tgz","fileCount":176,"integrity":"sha512-QOCqRR34x+iG84t13Y0fGMiZPHExjuLtFvlDqKxWvbfURBeS/rhmjVNuAxjfMdbnQ2Q41DREJij6RX+dv/4Wkw==","signatures":[{"sig":"MEUCIQDvv5pq0UjFOh8YekAQL8EujsQfKaBDCRU5QiKUFpbrYQIgW12n55c9RP6K333nZYXDVP8urWqYs1FbqYLP+breASU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1123392},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d089f6b7bddbfdd6010121e1aed058912ebfdd6a","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest --detectOpenHandles --forceExit","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:cli":"bash test/cli-help-validation.sh","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage --detectOpenHandles --forceExit","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.5.0_1760207329849_0.12743589152195844","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@portel/ncp","version":"1.5.1","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.5.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"def5ef5cfd0192af1892f304f59164c98be21dec","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.5.1.tgz","fileCount":176,"integrity":"sha512-pD0JfHFFxK6Q1+O54pVtJJUwxGJqFSutBQl5aCUAEEGuTFAT2vpurawqqeMfwy9N4UaY00FgPbh5PEEsbpcVyw==","signatures":[{"sig":"MEQCIFiPz9LsY4dpxEJhJPKOlowxrqpxZ0H3IjYry3T4H7OJAiBI1tFZVCstMcUz10uXV7eskH/BkXypPEsBYrGg4M46PQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1126758},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8765c6964c0166251222ec58da91a4bd7dc88d96","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest --detectOpenHandles --forceExit","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:cli":"bash test/cli-help-validation.sh","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage --detectOpenHandles --forceExit","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.5.1_1760273295039_0.011077468883509356","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@portel/ncp","version":"1.5.2","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.5.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"e1b8fab5f1372a3bf36a2bba318825462e8cc361","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.5.2.tgz","fileCount":176,"integrity":"sha512-GL8ihlZIriOIeMRyM2PHCzn4vKvfcwBXYNMZyV3p0NvNhu9UuYw5eu4H4m2uGggaHvCBeQpa9KIQ0WkxtYnbiQ==","signatures":[{"sig":"MEUCIQDI4Y79ZyofugXFMSyky7RG452eA/OYn1aK+GP2+rvTGQIgGCtUpx3KGC/KEnk52xeO931bwhUiI2xOoCXV80u6AsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1122989},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4ebf8271510ae8ca673f117538712ec858776a2a","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest --detectOpenHandles --forceExit","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:cli":"bash test/cli-help-validation.sh","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage --detectOpenHandles --forceExit","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.5.2_1760285113038_0.9480922483836836","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@portel/ncp","version":"1.5.3","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"NCP Team"},"license":"Elastic-2.0","_id":"@portel/ncp@1.5.3","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"ccd7d9d96d8821e5d07a3649705af86c537fa81e","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.5.3.tgz","fileCount":228,"integrity":"sha512-vMaaA4Jiqhhmkv3nWk4gHZCU03I5Lh0pvSojmz7Kq3ugI9/fdcx2H7uA2Kom+DqXKTPplkzFq1nlXuclkUhnEA==","signatures":[{"sig":"MEUCIQDtkeT188216wlRLEtJ9AxyUKODPMQoGqhCnopqI6EOygIgUlp0LsYHeCxhK41y8ELsMkjl1GQPj8xwMSYkq3vvngg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1309511},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d44469a2bcdb1a67670fbd76563e2b099efcce53","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest --detectOpenHandles --forceExit","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:cli":"bash test/cli-help-validation.sh","test:watch":"jest --watch","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage --detectOpenHandles --forceExit","test:critical":"jest test/mcp-server-protocol.test.ts test/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:pre-publish":"npm run test:critical && npm run test"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider - N-to-1 MCP Orchestration for AI Assistants","directories":{},"_nodeVersion":"24.7.0","dependencies":{"yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.5.3_1760429580021_0.7172953619384395","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@portel/ncp","version":"1.6.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"Portel"},"license":"Elastic-2.0","_id":"@portel/ncp@1.6.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js"},"dist":{"shasum":"4c6a27b8c082e1e1b03a9d03590c3adeef8b0dd5","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.6.0.tgz","fileCount":332,"integrity":"sha512-dL4h9f14ZjbkEWMEX3y+GEizLW9Ojf+Ada8q2z+5Fvud3Jtlvmgev1XjmXqcjuElt8unZn5SACcX8sWilXGR4g==","signatures":[{"sig":"MEYCIQDVvfRyfwvbdFP2Z0OlD8oEQyvi++HEctBBqwGWcSN8owIhAIq8ZDHI3+9dRN2dvuHVxQR8zf6O1I09MiM4dgzV3ArJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2238800},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7075f69e16dfaadcd4f958c74b104bc39a20e4f3","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"jest --detectOpenHandles --forceExit","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:ci":"npm run test:critical && npm run test:e2e && npm run test:integration && npm run test:dxt","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"bash scripts/test-dxt-package.sh","test:e2e":"npm run build && jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build && npm prune --production && npx @anthropic-ai/mcpb pack . ncp.dxt && npm install","test:watch":"jest --watch","verify:dxt":"npm run test:dxt","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","test:e2e:cli":"npm run build && jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","test:coverage":"jest --coverage --detectOpenHandles --forceExit","test:critical":"jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:dxt && npx @anthropic-ai/mcpb sign ncp.dxt --cert cert.pem --key key.pem && npm run test:dxt","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","build:dxt:signed":"npm run build:dxt:patched && npx @anthropic-ai/mcpb sign ncp.dxt --self-signed && npm run test:dxt","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:integration","build:dxt:patched":"npm run build:dxt && ./scripts/patch-dxt-zip.sh","test:client-registry":"node scripts/test-client-registry.js","test:e2e:internal-mcps":"npm run build && jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.5.1","description":"Natural Context Provider. 1 MCP to rule them all - Your MCP Concierge. Complete platform for discovering, managing, and accessing MCPs. Simplifies 50+ tools into 2, auto-syncs with Claude Desktop, saves 97% tokens.","directories":{},"_nodeVersion":"24.7.0","dependencies":{"uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","prompts":"^2.4.2","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@anthropic-ai/sdk":"^0.67.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"tsx":"^4.20.5","jest":"^30.1.3","ts-jest":"^29.4.2","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","@types/express":"^5.0.3","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^1.1.1","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.6.0_1761191382971_0.07919391184882918","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@portel/ncp","version":"1.8.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"Portel"},"license":"Elastic-2.0","_id":"@portel/ncp@1.8.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js","ncp-mcp":"dist/index-mcp.js"},"dist":{"shasum":"4c5e8351bce5e916803ed1f09e0827d40d438584","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-1.8.0.tgz","fileCount":533,"integrity":"sha512-A79VjRblnW3zF4v0lIoJgr+OWJCq6hAVIPG1X3DH64h0dSg+2a9U6TpTOwDcxy3n1ggzcBTvS0VBVqNM9gWNZw==","signatures":[{"sig":"MEUCIBctmM85c++EbdeyYVlbj8MC0+5W1zFz1mxOEODFCir6AiEA/eglQ2BcLaLAd0jT2UxUTbZbToBEyLqUfdeUY3AQ1+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3861430},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3ec58d6f4629883ed2e4cbead996dca944bb6299","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit","build":"npm run extract-schemas && tsc && npm run copy-schemas && chmod +x dist/index.js dist/index-mcp.js","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:ci":"npm run test:critical && npm run test:e2e && npm run test:integration && npm run test:integration:dxt && npm run test:mcpb","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"npm run test:mcpb","test:e2e":"npm run build && NODE_OPTIONS=--experimental-vm-modules jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build:mcpb","test:mcpb":"[ -f scripts/test-dxt-package.sh ] && bash scripts/test-dxt-package.sh || echo 'MCPB test script not found, skipping'","build:mcpb":"bash scripts/build-dxt-clean.sh","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","verify:dxt":"npm run verify:mcpb","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","verify:mcpb":"npm run test:mcpb","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","copy-schemas":"mkdir -p dist/internal-mcps && cp src/internal-mcps/*.schema.json dist/internal-mcps/ 2>/dev/null || true","test:e2e:cli":"npm run build && NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage --detectOpenHandles --forceExit","test:critical":"NODE_OPTIONS=--experimental-vm-modules jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:mcpb:prod","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","verify-clients":"npm run build && node scripts/verify-client-configs.js","build:mcpb:prod":"npm run build:mcpb && npx @anthropic-ai/mcpb sign ncp.mcpb --cert cert.pem --key key.pem && npm run test:mcpb","extract-schemas":"tsx scripts/extract-schemas.ts","build:dxt:signed":"npm run build:mcpb:signed","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:integration && npm run test:integration:dxt","build:dxt:patched":"npm run build:mcpb:patched","build:mcpb:signed":"npm run build:mcpb:patched && npx @anthropic-ai/mcpb sign ncp.mcpb --self-signed && npm run test:mcpb","build:mcpb:patched":"npm run build:mcpb && ./scripts/patch-dxt-zip.sh","test:client-registry":"node scripts/test-client-registry.js","test:integration:dxt":"npm run build && node tests/integration/mcp-dxt-entry-point.test.cjs","test:integration:mcpb":"npm run test:integration:dxt","test:e2e:internal-mcps":"npm run build && NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js","test:integration:intelligence":"npm run build && node tests/integration/test-intelligence-basic.cjs"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.6.2","description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"tsx":"^4.20.6","uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","adm-zip":"^0.5.16","js-yaml":"^4.1.1","prompts":"^2.4.2","chokidar":"^5.0.0","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@napi-rs/keyring":"^1.2.0","@anthropic-ai/sdk":"^0.67.0","@portel/photon-core":"^1.0.2","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","mcp-evals":"^2.0.1","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","@types/adm-zip":"^0.5.7","@types/express":"^5.0.3","@types/js-yaml":"^4.0.9","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^2.1.2","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_1.8.0_1765724998097_0.974812410616569","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@portel/ncp","version":"2.0.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"Portel"},"license":"Elastic-2.0","_id":"@portel/ncp@2.0.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js","ncp-mcp":"dist/index-mcp.js"},"dist":{"shasum":"be9995fdbfbe65187f77111631fc319e8959e563","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-2.0.0.tgz","fileCount":617,"integrity":"sha512-57VHQ7049UIznA1hmeT7Yi1XFsyIQIm5M9h6FfXM4dJRNdGQq9hi5qW344GN/GuP7F9AWIuScmKaPFuJVOJgnw==","signatures":[{"sig":"MEUCIQC+f/aakmI1WASzBtgJ+/VyOLvp5qmOOCFeZhe/v40WQwIgVGFdpFLivChlU+WnqvkV+BnWrImFPN3M3R8i2N1SZFg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4207761},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1911fdb6990bd882fba90169fbd0b56cf80b232b","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit","build":"npm run extract-schemas && tsc && npm run copy-schemas && chmod +x dist/index.js dist/index-mcp.js","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:ci":"npm run test:critical && npm run test:e2e && npm run test:integration && npm run test:integration:dxt && npm run test:mcpb","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"npm run test:mcpb","test:e2e":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build:mcpb","test:mcpb":"[ -f scripts/test-dxt-package.sh ] && bash scripts/test-dxt-package.sh || echo 'MCPB test script not found, skipping'","build:mcpb":"bash scripts/build-dxt-clean.sh","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --watch","verify:dxt":"npm run verify:mcpb","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","verify:mcpb":"npm run test:mcpb","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","copy-schemas":"mkdir -p dist/internal-mcps && cp src/internal-mcps/*.schema.json dist/internal-mcps/ 2>/dev/null || true","test:e2e:cli":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","test:coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --detectOpenHandles --forceExit","test:critical":"cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:mcpb:prod","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","verify-clients":"npm run build && node scripts/verify-client-configs.js","build:mcpb:prod":"npm run build:mcpb && npx @anthropic-ai/mcpb sign ncp.mcpb --cert cert.pem --key key.pem && npm run test:mcpb","extract-schemas":"tsx scripts/extract-schemas.ts","build:dxt:signed":"npm run build:mcpb:signed","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:integration && npm run test:integration:dxt","build:dxt:patched":"npm run build:mcpb:patched","build:mcpb:signed":"npm run build:mcpb:patched && npx @anthropic-ai/mcpb sign ncp.mcpb --self-signed && npm run test:mcpb","build:mcpb:patched":"npm run build:mcpb && ./scripts/patch-dxt-zip.sh","test:client-registry":"node scripts/test-client-registry.js","test:integration:dxt":"npm run build && node tests/integration/mcp-dxt-entry-point.test.cjs","test:integration:mcpb":"npm run test:integration:dxt","test:e2e:internal-mcps":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js","test:integration:intelligence":"npm run build && node tests/integration/test-intelligence-basic.cjs"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.6.2","description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"tsx":"^4.20.6","uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","adm-zip":"^0.5.16","js-yaml":"^4.1.1","pdf-lib":"^1.17.1","prompts":"^2.4.2","chokidar":"^5.0.0","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","isolated-vm":"^6.0.2","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@napi-rs/keyring":"^1.2.0","@anthropic-ai/sdk":"^0.67.0","@portel/photon-core":"^1.0.2","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","cross-env":"^10.1.0","mcp-evals":"^2.0.1","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","@types/adm-zip":"^0.5.7","@types/express":"^5.0.3","@types/js-yaml":"^4.0.9","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^2.1.2","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_2.0.0_1766845544240_0.2901598673667043","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@portel/ncp","version":"2.0.1","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"Portel"},"license":"Elastic-2.0","_id":"@portel/ncp@2.0.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js","ncp-mcp":"dist/index-mcp.js"},"dist":{"shasum":"14fec8085e5d1b057c775d96fb1a4565dfa21875","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-2.0.1.tgz","fileCount":617,"integrity":"sha512-NG4PMKkfVGtusSDBYksH479L6b8Olrz2xB4HnLeg17HZIXiPyrnH/NDPB4L+m9Yvttc5O1n4mTIaZvGBNgGy0Q==","signatures":[{"sig":"MEUCIFsRWjKwZJjEvwXe5qoKLnAuRLaJ4at9H4oJ/oPDGnnZAiEAxkuxypqcgNrOSTcgviI4ATrKJChH9gOBS5jkCtmTOJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4207955},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7b12ed6d4aa861d04a3645d2ca50dbfcd71c617e","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit","build":"npm run extract-schemas && tsc && npm run copy-schemas && chmod +x dist/index.js dist/index-mcp.js","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:ci":"npm run test:critical && npm run test:e2e && npm run test:integration && npm run test:integration:dxt && npm run test:mcpb","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"npm run test:mcpb","test:e2e":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build:mcpb","test:mcpb":"[ -f scripts/test-dxt-package.sh ] && bash scripts/test-dxt-package.sh || echo 'MCPB test script not found, skipping'","build:mcpb":"bash scripts/build-dxt-clean.sh","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --watch","verify:dxt":"npm run verify:mcpb","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","verify:mcpb":"npm run test:mcpb","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","copy-schemas":"mkdir -p dist/internal-mcps && cp src/internal-mcps/*.schema.json dist/internal-mcps/ 2>/dev/null || true","test:e2e:cli":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","test:coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --detectOpenHandles --forceExit","test:critical":"cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:mcpb:prod","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","verify-clients":"npm run build && node scripts/verify-client-configs.js","build:mcpb:prod":"npm run build:mcpb && npx @anthropic-ai/mcpb sign ncp.mcpb --cert cert.pem --key key.pem && npm run test:mcpb","extract-schemas":"tsx scripts/extract-schemas.ts","build:dxt:signed":"npm run build:mcpb:signed","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:integration && npm run test:integration:dxt","build:dxt:patched":"npm run build:mcpb:patched","build:mcpb:signed":"npm run build:mcpb:patched && npx @anthropic-ai/mcpb sign ncp.mcpb --self-signed && npm run test:mcpb","build:mcpb:patched":"npm run build:mcpb && ./scripts/patch-dxt-zip.sh","test:client-registry":"node scripts/test-client-registry.js","test:integration:dxt":"npm run build && node tests/integration/mcp-dxt-entry-point.test.cjs","test:integration:mcpb":"npm run test:integration:dxt","test:e2e:internal-mcps":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js","test:integration:intelligence":"npm run build && node tests/integration/test-intelligence-basic.cjs"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.6.2","description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"tsx":"^4.20.6","uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","adm-zip":"^0.5.16","js-yaml":"^4.1.1","pdf-lib":"^1.17.1","prompts":"^2.4.2","chokidar":"^5.0.0","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","isolated-vm":"^6.0.2","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@napi-rs/keyring":"^1.2.0","@anthropic-ai/sdk":"^0.67.0","@portel/photon-core":"^1.0.2","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","cross-env":"^10.1.0","mcp-evals":"^2.0.1","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","@types/adm-zip":"^0.5.7","@types/express":"^5.0.3","@types/js-yaml":"^4.0.9","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^2.1.2","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_2.0.1_1766847417858_0.3449717192347337","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@portel/ncp","version":"2.0.2","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"Portel"},"license":"Elastic-2.0","_id":"@portel/ncp@2.0.2","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js","ncp-mcp":"dist/index-mcp.js"},"dist":{"shasum":"471d4d6cec917d1052b9291aa152a58d14ebab62","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-2.0.2.tgz","fileCount":617,"integrity":"sha512-G1xCkf9mnuAzHb5byeJI1152kDl0NrMmFeRzdK3RhY7hmB4k+qP8RRsekmmX8XFunz6wrUCine894h/tH/5aOQ==","signatures":[{"sig":"MEQCIApl2Vi2jAUuwnwQkcTMCThZIIgfYbYsXimGag3Dc91SAiAVJpfpldWHYZut+YaU6nyguwwYEkJGcM8TanjLFVQ61A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4217750},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"182db9cc245e66c2dcb508fba9e9f8db87c153af","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit","build":"npm run extract-schemas && tsc && npm run copy-schemas && chmod +x dist/index.js dist/index-mcp.js","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:ci":"npm run test:critical && npm run test:e2e && npm run test:integration && npm run test:integration:dxt && npm run test:mcpb","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"npm run test:mcpb","test:e2e":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build:mcpb","test:mcpb":"[ -f scripts/test-dxt-package.sh ] && bash scripts/test-dxt-package.sh || echo 'MCPB test script not found, skipping'","build:mcpb":"bash scripts/build-dxt-clean.sh","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --watch","verify:dxt":"npm run verify:mcpb","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","verify:mcpb":"npm run test:mcpb","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","copy-schemas":"mkdir -p dist/internal-mcps && cp src/internal-mcps/*.schema.json dist/internal-mcps/ 2>/dev/null || true","test:e2e:cli":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","test:coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --detectOpenHandles --forceExit","test:critical":"cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:mcpb:prod","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","verify-clients":"npm run build && node scripts/verify-client-configs.js","build:mcpb:prod":"npm run build:mcpb && npx @anthropic-ai/mcpb sign ncp.mcpb --cert cert.pem --key key.pem && npm run test:mcpb","extract-schemas":"tsx scripts/extract-schemas.ts","build:dxt:signed":"npm run build:mcpb:signed","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:integration && npm run test:integration:dxt","build:dxt:patched":"npm run build:mcpb:patched","build:mcpb:signed":"npm run build:mcpb:patched && npx @anthropic-ai/mcpb sign ncp.mcpb --self-signed && npm run test:mcpb","build:mcpb:patched":"npm run build:mcpb && ./scripts/patch-dxt-zip.sh","test:client-registry":"node scripts/test-client-registry.js","test:integration:dxt":"npm run build && node tests/integration/mcp-dxt-entry-point.test.cjs","test:integration:mcpb":"npm run test:integration:dxt","test:e2e:internal-mcps":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js","test:integration:intelligence":"npm run build && node tests/integration/test-intelligence-basic.cjs"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.6.2","description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","directories":{},"_nodeVersion":"25.2.1","dependencies":{"tsx":"^4.20.6","uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","adm-zip":"^0.5.16","js-yaml":"^4.1.1","pdf-lib":"^1.17.1","prompts":"^2.4.2","chokidar":"^5.0.0","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","isolated-vm":"^6.0.2","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@napi-rs/keyring":"^1.2.0","@anthropic-ai/sdk":"^0.67.0","@portel/photon-core":"^1.1.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","cross-env":"^10.1.0","mcp-evals":"^2.0.1","mcp-server":"^0.0.9","release-it":"^19.0.4","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","@types/adm-zip":"^0.5.7","@types/express":"^5.0.3","@types/js-yaml":"^4.0.9","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^2.1.2","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^2.9.6","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.2.23","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_2.0.2_1767028043758_0.34390606733327633","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@portel/ncp","version":"2.3.0","keywords":["mcp","model-context-protocol","ai-orchestration","tool-discovery"],"author":{"name":"Portel"},"license":"Elastic-2.0","_id":"@portel/ncp@2.3.0","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://github.com/portel-dev/ncp#readme","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js","ncp-mcp":"dist/index-mcp.js"},"dist":{"shasum":"4479fe11dea88f8664d904d5f60aa9dd423900fe","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-2.3.0.tgz","fileCount":669,"integrity":"sha512-jbKDk4Meoqymo3PMS0H2ukMeN5DbNtDbVhiveDyBX/Ew3CI5oLIbxKYi+cfw3DEnGzjO/+21avb9TEemfVXvGA==","signatures":[{"sig":"MEYCIQC81UBOwqzWL3LmY04CAaU46NJ+8TDx6mOLshc2sx0zOAIhALqFEvMy/wLztq+chWAunHz+LE5qxRvR5jEWzYDWRE6K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4526913},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"bun":">=1.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0e01a0dc7f7909aceb1adbe2eea105738a9b22ba","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit","build":"npm run extract-schemas && tsc && npm run copy-schemas && chmod +x dist/index.js dist/index-mcp.js","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"release-it","test:ci":"npm run test:critical && npm run test:e2e && npm run test:integration && npm run test:integration:dxt && npm run test:mcpb","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"npm run test:mcpb","test:e2e":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build:mcpb","test:mcpb":"[ -f scripts/test-dxt-package.sh ] && bash scripts/test-dxt-package.sh || echo 'MCPB test script not found, skipping'","build:mcpb":"bash scripts/build-dxt-clean.sh","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --watch","verify:dxt":"npm run verify:mcpb","postinstall":"npm run build:if-dev","release:dry":"release-it --dry-run","verify:mcpb":"npm run test:mcpb","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","copy-schemas":"mkdir -p dist/internal-mcps && cp src/internal-mcps/*.schema.json dist/internal-mcps/ 2>/dev/null || true","test:e2e:cli":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","test:coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --detectOpenHandles --forceExit","test:critical":"cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:mcpb:prod","prepublishOnly":"npm run build && npm run test:pre-publish && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","verify-clients":"npm run build && node scripts/verify-client-configs.js","build:mcpb:prod":"npm run build:mcpb && npx @anthropic-ai/mcpb sign ncp.mcpb --cert cert.pem --key key.pem && npm run test:mcpb","extract-schemas":"tsx scripts/extract-schemas.ts","build:dxt:signed":"npm run build:mcpb:signed","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:integration && npm run test:integration:dxt","build:dxt:patched":"npm run build:mcpb:patched","build:mcpb:signed":"npm run build:mcpb:patched && npx @anthropic-ai/mcpb sign ncp.mcpb --self-signed && npm run test:mcpb","build:mcpb:patched":"npm run build:mcpb && ./scripts/patch-dxt-zip.sh","test:client-registry":"node scripts/test-client-registry.js","test:integration:dxt":"npm run build && node tests/integration/mcp-dxt-entry-point.test.cjs","test:integration:mcpb":"npm run test:integration:dxt","test:e2e:internal-mcps":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js","test:integration:intelligence":"npm run build && node tests/integration/test-intelligence-basic.cjs"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.9.0","description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"tsx":"^4.20.6","uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","adm-zip":"^0.5.16","js-yaml":"^4.1.1","pdf-lib":"^1.17.1","prompts":"^2.4.2","chokidar":"^5.0.0","inquirer":"^12.9.6","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","isolated-vm":"^6.0.2","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@napi-rs/keyring":"^1.2.0","@anthropic-ai/sdk":"^0.67.0","@portel/photon-core":"^2.9.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","cross-env":"^10.1.0","mcp-evals":"^2.0.1","mcp-server":"^0.0.9","release-it":"^19.0.4","rss-parser":"^3.13.0","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","csv-stringify":"^6.6.0","@types/adm-zip":"^0.5.7","@types/express":"^5.0.3","@types/js-yaml":"^4.0.9","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^2.1.2","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^3.3.0","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.1.10","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_2.3.0_1772809879960_0.18603704656037512","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@portel/ncp","version":"2.3.1","keywords":["mcp","model-context-protocol","mcp-router","mcp-server","mcp-tool-discovery","claude-desktop","cursor","vscode","code-mode","scheduler","skills","photon-runtime","ai-orchestration","tool-discovery"],"author":{"name":"Portel"},"license":"Elastic-2.0","_id":"@portel/ncp@2.3.1","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"homepage":"https://portel-dev.github.io/ncp/","bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"bin":{"ncp":"dist/index.js","ncp-mcp":"dist/index-mcp.js"},"dist":{"shasum":"37ea50729292e6c172b9491b2219df74027a72f5","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-2.3.1.tgz","fileCount":670,"integrity":"sha512-60X9hhTLcR0hy0DC3l5x1yodFNxopx4DyoJIEwzSACp6DzL5KHYB2m4uWtG9voCa6l3tgt90OUXNPAjXHaqb6Q==","signatures":[{"sig":"MEUCIQChbGI1I19VyVDN7Jjd3QYC6PEmcFV2RzWtUiuhda/sagIgaVeor2RWcEFTaOAP4FdAI1KWeN5gt6z0sPVSt0/SIpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4599988},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"bun":">=1.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c9ee9c6bb16cc2cccc2013535997bbf21308c8d7","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit","build":"npm run extract-schemas && tsc && npm run copy-schemas && chmod +x dist/index.js dist/index-mcp.js","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"npm run check:root && release-it","test:ci":"npm run test:critical && npm run test:e2e && npm run test:integration && npm run test:integration:dxt && npm run test:mcpb","docs:dev":"npm run docs:sync && vitepress dev docs-site","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"npm run test:mcpb","test:e2e":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build:mcpb","docs:sync":"node scripts/sync-docs-site.mjs","test:mcpb":"if [ -f scripts/test-dxt-package.sh ]; then bash scripts/test-dxt-package.sh; else echo 'MCPB test script not found, skipping'; fi","build:mcpb":"bash scripts/build-dxt-clean.sh","check:root":"node scripts/check-root-clutter.js","docs:build":"npm run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --watch","verify:dxt":"npm run verify:mcpb","postinstall":"npm run build:if-dev","release:dry":"npm run check:root && release-it --dry-run","verify:mcpb":"npm run test:mcpb","build:if-dev":"[ -d node_modules/typescript ] && npm run build || echo 'Build skipped (production install)'","copy-schemas":"mkdir -p dist/internal-mcps && cp src/internal-mcps/*.schema.json dist/internal-mcps/ 2>/dev/null || true","docs:preview":"vitepress preview docs-site","test:e2e:cli":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","test:coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --detectOpenHandles --forceExit","test:critical":"cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:mcpb:prod","prepublishOnly":"npm run build && npm run test:pre-publish && npm run check:root && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","verify-clients":"npm run build && node scripts/verify-client-configs.js","build:mcpb:prod":"npm run build:mcpb && npx @anthropic-ai/mcpb sign ncp.mcpb --cert cert.pem --key key.pem && npm run test:mcpb","extract-schemas":"tsx scripts/extract-schemas.ts","build:dxt:signed":"npm run build:mcpb:signed","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:integration && npm run test:integration:dxt","build:dxt:patched":"npm run build:mcpb:patched","build:mcpb:signed":"npm run build:mcpb:patched && npx @anthropic-ai/mcpb sign ncp.mcpb --self-signed && npm run test:mcpb","build:mcpb:patched":"npm run build:mcpb && ./scripts/patch-dxt-zip.sh","test:client-registry":"node scripts/test-client-registry.js","test:integration:dxt":"npm run build && node tests/integration/mcp-dxt-entry-point.test.cjs","test:integration:mcpb":"npm run test:integration:dxt","test:e2e:internal-mcps":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js","test:integration:intelligence":"npm run build && node tests/integration/test-intelligence-basic.cjs"},"_npmUser":{"name":"luracast","email":"arul@luracast.com"},"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.11.0","description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"tsx":"^4.20.6","uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","adm-zip":"^0.5.16","js-yaml":"^4.1.1","pdf-lib":"^1.17.1","prompts":"^2.4.2","chokidar":"^5.0.0","inquirer":"^12.9.6","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","isolated-vm":"^6.0.2","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@napi-rs/keyring":"^1.2.0","@anthropic-ai/sdk":"^0.67.0","@portel/photon-core":"^2.9.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.18.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","cross-env":"^10.1.0","mcp-evals":"^2.0.1","vitepress":"^1.6.4","mcp-server":"^0.0.9","release-it":"^19.0.4","rss-parser":"^3.13.0","typescript":"^5.9.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","csv-stringify":"^6.6.0","@types/adm-zip":"^0.5.7","@types/express":"^5.0.3","@types/js-yaml":"^4.0.9","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^2.1.2","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^3.3.0","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.1.10","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"tmp":"tmp/ncp_2.3.1_1781228343793_0.12834998938551068","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"_id":"@portel/ncp@3.0.0","bin":{"ncp":"dist/index.js","ncp-mcp":"dist/index-mcp.js"},"bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"dist":{"shasum":"68e3fdefa78d4ceea6022fe9a3e45e6476d13d13","tarball":"https://registry.npmjs.org/@portel/ncp/-/ncp-3.0.0.tgz","fileCount":691,"integrity":"sha512-ChkBdYzSMaDysWkZEW6VlnGRRKWZ1L+JCZevqKNrMngW1mIz1wiupaNNvkoGJR2KVNWGwJZ2D6sA5r4eJuN/3Q==","signatures":[{"sig":"MEUCIQC3Bt5WpHPStIDfDV53Wr9R34l11qZuUwTMqXTBPBqr1QIgCn0BrJelDmwmYuFBnUavsrs368eSVjjcymZOBCQBNyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCS0/1FY3blHz7NYHzoEWr0eDhPETn0TPdJg0dJOGuZtQIgfXn9xhi7kXeTG8/tLR+icFxRSZkPNPPtTW2RLoii4A0="}],"unpackedSize":4878085},"main":"dist/index.js","name":"@portel/ncp","type":"module","types":"dist/index.d.ts","author":{"name":"Portel"},"module":"dist/index.js","engines":{"bun":">=1.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"77e69671eaed1b12c7cd1b10233f34a0f17358e9","license":"Elastic-2.0","mcpName":"io.github.portel-dev/ncp","scripts":{"dev":"npm run build && npm run start","test":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit","build":"npm run extract-schemas && tsc && npm run copy-schemas && node scripts/set-executable-bits.cjs","start":"node dist/index.js","stats":"node scripts/check-dxt-downloads.js","prepack":"npm run build && npm run test:pre-publish","release":"npm run check:root && release-it","test:ci":"npm run test:critical && npm run test:compatibility && npm run test:extensions && npm run test:conformance && npm run test:e2e && npm run test:integration && npm run test:integration:dxt && npm run test:mcpb","docs:dev":"npm run docs:sync && vitepress dev docs-site","test:cli":"bash tests/cli-help-validation.sh","test:dxt":"npm run test:mcpb","test:e2e":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e --detectOpenHandles --forceExit --runInBand","build:dxt":"npm run build:mcpb","docs:sync":"node scripts/sync-docs-site.mjs","test:mcpb":"if [ -f scripts/test-dxt-package.sh ]; then bash scripts/test-dxt-package.sh; else echo 'MCPB test script not found, skipping'; fi","build:mcpb":"bash scripts/build-dxt-clean.sh","check:root":"node scripts/check-root-clutter.js","docs:build":"npm run docs:sync && vitepress build docs-site && node scripts/fix-docs-site-build.mjs","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --watch","verify:dxt":"npm run verify:mcpb","postinstall":"npm run build:if-dev","release:dry":"npm run check:root && release-it --dry-run","verify:mcpb":"npm run test:mcpb","build:if-dev":"node scripts/build-if-dev.cjs","copy-schemas":"node scripts/copy-schemas.cjs","docs:preview":"vitepress preview docs-site","test:e2e:cli":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/cli-integration.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:package":"node scripts/test-package-locally.cjs","benchmark:mcp":"cross-env NODE_ENV=test node --import tsx tests/manual/benchmark-mcp-gateway.ts","test:coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --detectOpenHandles --forceExit","test:critical":"cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/mcp-server-protocol.test.ts tests/mcp-timeout-scenarios.test.ts --verbose --detectOpenHandles --forceExit --runInBand","test:features":"bash scripts/test-features.sh","build:dxt:prod":"npm run build:mcpb:prod","prepublishOnly":"npm run build && npm run test:pre-publish && npm run check:root && node scripts/sync-server-version.cjs","test:extension":"npm run build && node tests/integration/extension-mode-client.test.cjs","test:http-auth":"node scripts/test-http-auth.js","verify-clients":"npm run build && node scripts/verify-client-configs.js","build:mcpb:prod":"npm run build:mcpb && npx @anthropic-ai/mcpb sign _internal/artifacts/ncp.mcpb --cert cert.pem --key key.pem && npm run verify:mcpb:signature && npm run test:mcpb","extract-schemas":"tsx scripts/extract-schemas.ts","test:extensions":"npm test -- --runInBand tests/mcp-apps-gateway.test.ts tests/mcp-skills-gateway.test.ts tests/mcp-task-gateway.test.ts tests/mcp-task-store.test.ts tests/mcp-task-transport.test.ts tests/mcp-server-extensions.test.ts tests/orchestrator/mcp-response-cache.test.ts","build:dxt:signed":"npm run build:mcpb:signed","test:conformance":"node tests/conformance/run.mjs","test:integration":"npm run build && node tests/integration/mcp-client-simulation.test.cjs","test:pre-publish":"npm run test:critical && npm run test:compatibility && npm run test:extensions && npm run test:conformance && npm run test:integration && npm run test:integration:dxt","build:dxt:patched":"npm run build:mcpb:patched","build:mcpb:signed":"npm run build:mcpb:patched && npx @anthropic-ai/mcpb sign _internal/artifacts/ncp.mcpb --self-signed && npm run verify:mcpb:signature && npm run test:mcpb","build:mcpb:patched":"npm run build:mcpb && ./scripts/patch-dxt-zip.sh","test:compatibility":"npm test -- --runInBand tests/mcp-modern-protocol.test.ts tests/mcp-stateless-client-context.test.ts tests/input-required-coordinator.test.ts tests/mcp-oauth-provider.test.ts tests/mcp-result-fidelity.test.ts tests/registry-client.test.ts tests/orchestrator/downstream-elicitation.test.ts tests/integration/oauth-integration.test.ts tests/orchestrator/tool-discovery.test.ts tests/cache-patcher.test.ts","test:client-registry":"node scripts/test-client-registry.js","test:integration:dxt":"npm run build && node tests/integration/mcp-dxt-entry-point.test.cjs","test:integration:mcpb":"npm run test:integration:dxt","verify:mcpb:signature":"node scripts/check-mcpb-signature.js _internal/artifacts/ncp.mcpb","test:e2e:internal-mcps":"npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/e2e/internal-mcps-e2e.test.ts --verbose --detectOpenHandles --forceExit","test:registry-security":"node scripts/test-registry-security.js","test:integration:intelligence":"npm run build && node tests/integration/test-intelligence-basic.cjs"},"version":"3.0.0","_npmUser":{"name":"luracast","email":"arul@luracast.com"},"homepage":"https://portel-dev.github.io/ncp/","keywords":["mcp","model-context-protocol","mcp-router","mcp-server","mcp-tool-discovery","claude-desktop","cursor","vscode","code-mode","scheduler","skills","photon-runtime","ai-orchestration","tool-discovery"],"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"_npmVersion":"11.19.0","description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","directories":{},"maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"_nodeVersion":"24.21.0","dependencies":{"tsx":"^4.20.6","uuid":"^11.0.5","yaml":"^2.8.1","chalk":"^5.3.0","marked":"^15.0.12","adm-zip":"^0.5.16","js-yaml":"^4.1.1","pdf-lib":"^1.17.1","prompts":"^2.4.2","chokidar":"^5.0.0","inquirer":"^12.9.6","cli-graph":"^3.2.2","commander":"^14.0.1","env-paths":"^3.0.0","asciichart":"^1.5.25","clipboardy":"^4.0.0","prettyjson":"^1.2.5","isolated-vm":"^6.0.2","cli-highlight":"^2.1.11","human-signals":"^8.0.1","@types/prompts":"^2.4.9","json-colorizer":"^3.0.1","marked-terminal":"^7.3.0","@napi-rs/keyring":"^1.2.0","@anthropic-ai/sdk":"^0.67.0","@portel/photon-core":"^2.9.4","@xenova/transformers":"^2.17.2","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0","@modelcontextprotocol/ext-tasks":"0.2.2","@modelcontextprotocol/server-legacy":"^2.0.0"},"_hasShrinkwrap":false,"files:comments":"Explicit list of files to include in the package","devDependencies":{"jest":"^30.1.3","ts-jest":"^29.4.2","cross-env":"^10.1.0","mcp-evals":"^2.0.1","vitepress":"^1.6.4","mcp-server":"^0.0.9","release-it":"^19.0.4","rss-parser":"^3.13.0","typescript":"^5.9.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@currents/mcp":"^2.0.0","csv-stringify":"^6.6.0","@types/adm-zip":"^0.5.7","@types/express":"^5.0.3","@types/js-yaml":"^4.0.9","mcp-hello-world":"^1.1.2","@types/prettyjson":"^0.0.33","@anthropic-ai/mcpb":"^2.1.2","@heroku/mcp-server":"^1.0.7","@hubspot/mcp-server":"^0.4.0","@upstash/context7-mcp":"^1.0.17","mcp-server-kubernetes":"^3.3.0","@types/marked-terminal":"^6.1.1","@apify/actors-mcp-server":"^0.4.15","@amap/amap-maps-mcp-server":"^0.0.8","@notionhq/notion-mcp-server":"^1.9.0","@winor30/mcp-server-datadog":"^1.6.0","@benborla29/mcp-server-mysql":"^2.0.5","@supabase/mcp-server-supabase":"^0.5.5","@agent-infra/mcp-server-browser":"^1.1.10","@modelcontextprotocol/conformance":"0.1.16","@release-it/conventional-changelog":"^10.0.1","@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-sequential-thinking":"^2025.7.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ncp_3.0.0_1792413691830_0.35221360296456017"}}},"time":{"created":"2025-09-16T20:16:42.841Z","modified":"2026-10-19T12:41:32.564Z","0.1.0":"2025-09-15T09:49:21.947Z","1.0.0":"2025-09-16T19:55:23.402Z","1.0.1":"2025-09-16T20:04:36.505Z","1.0.2":"2025-09-16T20:16:43.216Z","1.0.3":"2025-09-17T06:16:14.187Z","1.0.4":"2025-09-23T18:36:10.637Z","1.1.0":"2025-09-25T10:15:19.585Z","1.2.0":"2025-09-25T10:55:04.236Z","1.2.1":"2025-09-25T11:18:06.231Z","1.3.0":"2025-09-26T09:59:01.757Z","1.3.1":"2025-09-27T07:54:20.880Z","1.3.2":"2025-09-27T08:05:32.543Z","1.4.1":"2025-10-03T05:44:52.107Z","1.4.2":"2025-10-03T05:47:14.770Z","1.4.3":"2025-10-03T06:22:39.835Z","1.5.0":"2025-10-11T18:28:50.056Z","1.5.1":"2025-10-12T12:48:15.263Z","1.5.2":"2025-10-12T16:05:13.274Z","1.5.3":"2025-10-14T08:13:00.239Z","1.6.0":"2025-10-23T03:49:43.229Z","1.8.0":"2025-12-14T15:09:58.301Z","2.0.0":"2025-12-27T14:25:44.448Z","2.0.1":"2025-12-27T14:56:58.107Z","2.0.2":"2025-12-29T17:07:23.955Z","2.3.0":"2026-03-06T15:11:20.213Z","2.3.1":"2026-06-12T01:39:04.095Z","3.0.0":"2026-10-19T12:41:31.931Z"},"bugs":{"url":"https://github.com/portel-dev/ncp/issues"},"author":{"name":"Portel"},"license":"Elastic-2.0","homepage":"https://portel-dev.github.io/ncp/","keywords":["mcp","model-context-protocol","mcp-router","mcp-server","mcp-tool-discovery","claude-desktop","cursor","vscode","code-mode","scheduler","skills","photon-runtime","ai-orchestration","tool-discovery"],"repository":{"url":"git+https://github.com/portel-dev/ncp.git","type":"git"},"description":"Natural Context Provider (NCP) - 1 MCP to rule them all. Your MCPs, supercharged. Find any tool instantly, load on demand, run on schedule, ready for any client. Smart loading saves tokens and energy.","maintainers":[{"name":"luracast","email":"arul@luracast.com"}],"readme":"[![npm version](https://img.shields.io/npm/v/%40portel%2Fncp.svg)](https://www.npmjs.com/package/@portel/ncp)\n[![npm downloads](https://img.shields.io/npm/dt/@portel/ncp?label=downloads)](https://www.npmjs.com/package/@portel/ncp)\n[![GitHub release downloads](https://img.shields.io/github/downloads/portel-dev/ncp/total?label=.dxt%20downloads)](https://github.com/portel-dev/ncp/releases)\n[![Latest release](https://img.shields.io/github/downloads/portel-dev/ncp/latest/total?label=latest%20.dxt)](https://github.com/portel-dev/ncp/releases/latest)\n[![License: Elastic-2.0](https://img.shields.io/badge/License-Elastic--2.0-blue.svg)](https://www.elastic.co/licensing/elastic-license)\n[![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-blue.svg)](https://modelcontextprotocol.io/)\n\n<!-- mcp-name: io.github.portel-dev/ncp -->\n\n<div align=\"center\">\n\n<img src=\"./assets/ncp.svg\" alt=\"NCP Logo\" width=\"200\" height=\"200\">\n\n# NCP - Natural Context Provider\n\n> **1 MCP to rule them all**\n\n</div>\n\nYour MCPs, [supercharged](#-supercharged-features). Discover tools, execute with code mode, run on schedule, find skills, and load Photons through common MCP clients. On-demand discovery keeps the initial tool surface focused.\n\n**Related Portel project:** [Photon](https://photon.portel.dev/) turns TypeScript methods into reliable agent-facing capabilities: MCP tools, embedded app UIs, CLI commands, web routes, schedules, webhooks, retries, and Beam interfaces. NCP helps agents discover and operate tools; Photon helps developers build the tools and apps agents can trust.\n\n## 💍 **What is NCP?**\n\nInstead of your AI juggling 50+ tools scattered across different MCPs, NCP gives it a single, unified interface with **code mode execution, scheduling, skills discovery, and custom Photons**.\n\nMost hosts see NCP's small gateway surface (`find`, `run`, and, when enabled, `code`). Hosts that support MCP Apps can also receive selected app callback tools so embedded interfaces keep working. NCP adds app tools selectively; it omits conflicting app groups rather than renaming callbacks that an app may call by name.\n\n- **`find`** - Search for any tool, skill, or Photon: \"I need to read a file\" → finds the right tool automatically\n- **`code`** - Execute TypeScript directly: `await github.create_issue({...})` (code mode, enabled by default)\n- **`run`** - Execute tools individually (when code mode is disabled)\n\nBehind the scenes, NCP manages all 50+ tools + skills + Photons: routing requests, discovering the right capability, executing code, scheduling tasks, managing health, and caching responses.\n\nThe host determines which optional features it can use. NCP advertises MCP Apps, Skills, and Tasks capabilities, while clients that do not support an extension continue with the core tools and existing request flows.\n\n![NCP Transformation Flow](docs/images/ncp-transformation-flow.png)\n\n**Why this matters:**\n- Your AI stops analyzing \"which tool do I use?\" and starts doing actual work\n- **Code mode** lets AI write multi-step TypeScript workflows combining tools, skills, and scheduling\n- **Skills** provide domain expertise: canvas design, PDF manipulation, document generation, more\n- **Photons** enable custom TypeScript MCPs without npm publishing\n- **On-demand discovery** keeps the initial tool surface focused; actual context use depends on the host, enabled NCP tools, and connected servers\n- **Your AI becomes focused.** Not desperate.\n\n🚀 **NEW:** Project-level configuration - each project can define its own MCPs automatically\n\n> **What's MCP?** The [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic lets AI assistants connect to external tools and data sources. Think of MCPs as \"plugins\" that give your AI superpowers like file access, web search, databases, and more.\n\n---\n\n## 📑 **Quick Navigation**\n\n- [The Problem](#-the-mcp-paradox-from-assistant-to-desperate) - Why too many tools break your AI\n- [The Solution](#-the-before--after-reality) - How NCP transforms your experience\n- [Getting Started](#-prerequisites) - Installation & quick start\n- [Try It Out](#-test-drive-see-the-difference-yourself) - See the CLI in action\n- [Supercharged Features](#-supercharged-features) - How NCP empowers your MCPs\n- [Setup by Client](#️-configuration-for-different-ai-clients) - Claude Desktop, Cursor, VS Code, etc.\n- [Popular MCPs](#-popular-mcps-that-work-great-with-ncp) - Community favorites to add\n- [Advanced Features](#-advanced-features) - Project config, scheduling, remote MCPs\n- [Troubleshooting](#-troubleshooting) - Common issues & solutions\n- [How It Works](#-deep-dive-how-it-works) - Technical deep dive\n- [Contributing](#-contributing) - Help us improve NCP\n\n---\n\n## 😤 **The MCP Paradox: From Assistant to Desperate**\n\nYou gave your AI assistant 50 tools to be more capable. Instead, you got desperation:\n\n- **Paralyzed by choice** (\"Should I use `read_file` or `get_file_content`?\")\n- **Exhausted before starting** (\"I've spent my context limit analyzing which tool to use\")\n- **Costs explode** (50+ tool schemas burn tokens before any real work happens)\n- **Asks instead of acts** (used to be decisive, now constantly asks for clarification)\n\n---\n\n## 🧸 **Why Too Many Tools Break the System**\n\nThink about it like this:\n\n**A child with one toy** → Treasures it, masters it, creates endless games with it\n**A child with 50 toys** → Can't hold them all, gets overwhelmed, stops playing entirely\n\n**Your AI is that child.** MCPs are the toys. More isn't always better.\n\nThe most creative people thrive with **constraints**, not infinite options. A poet given \"write about anything\" faces writer's block. Given \"write a haiku about rain\"? Instant inspiration.\n\n**Your AI is the same.** Give it one perfect tool → Instant action. Give it 50 tools → Cognitive overload. NCP provides just-in-time tool discovery so your AI gets exactly what it needs, when it needs it.\n\n---\n\n## 📊 **The Before & After Reality**\n\n### **Before NCP: Desperate Assistant** 😵‍💫\n\nWhen your AI assistant manages 50 tools directly:\n\n```\n🤖 AI Assistant Context:\n├── Filesystem MCP (12 tools)\n├── Database MCP (8 tools)\n├── Web Search MCP (6 tools)\n├── Email MCP (15 tools)\n├── Shell MCP (10 tools)\n├── GitHub MCP (20 tools)\n└── Slack MCP (9 tools)\n\n💀 Total: 80 tool schemas compete for attention before useful work begins\n```\n\n**What happens:**\n- AI burns 50%+ of context just understanding what tools exist\n- Spends 5-8 seconds analyzing which tool to use\n- Often picks wrong tool due to schema confusion\n- Hits context limits mid-conversation\n\n### **After NCP: Executive Assistant** ✨\n\nWith NCP as Chief of Staff:\n\n```\n🤖 AI Assistant Context:\n└── NCP gateway tools → discover and run the tools needed for this request\n\n🎯 Behind the scenes: NCP manages all 80 tools\n📈 Tool discovery happens on demand\n🎪 AI behavior: Confident, focused, decisive\n```\n\nNCP reduces the need to load every downstream tool schema into the host up front. The amount of context saved and any effect on response time vary with the host, server catalog, and enabled features.\n\n---\n\n## 📋 **Prerequisites**\n\n- **Node.js 22+** (Node.js 24 recommended; CI uses 24) ([Download here](https://nodejs.org/))\n- **npm** (included with Node.js) or **npx** for running packages\n- **Command line access** (Terminal on Mac/Linux, Command Prompt/PowerShell on Windows)\n\n## 🚀 **Installation**\n\nChoose your MCP client for setup instructions:\n\n| Client | Description | Setup Guide |\n|--------|-------------|-------------|\n| **Claude Desktop** | Anthropic's official desktop app. **Best for NCP** - one-click .dxt install with auto-sync | **[→ Full Guide](docs/clients/claude-desktop.md)** |\n| **Claude Code** | Terminal-first AI workflow. Works out of the box! | Built-in support |\n| **VS Code** | GitHub Copilot with Agent Mode. Use NCP for semantic tool discovery | **[→ Setup](docs/clients/vscode.md)** |\n| **Cursor** | AI-first code editor with Composer. Popular VS Code alternative | **[→ Setup](docs/clients/cursor.md)** |\n| **Windsurf** | Codeium's AI-native IDE with Cascade. Built on VS Code | **[→ Setup](docs/clients/windsurf.md)** |\n| **Cline** | VS Code extension for AI-assisted development with MCP support | **[→ Setup](docs/clients/cline.md)** |\n| **Continue** | VS Code AI assistant with Agent Mode and local LLM support | **[→ Setup](docs/clients/continue.md)** |\n| **Want more clients?** | See the full list of MCP-compatible clients and tools | [Official MCP Clients](https://github.com/modelcontextprotocol/servers#clients) • [Awesome MCP](https://github.com/punkpeye/awesome-mcp) |\n| **Other Clients** | Any MCP-compatible client via npm | [Quick Start ↓](#quick-start-npm) |\n\n---\n\n### Quick Start (npm)\n\nFor advanced users or MCP clients not listed above:\n\n**Step 1: Install NCP**\n```bash\nnpm install -g @portel/ncp\n```\n\n**Step 2: Import existing MCPs (optional)**\n```bash\nncp config import  # Paste your config JSON when prompted\n```\n\n**Step 3: Configure your MCP client**\n\nAdd to your client's MCP configuration:\n```json\n{\n  \"mcpServers\": {\n    \"ncp\": {\n      \"command\": \"ncp\"\n    }\n  }\n}\n```\n\n**✅ Done!** Your AI can discover and run tools through NCP. Hosts with MCP Apps support may also receive selected app callback tools.\n\n![NCP List Overview](docs/images/ncp-list.png)\n\n---\n\n## 🧪 **Test Drive: See the Difference Yourself**\n\nWant to experience what your AI experiences? NCP has a human-friendly CLI:\n\n### **🔍 Smart Discovery**\n```bash\n# Ask like your AI would ask:\nncp find \"I need to read a file\"\nncp find \"help me send an email\"\nncp find \"search for something online\"\n```\n\n![NCP Find Command](docs/images/ncp-find.png)\n\n**Notice:** NCP understands intent, not just keywords. Just like your AI needs.\n\n### **📋 Ecosystem Overview**\n```bash\n# See your complete MCP ecosystem:\nncp list --depth 2\n\n# Get help anytime:\nncp --help\n```\n\n![NCP Help Command](docs/images/ncp-help.png)\n\n### **⚡ Direct Testing**\n```bash\n# Test any tool safely:\nncp run filesystem read_file --path \"/tmp/test.txt\"\n```\n\n**Why this matters:** You can debug and test tools directly, just like your AI would use them.\n\n### **✅ Verify Everything Works**\n\n```bash\n# 1. Check NCP is installed correctly\nncp --version\n\n# 2. Confirm your MCPs are imported\nncp list\n\n# 3. Test tool discovery\nncp find \"file\"\n\n# 4. Test a simple tool (if you have filesystem MCP)\nncp run filesystem read_file --path \"/tmp/test.txt\" --dry-run\n```\n\n**✅ Success indicators:**\n- NCP shows version number\n- `ncp list` shows your imported MCPs\n- `ncp find` returns relevant tools\n- Your AI client shows NCP's gateway tools; an Apps-capable host may also show selected app callback tools\n\n---\n\n## 💪 **From Tools to Automation: The Real Power**\n\nYou've seen `find` (discover tools) and `code` (execute TypeScript). Individually, they're useful. **Together with scheduling, they become an automation powerhouse.**\n\n### A Real Example: The MCP Conference Scraper\n\nWe wanted to stay on top of MCP-related conferences and workshops for an upcoming release. Instead of manually checking websites daily, we asked Claude:\n\n> \"Set up a daily scraper that finds MCP conferences and saves them to a CSV file\"\n\n**What Claude did:**\n\n1. **Used `code` to write the automation:**\n   ```typescript\n   // Search the web for MCP conferences\n   const results = await web.search({\n     query: \"Model Context Protocol conference 2025\"\n   });\n\n   // Read each result and extract details\n   for (const url of results) {\n     const content = await web.read({ url });\n     // Extract title, deadline, description...\n     // Save to ~/.ncp/mcp-conferences.csv\n   }\n   ```\n\n2. **Used `schedule` to automate it:**\n   ```bash\n   ncp schedule create code:run \"every day at 9am\" \\\n     --name \"MCP Conference Scraper\" \\\n     --catchup-missed\n   ```\n\n**How to set this up yourself:**\n\nFirst, install the web photon (provides search and read capabilities):\n```bash\n# Install from the official photons repo\nncp photon add https://raw.githubusercontent.com/portel-dev/photons/main/web.photon.ts\n```\n\nThen ask Claude to create the scraper - it will use the web photon automatically.\n\n**What happens now:**\n- Every morning at 9am, the scraper runs automatically\n- Searches for new MCP events and adds them to the CSV\n- If our laptop was closed at 9am, it catches up when we open it\n- We wake up to fresh conference data - no manual work\n\n**The insight:** `find` and `code` let AI write automation. `schedule` makes it run forever. That's the powerhouse.\n\n---\n\n## 💡 **Why NCP Transforms Your AI Experience**\n\n### **🧠 From Desperation to Delegation**\n- **Desperate Assistant:** \"I see 50 tools... which should I use... let me think...\"\n- **Executive Assistant:** \"I need file access. Done.\" *(NCP handles the details)*\n\n### **💰 Focused Tool Discovery**\n- NCP lets the host search a larger tool catalog on demand\n- The context impact depends on your host and enabled tool surface\n\n### **🎯 Eliminates Choice Paralysis**\n- **Desperate:** AI freezes, picks wrong tool, asks for clarification\n- **Executive:** NCP's Chief of Staff finds the RIGHT tool instantly\n\n### **🚀 Confident Action**\n- **Before:** 8-second delays, hesitation, \"Which tool should I use?\"\n- **After:** Instant decisions, immediate execution, zero doubt\n\n**Bottom line:** Your AI goes from desperate assistant to **executive assistant**.\n\n---\n\n## ⚡ **Supercharged Features**\n\nHere's exactly how NCP empowers your MCPs:\n\n| Feature | What It Does | Why It Matters |\n|---------|-------------|----------------|\n| **🔍 Tool Discovery** | Search tools by intent as well as keywords | Find relevant tools without exposing every downstream schema at once |\n| **📦 On-Demand Loading** | Discover downstream tools when needed | Keeps the initial tool surface focused; context savings vary by setup |\n| **⏰ Automated Scheduling** | Run any tool on cron schedules or natural language times | Background automation without keeping AI sessions open |\n| **🔌 MCP Client Support** | Works with common MCP clients, including Claude Desktop, Claude Code, Cursor, and VS Code | Core gateway behavior is available broadly; extension support depends on the host |\n| **💾 Smart Caching** | Intelligent caching of tool schemas and responses | Eliminates redundant indexing - energy efficient and fast |\n\n**The result:** Your MCPs go from scattered tools to a **unified, intelligent system** that your AI can actually use effectively.\n\n---\n\n## 🛠️ **For Power Users: Manual Setup**\n\nPrefer to build from scratch? Add MCPs manually:\n\n```bash\n# Add the most popular MCPs:\n\n# AI reasoning and memory\nncp add sequential-thinking npx @modelcontextprotocol/server-sequential-thinking\nncp add memory npx @modelcontextprotocol/server-memory\n\n# File and development tools\nncp add filesystem npx @modelcontextprotocol/server-filesystem ~/Documents  # Path: directory to access\nncp add github npx @modelcontextprotocol/server-github                       # No path needed\n\n# Search and productivity\nncp add brave-search npx @modelcontextprotocol/server-brave-search           # No path needed\n```\n\n![NCP Add Command](docs/images/ncp-add.png)\n\n**💡 Pro tip:** Browse [Smithery.ai](https://smithery.ai) (2,200+ MCPs) or [mcp.so](https://mcp.so) to discover tools for your specific needs.\n\n---\n\n## 🎯 **Popular MCPs That Work Great with NCP**\n\n### **🔥 Most Downloaded**\n```bash\n# Community favorites (download counts from Smithery.ai):\nncp add sequential-thinking npx @modelcontextprotocol/server-sequential-thinking  # 5,550+ downloads\nncp add memory npx @modelcontextprotocol/server-memory                            # 4,200+ downloads\nncp add brave-search npx @modelcontextprotocol/server-brave-search                # 680+ downloads\n```\n\n### **🛠️ Development Essentials**\n```bash\n# Popular dev tools:\nncp add filesystem npx @modelcontextprotocol/server-filesystem ~/code\nncp add github npx @modelcontextprotocol/server-github\nncp add shell npx @modelcontextprotocol/server-shell\n```\n\n### **🌐 Productivity & Integrations**\n```bash\n# Enterprise favorites:\nncp add gmail npx @mcptools/gmail-mcp\nncp add slack npx @modelcontextprotocol/server-slack\nncp add google-drive npx @modelcontextprotocol/server-gdrive\nncp add postgres npx @modelcontextprotocol/server-postgres\nncp add puppeteer npx @hisma/server-puppeteer\n```\n\n\n## 🤖 **Internal MCPs**\n\nNCP includes powerful internal MCPs that extend functionality beyond external tool orchestration:\n\n### **Scheduler MCP** - Automate Any Tool\nSchedule any MCP tool to run automatically using cron or natural language schedules.\n\n```bash\n# Schedule a daily backup check\nncp run schedule:create --params '{\n  \"name\": \"Daily Backup\",\n  \"schedule\": \"every day at 2am\",\n  \"tool\": \"filesystem:list_directory\",\n  \"parameters\": {\"path\": \"/backups\"}\n}'\n```\n\n**Features:**\n- ✅ Natural language schedules (\"every day at 9am\", \"every monday\")\n- ✅ Standard cron expressions for advanced control\n- ✅ Automatic validation before scheduling\n- ✅ Execution history and monitoring\n- ✅ Works even when NCP is not running (system cron integration)\n\n**[→ Full Scheduler Guide](docs/SCHEDULER_USER_GUIDE.md)**\n\n### **MCP Management MCP** - Install MCPs from AI\nInstall and configure MCPs dynamically through natural language.\n\n```bash\n# AI can discover and install MCPs for you\nncp find \"install mcp\"\n# Shows: mcp:add, mcp:remove, mcp:list\n```\n\n**Features:**\n- ✅ Search and discover MCPs from registries\n- ✅ Install MCPs without manual configuration\n- ✅ Update and remove MCPs programmatically\n- ✅ AI can self-extend with new capabilities\n\n### **Skills Management MCP** - Extend Claude with Plugins\n\nManage Anthropic Agent Skills - modular extensions that add specialized knowledge and tools to Claude.\n\n```typescript\n// Discover skills using vector search\nconst results = await skills.find({ query: \"canvas design\" });\n\n// Install a skill\nawait skills.add({ skill_name: \"canvas-design\" });\n\n// List installed skills\nconst installed = await skills.list();\n\n// Read skill resources\nconst template = await skills.read_resource({\n  skill_name: \"canvas-design\",\n  file_path: \"resources/templates.md\"\n});\n```\n\n**Features:**\n- ✅ Vector-powered semantic search for skills\n- ✅ One-command install from official marketplace\n- ✅ Progressive disclosure (metadata → full content → resources)\n- ✅ Official Anthropic marketplace integration\n- ✅ Custom marketplace support\n- ✅ Auto-loading of installed skills\n\n**[→ Full Skills Guide](./SKILLS.md)**\n\n### **Analytics MCP** - Visualize Usage & Performance\nView usage statistics, token savings, and performance metrics directly in your chat.\n\n```bash\n# View usage overview with ASCII charts\nncp run analytics:overview --params '{\"period\": 7}'\n```\n\n**Features:**\n- ✅ Usage trends and most used tools\n- ✅ Token savings analysis (Code-Mode efficiency)\n- ✅ Performance metrics (response times, error rates)\n- ✅ ASCII-formatted charts for AI consumption\n\n**Configuration:**\nInternal MCPs are disabled by default. Enable in your profile settings:\n\n```json\n{\n  \"settings\": {\n    \"enable_schedule_mcp\": true,\n    \"enable_mcp_management\": true,\n    \"enable_skills\": true,\n    \"enable_analytics_mcp\": true\n  }\n}\n```\n\n---\n\n## 🔧 **Advanced Features**\n\n### **Smart Health Monitoring**\nNCP automatically detects broken MCPs and routes around them:\n\n```bash\nncp list --depth 1    # See health status\nncp config validate   # Check configuration health\n```\n\n**🎯 Result:** Your AI never gets stuck on broken tools.\n\n### **Multi-Profile Organization**\nOrganize MCPs by project or environment:\n\n```bash\n# Development setup\nncp add --profile dev filesystem npx @modelcontextprotocol/server-filesystem ~/dev\n\n# Production setup\nncp add --profile prod database npx production-db-server\n\n# Use specific profile\nncp --profile dev find \"file tools\"\n```\n\n### **🚀 Project-Level Configuration**\n**New:** Configure MCPs per project with automatic detection - perfect for teams and Cloud IDEs:\n\n```bash\n# In any project directory, create local MCP configuration:\nmkdir .ncp\nncp add filesystem npx @modelcontextprotocol/server-filesystem ./\nncp add github npx @modelcontextprotocol/server-github\n\n# NCP automatically detects and uses project-local configuration\nncp find \"save file\"  # Uses only project MCPs\n```\n\n**How it works:**\n- 📁 **Local `.ncp` directory exists** → Uses project configuration\n- 🏠 **No local `.ncp` directory** → Falls back to global `~/.ncp`\n- 🎯 **Zero profile management needed** → Everything goes to default `all.json`\n\n**Perfect for:**\n- 🤖 **Claude Code projects** (project-specific MCP tooling)\n- 👥 **Team consistency** (ship `.ncp` folder with your repo)\n- 🔧 **Project-specific tooling** (each project defines its own MCPs)\n- 📦 **Environment isolation** (no global MCP conflicts)\n\n```bash\n# Example project structures:\nfrontend-app/\n  .ncp/profiles/all.json   # → playwright, lighthouse, browser-context\n  src/\n\napi-backend/\n  .ncp/profiles/all.json   # → postgres, redis, docker, kubernetes\n  server/\n```\n\n### **Remote MCP Transports and Hibernation Support**\n\nNCP supports both **stdio** (local) and **HTTP/SSE** (remote) MCP servers:\n\n**Stdio Transport** (Traditional):\n```bash\n# Local MCP servers running as processes\nncp add filesystem npx @modelcontextprotocol/server-filesystem ~/Documents\n```\n\n**Streamable HTTP** (Remote):\n```json\n{\n  \"mcpServers\": {\n    \"remote-mcp\": {\n      \"url\": \"https://mcp.example.com/api\",\n      \"transport\": \"streamableHttp\",\n      \"auth\": {\n        \"type\": \"bearer\",\n        \"token\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\nFor a legacy HTTP/SSE endpoint, set `\"transport\": \"sse\"`. If an older profile has a URL and no `transport`, NCP continues to use its legacy SSE behavior. New registry imports select Streamable HTTP by default. Protocol-version negotiation is separate from transport selection and does not discover another endpoint automatically.\n\n**OAuth 2.1 with PKCE** (MCP 2025-03-26 spec):\n```json\n{\n  \"mcpServers\": {\n    \"oauth-mcp\": {\n      \"url\": \"https://mcp.example.com/api\",\n      \"auth\": {\n        \"type\": \"oauth\",\n        \"oauth21\": {\n          \"scopes\": [\"read\", \"write\"],\n          \"callbackPort\": 9876,\n          \"clientId\": \"optional-pre-registered-client-id\",\n          \"clientSecret\": \"optional-client-secret\"\n        }\n      }\n    }\n  }\n}\n```\n\n**OAuth 2.1 Features:**\n- ✅ **PKCE (Proof Key for Code Exchange)** - Required by OAuth 2.1 for security\n- ✅ **Dynamic Client Registration (RFC 7591)** - Auto-registers if no clientId provided\n- ✅ **Token Storage & Auto-Refresh** - Tokens saved to `~/.ncp/auth/` and refreshed automatically\n- ✅ **Browser Authorization Flow** - Opens browser for user consent\n- ✅ **Headless Fallback** - Manual code entry for servers/CI environments\n- ✅ **Protected Resource Discovery (RFC 9728)** - Auto-discovers OAuth endpoints\n\n**First-time setup flow:**\n1. NCP opens browser to authorization URL\n2. You grant permissions\n3. Browser redirects to local callback (`http://localhost:9876`)\n4. NCP exchanges code for access token (with PKCE)\n5. Token saved and refreshed automatically for future requests\n\n**🔋 Hibernation-Enabled Servers:**\n\nNCP automatically supports hibernation-enabled MCP servers (like Cloudflare Durable Objects or Metorial):\n- **Zero configuration needed** - Hibernation works transparently\n- **Automatic wake-up** - Server wakes on demand when NCP makes requests\n- **State preservation** - Server state is maintained across hibernation cycles\n- **Cost savings** - Only pay when MCPs are actively processing requests\n\n**How it works:**\n1. Server hibernates when idle (consumes zero resources)\n2. NCP sends a request → Server wakes instantly\n3. Server processes request and responds\n4. Server returns to hibernation after idle timeout\n\n**Perfect for:**\n- 💰 **Cost optimization** - Only pay for active processing time\n- 🌐 **Cloud-hosted MCPs** - Metorial, Cloudflare Workers, serverless platforms\n- ♻️ **Resource efficiency** - No idle server costs\n- 🚀 **Scale to zero** - Servers automatically sleep when not needed\n\n> **Note:** Hibernation is a server-side feature. NCP's remote MCP client works with both traditional and hibernation-enabled servers without special configuration.\n\n### **Modern MCP extensions and result handling**\n\nNCP preserves downstream tool descriptors and native MCP results through discovery and `run`, including structured content, error state, metadata, and text, image, audio, resource, and resource-link blocks. If an integration previously parsed JSON text that encoded an array of result blocks, update it to consume the native MCP result fields.\n\nWhen a host advertises MCP Apps support, NCP selectively exposes downstream app launch tools and app callbacks, and serves their `ui://` resources. The host controls whether app-only callbacks are available to the model. Tool-name and UI-resource collisions cause the affected app groups to be omitted; their ordinary tools remain available through `find` and `run`.\n\nThe Skills extension exposes local and compatible remote skill manifests on demand, including SHA-256 digests for the manifest bytes. The Tasks extension gives compatible modern hosts durable handles for `run` and `code`, with `tasks/get`, `tasks/update`, and `tasks/cancel`. After a restart, unfinished work is reported as interrupted rather than replayed; cancellation is reported only when NCP can confirm the worker stopped. Hosts without Tasks support keep the existing synchronous or multi-round request flow.\n\nResponse caches are bounded, and private cached entries are partitioned by server configuration and credential identity. Server cache lifetimes and tool-list change notifications guide refreshes. For transport, SDK, registry, extension, and compatibility details, see the [MCP compatibility notes](docs/development/mcp-compatibility.md).\n\n### **Photon Runtime (CLI vs DXT)**\n\nThe TypeScript Photon runtime is enabled by default, but the toggle lives in different places depending on how you run NCP:\n\n- **CLI / npm installs:** Edit `~/.ncp/settings.json` (or run `ncp config`) and set `enablePhotonRuntime: true` or `false`. You can also override ad‑hoc with `NCP_ENABLE_PHOTON_RUNTIME=true ncp find \"photon\"`.\n- **DXT / client bundles (Claude Desktop, Cursor, etc.):** These builds **ignore** `~/.ncp/settings.json`. Configure photons by setting the env var inside the client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"ncp\": {\n      \"command\": \"ncp\",\n      \"env\": {\n        \"NCP_ENABLE_PHOTON_RUNTIME\": \"true\"\n      }\n    }\n  }\n}\n```\n\nIf you disable the photon runtime, internal MCPs continue to work, but `.photon.ts` files are ignored until you re-enable the flag.\n\n### **Import from Anywhere**\n```bash\n# From clipboard (any JSON config)\nncp config import\n\n# From specific file\nncp config import \"~/my-mcp-config.json\"\n\n# From Claude Desktop (auto-detected paths)\nncp config import\n```\n\n---\n\n## 🛟 **Troubleshooting**\n\n### **Import Issues**\n```bash\n# Check what was imported\nncp list\n\n# Validate health of imported MCPs\nncp config validate\n\n# See detailed import logs\nDEBUG=ncp:* ncp config import\n```\n\n### **AI Not Using Tools**\n- **Check connection:** `ncp list` (should show your MCPs)\n- **Test discovery:** `ncp find \"your query\"`\n- **Validate config:** Ensure your AI client points to `ncp` command\n\n### **Performance Issues**\n```bash\n# Check MCP health (unhealthy MCPs slow everything down)\nncp list --depth 1\n\n# Clear cache if needed\nrm -rf ~/.ncp/cache\n\n# Monitor with debug logs\nDEBUG=ncp:* ncp find \"test\"\n```\n\n---\n\n## 🌓 **Why We Built This**\n\n**Like Yin and Yang, everything relies on the balance of things.**\n\n**Compute** gives us precision and certainty.\n**AI** gives us creativity and probability.\n\nWe believe breakthrough products emerge when you combine these forces in the right ratio.\n\n**How NCP embodies this balance:**\n\n| What NCP Does | AI (Creativity) | Compute (Precision) | The Balance |\n|---------------|-----------------|---------------------|-------------|\n| **Tool Discovery** | Understands \"read a file\" semantically | Routes to exact tool deterministically | Natural request → Precise execution |\n| **Orchestration** | Flexible to your intent | Reliable tool execution | Natural flow → Certain outcomes |\n| **Health Monitoring** | Adapts to patterns | Monitors connections, auto-failover | Smart adaptation → Reliable uptime |\n\nNeither pure AI (too unpredictable) nor pure compute (too rigid).\n\nYour AI stays creative. NCP handles the precision.\n\n---\n\n## 📚 **Deep Dive: How It Works**\n\nA [reproducible gateway benchmark](docs/benchmarks/mcp-gateway.md) measures serialized payload sizes, local latency, workflow completion, and result fidelity. Run `npm run benchmark:mcp`; its byte-based token proxy is labeled separately from actual tokenizer measurements.\n\nWant the technical details? Token analysis, architecture diagrams, and performance benchmarks:\n\n📖 **[Read the Technical Guide →](HOW-IT-WORKS.md)**\n\nLearn about:\n- Vector similarity search algorithms\n- N-to-1 orchestration architecture\n- Real-world token usage comparisons\n- Health monitoring and failover systems\n\n---\n\n## 🤝 **Contributing**\n\nHelp make NCP even better:\n\n- 🐛 **Bug reports:** [GitHub Issues](https://github.com/portel-dev/ncp/issues)\n- 💡 **Feature requests:** [GitHub Discussions](https://github.com/portel-dev/ncp/discussions)\n- 🔄 **Pull requests:** [Contributing Guide](CONTRIBUTING.md)\n\n---\n\n## 📄 **License**\n\nElastic License 2.0 - [Full License](LICENSE)\n\n**TLDR:** Free for all use including commercial. Cannot be offered as a hosted service to third parties.\n","readmeFilename":"README.md"}