{"_id":"@agiflowai/powertool","_rev":"7-1ed86618e6a765e6cdc5532455082ea5","name":"@agiflowai/powertool","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@agiflowai/powertool","version":"0.1.0","keywords":["mcp","model-context-protocol","typescript"],"license":"SEE LICENSE IN LICENSE.md","_id":"@agiflowai/powertool@0.1.0","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"powertool":"dist/cli.cjs"},"dist":{"shasum":"e47b372dda2539f1e88021b2f93b189bdd128cfc","tarball":"https://registry.npmjs.org/@agiflowai/powertool/-/powertool-0.1.0.tgz","fileCount":17,"integrity":"sha512-KiAqd9/hEJaKUwHa7PntjX5PefMVmSEGaAsLHw3EWqfc6WJONGqs/OtVTOvQU0ta9mnocCs8DhAVuZ68Is8mLQ==","signatures":[{"sig":"MEYCIQDlOOoCFnLjV5qQ/rAu9LzH8xBImIFH2a8xPepPKiCshwIhAKApf+Lf0fzhp6xY5MsK8lsntgnAO8EBs9kIuDewEaxD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":519650},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-powertool-0.1.0.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/35/_klvbykx3s99bpfh7lcqwrgw0000gn/T/d7bb95719fececded2eec63c06b59ea6/agiflowai-powertool-0.1.0.tgz","_integrity":"sha512-KiAqd9/hEJaKUwHa7PntjX5PefMVmSEGaAsLHw3EWqfc6WJONGqs/OtVTOvQU0ta9mnocCs8DhAVuZ68Is8mLQ==","_npmVersion":"11.4.2","description":"AgiFlow MCP toolkit server with tools and utilities","directories":{},"_nodeVersion":"24.4.1","dependencies":{"zod":"^4.1.12","chalk":"5.6.2","express":"^4.21.2","liquidjs":"10.21.1","commander":"14.0.1","@inquirer/prompts":"^7.9.0","@modelcontextprotocol/sdk":"1.20.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","unplugin-raw":"^0.6.3","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/powertool_0.1.0_1761806810668_0.41407096545585564","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agiflowai/powertool","version":"0.1.1","keywords":["mcp","model-context-protocol","typescript"],"license":"SEE LICENSE IN LICENSE.md","_id":"@agiflowai/powertool@0.1.1","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"powertool":"dist/cli.cjs"},"dist":{"shasum":"41f40ab0bae772a385948e25127bf0af55a57408","tarball":"https://registry.npmjs.org/@agiflowai/powertool/-/powertool-0.1.1.tgz","fileCount":17,"integrity":"sha512-k52ExfzhPntfpir5HnVdzjPZSk3LGNuuTbvdPNUToEl7v/depiYcAW1iFYBXkLLVrdi566Phx9eZBvC1wa4dDg==","signatures":[{"sig":"MEUCIAmrhtgiNHUc6qNx4kBJLulcNJ7cYJC9uJJAGMxzs3yiAiEA9Th2y63znrh/8xyXvNSDxyRT9zeyHPZC3epl2DzJkOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":523701},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-powertool-0.1.1.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/d645573aa2f5342da2919489bced55f9/agiflowai-powertool-0.1.1.tgz","_integrity":"sha512-k52ExfzhPntfpir5HnVdzjPZSk3LGNuuTbvdPNUToEl7v/depiYcAW1iFYBXkLLVrdi566Phx9eZBvC1wa4dDg==","_npmVersion":"11.4.2","description":"AgiFlow MCP toolkit server with tools and utilities","directories":{},"_nodeVersion":"24.4.1","dependencies":{"zod":"^4.1.12","chalk":"5.6.2","express":"^4.21.2","liquidjs":"10.21.1","commander":"14.0.1","@inquirer/prompts":"^7.9.0","@modelcontextprotocol/sdk":"1.20.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","unplugin-raw":"^0.6.3","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/powertool_0.1.1_1761887593547_0.7145434569080271","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agiflowai/powertool","version":"0.1.2","keywords":["mcp","model-context-protocol","typescript"],"license":"SEE LICENSE IN LICENSE.md","_id":"@agiflowai/powertool@0.1.2","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"powertool":"dist/cli.cjs"},"dist":{"shasum":"3be5b8259d7c2050c08e3f22727b1eb2f269bb68","tarball":"https://registry.npmjs.org/@agiflowai/powertool/-/powertool-0.1.2.tgz","fileCount":17,"integrity":"sha512-5OewkfI8oofyWJ0EklxgrmDVx90vgH+l+aO9VHlyvP5KELPAvofmwDDf1vQdMtZujT/8rm4vZoLhOhdu9po+Pg==","signatures":[{"sig":"MEUCIH9yXxosZmcUsPJ7/YoiPhnNpHklvgCH+H6poj0wlLWqAiEAxG898hYUc4HAKa9tHMklw7z3Ym8Ck68X0rU5WROwyDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358955},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-powertool-0.1.2.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/2ecb4463422667670265afbdf42ef777/agiflowai-powertool-0.1.2.tgz","_integrity":"sha512-5OewkfI8oofyWJ0EklxgrmDVx90vgH+l+aO9VHlyvP5KELPAvofmwDDf1vQdMtZujT/8rm4vZoLhOhdu9po+Pg==","_npmVersion":"11.4.2","description":"AgiFlow MCP toolkit server with tools and utilities","directories":{},"_nodeVersion":"24.4.1","dependencies":{"zod":"^4.1.12","chalk":"5.6.2","express":"^4.21.2","liquidjs":"10.21.1","commander":"14.0.1","@inquirer/prompts":"^7.9.0","@modelcontextprotocol/sdk":"1.20.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","unplugin-raw":"^0.6.3","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/powertool_0.1.2_1763094372255_0.9932370301378057","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agiflowai/powertool","version":"0.1.3","keywords":["mcp","model-context-protocol","typescript"],"license":"SEE LICENSE IN LICENSE.md","_id":"@agiflowai/powertool@0.1.3","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"powertool":"dist/cli.cjs"},"dist":{"shasum":"9e4095d573751ddaaac692021a8c4bf71bc37bf2","tarball":"https://registry.npmjs.org/@agiflowai/powertool/-/powertool-0.1.3.tgz","fileCount":17,"integrity":"sha512-3g7a7CT0Hxrm9hYQZxwddZBOfFS4qUPz6KsHzZ7UAeOCeJ+df/VlDhgQ+VN846s4JiAOfRFUj8jMte1a3QOWAg==","signatures":[{"sig":"MEUCIELuc3KM0nmXDE43I0/uebJ6B+DK9mwumdjZ4nae+77GAiEAymicpqtOuUUUImI3mYI2FwdzC7gJHPbGlNTKj83qbbo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379908},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-powertool-0.1.3.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/3cba098645c5cffc0d6388a8030fd605/agiflowai-powertool-0.1.3.tgz","_integrity":"sha512-3g7a7CT0Hxrm9hYQZxwddZBOfFS4qUPz6KsHzZ7UAeOCeJ+df/VlDhgQ+VN846s4JiAOfRFUj8jMte1a3QOWAg==","_npmVersion":"11.4.2","description":"AgiFlow MCP toolkit server with tools and utilities","directories":{},"_nodeVersion":"24.4.1","dependencies":{"zod":"^4.1.12","chalk":"5.6.2","express":"^4.21.2","liquidjs":"10.21.1","commander":"14.0.1","@inquirer/prompts":"^7.9.0","@modelcontextprotocol/sdk":"1.20.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","unplugin-raw":"^0.6.3","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/powertool_0.1.3_1763097380206_0.9756785966634849","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@agiflowai/powertool","version":"0.1.4","keywords":["mcp","model-context-protocol","typescript"],"license":"SEE LICENSE IN LICENSE.md","_id":"@agiflowai/powertool@0.1.4","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"powertool":"dist/cli.cjs"},"dist":{"shasum":"d1baa0471d3764fe36b9b423b8bf9b407dd58e25","tarball":"https://registry.npmjs.org/@agiflowai/powertool/-/powertool-0.1.4.tgz","fileCount":17,"integrity":"sha512-xLvWbaZseJEXAcf0zpBEkNA3GAl1790CfknM5hV22toiVBjNeURovB8SOq5i67fQ3PK4TldfhhSBn4sjKsiDgw==","signatures":[{"sig":"MEQCIFTgTmPcWuBHKyn3WsHgdf7RJwCkcgA/SfUO2+Shvf0ZAiBudvhAy1ZGnAC/oZHqtvklTQVDKdV07qOFhQ8QLSGsGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":504529},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-powertool-0.1.4.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/6ec547018c655d8e71ca8d33501f2fe4/agiflowai-powertool-0.1.4.tgz","_integrity":"sha512-xLvWbaZseJEXAcf0zpBEkNA3GAl1790CfknM5hV22toiVBjNeURovB8SOq5i67fQ3PK4TldfhhSBn4sjKsiDgw==","_npmVersion":"11.4.2","description":"AgiFlow MCP toolkit server with tools and utilities","directories":{},"_nodeVersion":"24.4.1","dependencies":{"zod":"^4.1.12","chalk":"5.6.2","express":"^4.21.2","liquidjs":"10.21.1","commander":"14.0.1","@inquirer/prompts":"^7.9.0","@modelcontextprotocol/sdk":"1.20.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","unplugin-raw":"^0.6.3","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/powertool_0.1.4_1763103494620_0.003062793094946503","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@agiflowai/powertool","version":"0.1.5","keywords":["mcp","model-context-protocol","typescript"],"license":"SEE LICENSE IN LICENSE.md","_id":"@agiflowai/powertool@0.1.5","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"powertool":"dist/cli.cjs"},"dist":{"shasum":"be83fc1b2011523fe3dbd47a50c44ca829201834","tarball":"https://registry.npmjs.org/@agiflowai/powertool/-/powertool-0.1.5.tgz","fileCount":17,"integrity":"sha512-9X5iYGl4Gwt/HPjpFSZF9gBzb3vDaSTljeqBCqkUCJvU/BBZfflSzuDDV+PB3CnfTMk7opOoDwDKIdw9WgmJFQ==","signatures":[{"sig":"MEUCIGw5Bp1uEWzmpJ5Fpd5coXDWlBq4urbzHIIBZBJw+1SuAiEAgdkmUvrVd5FlUo51qH5mfBOI/nvcNG0VmwxSW1UjJsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":507167},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-powertool-0.1.5.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/62939ad17bb71daa647e919cda1a19d3/agiflowai-powertool-0.1.5.tgz","_integrity":"sha512-9X5iYGl4Gwt/HPjpFSZF9gBzb3vDaSTljeqBCqkUCJvU/BBZfflSzuDDV+PB3CnfTMk7opOoDwDKIdw9WgmJFQ==","_npmVersion":"11.4.2","description":"AgiFlow MCP toolkit server with tools and utilities","directories":{},"_nodeVersion":"24.4.1","dependencies":{"zod":"^4.1.12","chalk":"5.6.2","express":"^4.21.2","liquidjs":"10.21.1","commander":"14.0.1","@inquirer/prompts":"^7.9.0","@modelcontextprotocol/sdk":"1.20.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","unplugin-raw":"^0.6.3","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/powertool_0.1.5_1763105390444_0.28047508019089173","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@agiflowai/powertool","description":"AgiFlow MCP toolkit server with tools and utilities","version":"0.1.6","license":"SEE LICENSE IN LICENSE.md","keywords":["mcp","model-context-protocol","typescript"],"bin":{"powertool":"dist/cli.cjs"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.js","dependencies":{"@inquirer/prompts":"^7.9.0","@modelcontextprotocol/sdk":"1.20.2","chalk":"5.6.2","commander":"14.0.1","liquidjs":"10.21.1","express":"^4.21.2","zod":"^4.1.12"},"devDependencies":{"@types/express":"^5.0.0","@types/node":"^22.0.0","tsdown":"^0.15.6","unplugin-raw":"^0.6.3","typescript":"5.9.3","vitest":"^2.1.8"},"type":"module","publishConfig":{"access":"public"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","build":"tsdown","test":"vitest --run","typecheck":"tsc --noEmit"},"_id":"@agiflowai/powertool@0.1.6","_integrity":"sha512-DN0/u5Z+1j9yOuRcZvbKJPD3Qjzgc5pNh1qUyJX74yFMIO63qRh6bFr6xR3ew7s+kzXnJyLVlIGgr32Z82STGw==","_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/bebeb81c2c8d3b5bb731a0003ca25770/agiflowai-powertool-0.1.6.tgz","_from":"file:agiflowai-powertool-0.1.6.tgz","_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-DN0/u5Z+1j9yOuRcZvbKJPD3Qjzgc5pNh1qUyJX74yFMIO63qRh6bFr6xR3ew7s+kzXnJyLVlIGgr32Z82STGw==","shasum":"03ff34fa810766e229d5c7e1d455896260691f65","tarball":"https://registry.npmjs.org/@agiflowai/powertool/-/powertool-0.1.6.tgz","fileCount":17,"unpackedSize":565475,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE0ScmHf909nPmNL3Le4fDT02MXjnNG1rxeM6+s0DjGEAiBnjegM4k+5GyxZuc4v1hLxdIvT8pIfmk3UeSdmpjuQng=="}]},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"directories":{},"maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/powertool_0.1.6_1763184281056_0.5113713052408235"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-30T06:46:50.544Z","modified":"2025-11-15T05:24:41.462Z","0.1.0":"2025-10-30T06:46:50.889Z","0.1.1":"2025-10-31T05:13:13.771Z","0.1.2":"2025-11-14T04:26:12.452Z","0.1.3":"2025-11-14T05:16:20.498Z","0.1.4":"2025-11-14T06:58:14.853Z","0.1.5":"2025-11-14T07:29:50.678Z","0.1.6":"2025-11-15T05:24:41.256Z"},"license":"SEE LICENSE IN LICENSE.md","keywords":["mcp","model-context-protocol","typescript"],"description":"AgiFlow MCP toolkit server with tools and utilities","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"readme":"# @agiflowai/powertool\n\nAgiFlow MCP Proxy Server - A powerful MCP toolkit that fetches configurations from Agiflow and proxies tools, resources, and prompts from multiple MCP servers.\n\n## Features\n\n### MCP Proxy Capabilities\n- **Remote Configuration**: Fetch MCP server configurations from Agiflow hosted at https://agiflow.io\n- **Local Configuration**: Use local JSON configuration files for MCP servers\n- **Configuration Merging**: Combine remote and local configs with flexible merge strategies\n- **Multi-Server Proxy**: Connect to and proxy multiple MCP servers (stdio, HTTP, SSE)\n- **Tool Aggregation**: Aggregate tools from all connected servers with automatic namespacing\n- **Resource Proxying**: Proxy resources from all connected servers\n- **Prompt Forwarding**: Forward prompt requests to the appropriate remote servers\n- **Connection Management**: Automatic connection pooling and lifecycle management\n- **Flexible Transports**: Support for stdio, HTTP, and SSE transports\n\n## Installation\n\n### For End Users (via npm)\n\n```bash\n# Install globally\nnpm install -g @agiflowai/powertool\n\n# Or use with npx (no installation needed)\nnpx @agiflowai/powertool mcp-serve\n```\n\n### For Development\n\n```bash\n# Clone and install dependencies\npnpm install\n\n# Build the package\npnpm build\n```\n\n## Quick Start\n\n### Getting Your Configuration from Agiflow\n\n1. **Sign up at [https://agiflow.io](https://agiflow.io)**\n2. **Create a new project** in the Agiflow dashboard\n3. **Follow the setup wizard** to generate your MCP configuration\n   - The wizard provides your project-specific endpoint URL and API key\n   - Agiflow hosts your MCP servers as HTTP endpoints\n\n### Add to Claude Code\n\nAdd to your `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"agiflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@agiflowai/powertool\", \"mcp-serve\"],\n      \"env\": {\n        \"AGIFLOW_MCP_PROXY_ENDPOINT\": \"https://agiflow.io/api/v1/projects/your-project-id/mcp/config\",\n        \"AGIFLOW_MCP_API_KEY\": \"your-generated-api-key\"\n      }\n    }\n  }\n}\n```\n\n## Configuration Format\n\nThe Agiflow endpoint returns JSON configuration in the following format:\n\n```json\n{\n  \"mcpServers\": {\n    \"server-name\": {\n      \"name\": \"server-name\",\n      \"transport\": \"stdio|http|sse\",\n      \"config\": {\n        // For stdio:\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@modelcontextprotocol/server-example\"],\n        \"env\": { \"KEY\": \"value\" }\n\n        // For HTTP/SSE:\n        \"url\": \"http://localhost:3000/mcp\",\n        \"headers\": { \"Authorization\": \"Bearer token\" }\n      }\n    }\n  }\n}\n```\n\n## Usage\n\n### CLI\n\nThe proxy server supports three ways to configure your MCP servers (in order of precedence):\n\n#### Method 1: Environment Variables (Recommended for CI/CD)\n\nGet your endpoint and API key from the Agiflow dashboard setup wizard:\n\n```bash\nexport AGIFLOW_MCP_PROXY_ENDPOINT=https://agiflow.io/api/v1/projects/your-project-id/mcp/config\nexport AGIFLOW_MCP_API_KEY=your-api-key-here\n@agiflowai/powertool mcp-serve\n```\n\n#### Method 2: Local Configuration File\n\n```bash\n# Using a local JSON config file\n@agiflowai/powertool mcp-serve --config-file ./mcp-config.json\n\n# With HTTP transport\n@agiflowai/powertool mcp-serve --config-file ./mcp-config.json --type http --port 3000\n```\n\n#### Method 4: Merged Configuration (Local + Remote)\n\nYou can combine both remote Agiflow configuration and local configuration files. This is useful when you want to:\n- Use Agiflow's hosted servers while adding your own local servers\n- Override specific server configurations from Agiflow\n- Test local servers alongside production remote servers\n\n```bash\n# Set remote config via environment variables and provide a local file\nexport AGIFLOW_MCP_PROXY_ENDPOINT=https://agiflow.io/api/v1/projects/your-project-id/mcp/config\nexport AGIFLOW_MCP_API_KEY=your-api-key-here\n@agiflowai/powertool mcp-serve --config-file ./local-mcp-config.json\n\n# Control merge behavior with --merge-strategy\n@agiflowai/powertool mcp-serve \\\n  --config-file ./local-mcp-config.json \\\n  --merge-strategy local-priority  # local overrides remote (default)\n\n# Or prioritize remote config\n@agiflowai/powertool mcp-serve \\\n  --config-file ./local-mcp-config.json \\\n  --merge-strategy remote-priority  # remote overrides local\n\n# Deep merge both configs\n@agiflowai/powertool mcp-serve \\\n  --config-file ./local-mcp-config.json \\\n  --merge-strategy merge-deep  # merge configs deeply\n```\n\n**Merge Strategies Explained:**\n\n1. **`local-priority` (default)**: Local servers completely replace remote servers with the same name\n   ```\n   Remote: { \"server-a\": {...remote...}, \"server-b\": {...} }\n   Local:  { \"server-a\": {...local...}, \"server-c\": {...} }\n   Result: { \"server-a\": {...local...}, \"server-b\": {...}, \"server-c\": {...} }\n   ```\n\n2. **`remote-priority`**: Remote servers completely replace local servers with the same name\n   ```\n   Remote: { \"server-a\": {...remote...}, \"server-b\": {...} }\n   Local:  { \"server-a\": {...local...}, \"server-c\": {...} }\n   Result: { \"server-a\": {...remote...}, \"server-b\": {...}, \"server-c\": {...} }\n   ```\n\n3. **`merge-deep`**: Deep merge server configs, local properties override remote on conflict\n   ```\n   Remote: { \"server-a\": { transport: \"http\", config: { url: \"remote.com\", headers: { \"X-Remote\": \"1\" } } } }\n   Local:  { \"server-a\": { config: { url: \"localhost\", headers: { \"X-Local\": \"1\" } } } }\n   Result: { \"server-a\": { transport: \"http\", config: { url: \"localhost\", headers: { \"X-Remote\": \"1\", \"X-Local\": \"1\" } } } }\n   ```\n\n#### Method 3: Interactive Authentication (Easiest for Development)\n\nSimply run the command without any configuration:\n\n```bash\n@agiflowai/powertool mcp-serve\n```\n\nThe CLI will:\n1. Check for saved credentials in `$HOME/.agiflow/mcp.credentials.json`\n2. If not found, prompt you to authenticate:\n   - Visit [https://agiflow.io](https://agiflow.io) and sign up/login\n   - Create a project and follow the setup wizard\n   - Copy your endpoint URL and API key from the wizard\n   - Enter them in the CLI prompts\n3. Save credentials for future use (per project directory)\n\n### Command Options\n\n- `-t, --type <type>` - Transport type: `stdio`, `http`, or `sse` (default: `stdio`)\n- `-p, --port <port>` - Port to listen on for HTTP/SSE (default: `3000`)\n- `--host <host>` - Host to bind to for HTTP/SSE (default: `localhost`)\n- `-f, --config-file <path>` - Path to local MCP configuration JSON file\n- `--merge-strategy <strategy>` - Merge strategy when both remote and local configs are provided: `local-priority`, `remote-priority`, or `merge-deep` (default: `local-priority`)\n- `--use-server-prefix` - Prefix tools and resources with server name (e.g., `server/tool`)\n- `--progressive` - Enable progressive MCP tools (`get-tool` and `use-tool`) for tool discovery and execution\n\n### Configuration Merging\n\nWhen both remote (Agiflow) and local configuration sources are provided, powertool can merge them together. This enables powerful workflows like:\n\n- 🔧 **Development**: Use Agiflow production servers while testing local development servers\n- 🎯 **Override**: Override specific remote server configurations with local settings\n- 🔐 **Augment**: Add authentication headers or environment variables to remote servers\n- 🧪 **Testing**: Mix production and test servers in the same environment\n\n**Example: Combining Remote + Local Configs**\n\n```bash\n# Set up remote Agiflow configuration\nexport AGIFLOW_MCP_PROXY_ENDPOINT=https://agiflow.io/api/v1/projects/your-project-id/mcp/config\nexport AGIFLOW_MCP_API_KEY=your-api-key\n\n# Create local-config.json with additional servers\ncat > local-config.json << EOF\n{\n  \"mcpServers\": {\n    \"local-filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/tmp\"]\n    },\n    \"custom-server\": {\n      \"url\": \"http://localhost:8080/mcp\",\n      \"type\": \"http\"\n    }\n  }\n}\nEOF\n\n# Start with merged configuration\n@agiflowai/powertool mcp-serve --config-file ./local-config.json\n```\n\nThe result: **All remote Agiflow servers + local-filesystem + custom-server**\n\n### Configuration Priority\n\nConfiguration sources are resolved in this order:\n\n1. **Environment variables** (`AGIFLOW_MCP_PROXY_ENDPOINT` + `AGIFLOW_MCP_API_KEY`) - Remote config\n2. **Config file** (via `--config-file` option) - Local config\n3. **Saved credentials** (`$HOME/.agiflow/mcp.credentials.json` - per project) - Remote config\n4. **Interactive prompt** (if none of the above are available) - Remote config\n\n**When both remote and local sources exist, they are merged according to `--merge-strategy`**\n\n### Usage with Claude Code\n\nAdd to your Claude Code configuration:\n\n**Option 1: Using environment variables (from Agiflow setup wizard)**\n```json\n{\n  \"mcpServers\": {\n    \"agiflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@agiflowai/powertool\", \"mcp-serve\"],\n      \"env\": {\n        \"AGIFLOW_MCP_PROXY_ENDPOINT\": \"https://agiflow.io/api/v1/projects/your-project-id/mcp/config\",\n        \"AGIFLOW_MCP_API_KEY\": \"your-generated-api-key\"\n      }\n    }\n  }\n}\n```\n\n**Option 2: Using saved credentials (recommended for development)**\n```json\n{\n  \"mcpServers\": {\n    \"agiflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@agiflowai/powertool\", \"mcp-serve\"]\n    }\n  }\n}\n```\n_Note: Run `npx @agiflowai/powertool mcp-serve` once in your project directory to authenticate and save credentials._\n\n**Option 3: Using a local config file (for testing)**\n```json\n{\n  \"mcpServers\": {\n    \"agiflow\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@agiflowai/powertool\",\n        \"mcp-serve\",\n        \"--config-file\",\n        \"/path/to/mcp-config.json\"\n      ]\n    }\n  }\n}\n```\n\n## Development\n\n```bash\n# Run in development mode\npnpm dev\n\n# Build\npnpm build\n\n# Run tests\npnpm test\n\n# Type check\npnpm typecheck\n\n# Lint and format\npnpm lint\npnpm lint:fix\n```\n\n## Progressive MCP Usage\n\nWhen `--progressive` is enabled, powertool provides two meta-tools for progressive discovery of MCP tools:\n\n### `get-tool` - Discover Tool Information\n\nQuery detailed information about any MCP tool before using it:\n- Tool description and documentation\n- Complete input schema with parameter types\n- Required vs optional parameters\n- Which server provides the tool\n\n### `use-tool` - Execute MCP Tools\n\nExecute any MCP tool from connected servers:\n- Automatically finds the correct server for a tool\n- Supports disambiguation when multiple servers provide the same tool\n- Forwards tool arguments to the underlying MCP server\n\n**Recommended Flow:**\n1. Call `get-tool` with `toolName` to see the tool's schema\n2. Call `use-tool` with `toolName` and `toolArgs` based on the discovered schema\n3. If multiple servers provide the same tool, specify `serverName` to disambiguate\n\n## How It Works\n\n### MCP Proxy Flow\n\n1. **Configuration Fetch**: On startup, fetches MCP server configurations from Agiflow\n2. **Server Connection**: Connects to all configured MCP servers based on their transport type\n3. **Request Proxying**: Proxies incoming requests to the appropriate remote server\n4. **Namespacing**: Prefixes tool/prompt names and resource URIs with server names to avoid conflicts\n5. **Aggregation**: Combines results from all servers into a single response\n\n### Tool Naming\n\nTools are automatically namespaced: `serverName/toolName`\n\nExample: If a server named `filesystem` has a tool `read_file`, it becomes `filesystem/read_file`\n\n### Resource URIs\n\nResources are prefixed with server name: `serverName://resourceUri`\n\nExample: `filesystem://file:///path/to/file.txt`\n\n### Prompts\n\nPrompts are namespaced: `serverName/promptName`\n\nExample: `code-review/review-pr`\n\n## Architecture\n\n### Core Services\n\n- **ConfigFetcherService**: Fetches and caches remote MCP configurations from Agiflow\n- **McpClientManagerService**: Manages connections to remote MCP servers\n- **CredentialsManagerService**: Manages OAuth flow and credential persistence\n- **LockfileService**: Manages project-specific configuration locks\n\n### Server Components\n\n- **Proxy Server**: Aggregates and forwards requests to remote servers\n- **Transport Handlers**: Support for stdio, HTTP, and SSE transports\n- **OAuth Callback Server**: Handles OAuth authentication flow\n\n### Tools\n\n- **ReloadConfigTool**: Dynamically reload MCP configuration without restart\n\n## Project Structure\n\n```\npackages/powertool/\n├── src/\n│   ├── cli.ts                    # CLI entry point\n│   ├── index.ts                  # Public API exports\n│   ├── commands/                 # CLI commands\n│   │   ├── mcp-serve.ts         # MCP server command\n│   │   └── reload-config.ts     # Config reload command\n│   ├── services/                 # Core services\n│   │   ├── ConfigFetcherService.ts\n│   │   ├── McpClientManagerService.ts\n│   │   ├── CredentialsManagerService.ts\n│   │   ├── LockfileService.ts\n│   │   ├── McpOAuthClientProvider.ts\n│   │   └── OAuthCallbackServer.ts\n│   ├── instructions/             # Reference documentation\n│   │   └── agents/\n│   │       └── agiflow-agents.md # MCP tools reference\n│   ├── tools/                    # MCP tools\n│   │   └── ReloadConfigTool.ts\n│   ├── transports/               # Transport handlers\n│   │   ├── stdio.ts\n│   │   ├── http.ts\n│   │   └── sse.ts\n│   └── server/                   # Proxy server implementation\n└── tests/                        # Test files\n```\n\n## Related Projects\n\n- **[Agiflow Marketplace](../../agiflow-marketplace/)**: Claude Code plugin marketplace with slash commands\n- **[Agiflow Platform](https://agiflow.io)**: Hosted MCP servers and project management\n- **[Agiflow Backend](https://github.com/agiflow/agiflow)**: MCP server implementation\n\n## Support\n\n- **Documentation**: [https://docs.agiflow.io](https://docs.agiflow.io)\n- **Issues**: [GitHub Issues](https://github.com/agiflow/platform-tools-internal/issues)\n- **Agiflow Platform**: [https://agiflow.io](https://agiflow.io)\n\n## License\n\nSustainable Use License - See [LICENSE.md](../../LICENSE.md) for details\n\nThis project is licensed under a modified [Sustainable Use License](https://docs.n8n.io/sustainable-use-license/):\n\n- ✅ **Free for small businesses** - Companies with fewer than 20 employees\n- ✅ **Free for personal use** - Individuals and non-profit organizations\n- ✅ **Free for evaluation** - Testing the software for potential commercial use\n- 💼 **Commercial license required** - Companies with 20+ employees\n\nFor commercial licensing inquiries, please contact: [https://agiflow.io](https://agiflow.io)","readmeFilename":"README.md"}