{"_id":"@ai-capabilities-suite/mcp-process","_rev":"9-0751044139481052164c8820692f721c","name":"@ai-capabilities-suite/mcp-process","dist-tags":{"latest":"1.5.10"},"versions":{"0.1.0":{"name":"@ai-capabilities-suite/mcp-process","version":"0.1.0","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@0.1.0","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/digital-defiance/ai-capabilities-suite/tree/main/packages/mcp-process#readme","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"52a010e14f20dacf0adfc0e01022267dd540d816","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-0.1.0.tgz","fileCount":86,"integrity":"sha512-46M4LMhhWAyU2o6laOnNc0XXQQAgl2jzEBdqfa73wD+HHIzfVx9wiO8BEcencdkSbtaEi3NVNwu1q67TXKQ5AA==","signatures":[{"sig":"MEYCIQC0dybiZscSN22dWmfjd5rSx6l6GkoAn/4vSEcnno9nvQIhALBqQVjYaIgmXukfEjxyd2iOK/0IG0/4FfDDZVYnMWbY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377382},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/digital-defiance/ai-capabilities-suite.git","type":"git","directory":"packages/mcp-process"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_0.1.0_1764882626635_0.3709698057447175","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai-capabilities-suite/mcp-process","version":"0.1.1","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@0.1.1","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/digital-defiance/ai-capabilities-suite/tree/main/packages/mcp-process#readme","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"29d2b386f774331ae6b2db86ed9a8fdb46e3d893","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-0.1.1.tgz","fileCount":86,"integrity":"sha512-7BQkzKGOrp1xHDMLfMEX5s9dMmlE1ymNq6EnCGFO+D7exaj8Vx8On1H2dZgmqOXA0RFFt1BNgYpn1m1VU2TQGA==","signatures":[{"sig":"MEQCIHTGG7dB9A3KqFpOdscaBNagmZM3dTOhYv+n23JbxXhvAiA1kYxwIj5tbiROxfCH1s/J6UY9E9cMtZV0ZONfjtexqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377511},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"mcpName":"io.github.Digital-Defiance/mcp-process","scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/digital-defiance/ai-capabilities-suite.git","type":"git","directory":"packages/mcp-process"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_0.1.1_1764959557950_0.9428729019803117","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ai-capabilities-suite/mcp-process","version":"0.1.2","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@0.1.2","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/digital-defiance/ai-capabilities-suite/tree/main/packages/mcp-process#readme","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"dfb604206692bcc0261d39bfacd04ca72e16d8b8","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-0.1.2.tgz","fileCount":86,"integrity":"sha512-+sQ+i66/FANYgkKkMpYQB1zVrTb1duNk5ajybd8EArqC8jXw6LzAMUOZOP2nmfVdHXUV/CTN47gw5qbBukMfLg==","signatures":[{"sig":"MEUCIQCI4aYf1DFsDhshle1n9zpB4+HrCsCcab4gJmtNB1dWfwIgUlYI7F9uGygqiy6VtyrNOuiJ0zWPBLIjV7Zpkd3d4zU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377536},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"mcpName":"io.github.Digital-Defiance/mcp-process","scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/digital-defiance/ai-capabilities-suite.git","type":"git","directory":"packages/mcp-process"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_0.1.2_1764969932522_0.277056808511321","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ai-capabilities-suite/mcp-process","version":"0.1.3","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@0.1.3","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/digital-defiance/ai-capabilities-suite/tree/main/packages/mcp-process#readme","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"5778aaf31a9c21cdd39ba7985025c85ce8a21028","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-0.1.3.tgz","fileCount":86,"integrity":"sha512-siS6InmJt/dLdzIbwuUjB6aRy397zPfW88Mb7wkqqTtajmO85TDEsjROM+k0xtXjVYo1VsGjxKcHWY0ygZP2yQ==","signatures":[{"sig":"MEYCIQCGkbIRn2mym6WELxla74WrXLu5WVTWuX/GZFAohALm4gIhALSjYUW2Hk0ryNnyQTF+598XJZwnyf2MDZlUnzvCfFSe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377055},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"mcpName":"io.github.Digital-Defiance/mcp-process","scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/digital-defiance/ai-capabilities-suite.git","type":"git","directory":"packages/mcp-process"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_0.1.3_1765244354897_0.1727650105197145","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ai-capabilities-suite/mcp-process","version":"0.1.4","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@0.1.4","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/Digital-Defiance/mcp-process","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"e0afae769ef7a38b5ad6ae822e3ebad2825a7825","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-0.1.4.tgz","fileCount":86,"integrity":"sha512-HIRi10LWe1iYkh4ziUCe8w/ywD7FPC3P/AwVVXByu/1z1wQQKZP2flnK4nvpVJ8UQTeEoJPDooEYF4AGt0X8GA==","signatures":[{"sig":"MEUCIQDrb9mFOfKFWm2TbvKCbBnOJCV3+6oU/UwgWtJSTWwATAIgD1RTCg1TV+RmLtLYr8zZxbqIKExhE+AMfiCXl9W2Adc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376931},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"mcpName":"io.github.Digital-Defiance/mcp-process","scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/Digital-Defiance/mcp-process.git","type":"git"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_0.1.4_1765268991405_0.4383053036817528","host":"s3://npm-registry-packages-npm-production"}},"1.5.7":{"name":"@ai-capabilities-suite/mcp-process","version":"1.5.7","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@1.5.7","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/Digital-Defiance/mcp-process","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"2f32010384b3c18b76b66b65390bcaa5cd58fd2c","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-1.5.7.tgz","fileCount":86,"integrity":"sha512-tJhcOUjTUNUXn22iGjFD04lgG3HELdXi4XO2IKWdx2e/INjgtu/YcHXKe0R7L+RZ5gJF4F2reFqqzdWl57B/CA==","signatures":[{"sig":"MEUCIQCJRAe5i+YBx88Qq5TmJT+TC6fmXOpqu8E7uTX9ZM0bngIgLSopIZ88alztEAdOg+9dZrdTtSkLz/ZeDVc5mqBIODY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377503},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"mcpName":"io.github.Digital-Defiance/mcp-process","scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/Digital-Defiance/mcp-process.git","type":"git"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_1.5.7_1765313276337_0.4661821976680012","host":"s3://npm-registry-packages-npm-production"}},"1.5.8":{"name":"@ai-capabilities-suite/mcp-process","version":"1.5.8","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@1.5.8","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/Digital-Defiance/mcp-process","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"b26c61eb30f1fc543933ecf5164921f256235acf","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-1.5.8.tgz","fileCount":86,"integrity":"sha512-eYNYWe/qCPpt8A6PEnCBcsz8lAlwrA81ITegOeNmy8AGr0VKxM9DSWIZ45+55qnHKsS3GRPz1gWAmz7sdIMLuA==","signatures":[{"sig":"MEUCIBJjfs6QKSSVQLuTNTZMMxL8VMsjNrFxf1X4EpCs32/bAiEAupMpxCT6uSIKMOlBXBznFmhlcr3YJnBomnDRtmWvCDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377646},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"mcpName":"io.github.Digital-Defiance/mcp-process","scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/Digital-Defiance/mcp-process.git","type":"git"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_1.5.8_1765563892734_0.5159736404538626","host":"s3://npm-registry-packages-npm-production"}},"1.5.9":{"name":"@ai-capabilities-suite/mcp-process","version":"1.5.9","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"url":"https://digitaldefiance.org","name":"Digital Defiance","email":"info@digitaldefiance.org"},"license":"MIT","_id":"@ai-capabilities-suite/mcp-process@1.5.9","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"homepage":"https://github.com/Digital-Defiance/mcp-process","bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"bin":{"mcp-process":"dist/cli.js"},"dist":{"shasum":"8e2eb7da2a2f102727ff08d8a7f4d758268ff375","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-1.5.9.tgz","fileCount":86,"integrity":"sha512-jTKaEIQmpDsePEcm+dVeSQKJdcPSI5Kb21OpCJx4Wm2/eRK9yzxzkGzGlou9ULfcgBrCDl+03QCuNDWthlWEKA==","signatures":[{"sig":"MEQCIAwoVjRmZRnnRGLIbKC+miP05xGCEEyVzStT+xt8UDaSAiBbmkE3kMz2x0cZLU3mBC1gUS2tXIKDm58CI79+g3VRjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376992},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@ts-mcp/source":"./src/index.ts"},"./package.json":"./package.json"},"mcpName":"io.github.Digital-Defiance/mcp-process","scripts":{"lint":"eslint src","test":"jest --maxWorkers=1 --forceExit","build":"tsc -p tsconfig.lib.json","clean":"rm -rf dist","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","docker:run":"docker-compose up -d","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","docker:logs":"docker-compose logs -f","docker:stop":"docker-compose down","docker:test":"bash scripts/docker-test.sh","docker:build":"docker build -t mcp-process:local .","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit"},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"repository":{"url":"git+https://github.com/Digital-Defiance/mcp-process.git","type":"git"},"_npmVersion":"11.6.3","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","uuid":"^8.3.2","which":"^4.0.0","pidusage":"^3.0.2","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.23.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","@swc/core":"^1.15.3","@swc/jest":"^0.2.39","fast-check":"^4.3.0","typescript":"^5.3.3","@types/node":"^20.10.6","@types/uuid":"^10.0.0","@swc/helpers":"^0.5.17","@types/which":"^3.0.4","@types/pidusage":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-process_1.5.9_1765564515465_0.47435761606564175","host":"s3://npm-registry-packages-npm-production"}},"1.5.10":{"name":"@ai-capabilities-suite/mcp-process","version":"1.5.10","mcpName":"io.github.Digital-Defiance/mcp-process","packageManager":"yarn@4.12.0","description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","bin":{"mcp-process":"dist/cli.js"},"exports":{"./package.json":"./package.json",".":{"@ts-mcp/source":"./src/index.ts","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.lib.json","test":"jest --maxWorkers=1 --forceExit","test:e2e":"jest --testPathPattern=e2e.spec.ts --maxWorkers=1 --forceExit","test:e2e:minimal":"jest --testPathPattern=minimal.e2e.spec.ts --maxWorkers=1 --forceExit","test:coverage":"jest --coverage --maxWorkers=1 --forceExit","test:watch":"jest --watch","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","lint":"eslint src","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build && npm test","publish:public":"npm publish --access public","docker:build":"docker build -t mcp-process:local .","docker:test":"bash scripts/docker-test.sh","docker:run":"docker-compose up -d","docker:stop":"docker-compose down","docker:logs":"docker-compose logs -f"},"keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"author":{"name":"Digital Defiance","email":"info@digitaldefiance.org","url":"https://digitaldefiance.org"},"license":"MIT","homepage":"https://github.com/Digital-Defiance/mcp-process","repository":{"type":"git","url":"git+https://github.com/Digital-Defiance/mcp-process.git"},"bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"engines":{"node":">=18.0.0","npm":">=8.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"type":"commonjs","dependencies":{"@modelcontextprotocol/sdk":"^1.23.0","minimatch":"^10.0.1","pidusage":"^3.0.2","uuid":"^8.3.2","which":"^4.0.0","zod":"^4.1.13"},"devDependencies":{"@swc/core":"^1.15.3","@swc/helpers":"^0.5.17","@swc/jest":"^0.2.39","@types/node":"^20.10.6","@types/pidusage":"^2.0.5","@types/uuid":"^10.0.0","@types/which":"^3.0.4","fast-check":"^4.3.0","jest":"^29.7.0","typescript":"^5.3.3"},"_id":"@ai-capabilities-suite/mcp-process@1.5.10","_nodeVersion":"22.21.1","_npmVersion":"11.6.3","dist":{"integrity":"sha512-QEOzIx64UJS+cE7BCmhvRk7cSO0rVz1lu85m3BbFcZSk4f3YhLxxxGCM2duLr4eodUqK0z+U1Fp+joAXJTGa4A==","shasum":"461042d46da593f15ad7ad852cd79bdb5c05b36e","tarball":"https://registry.npmjs.org/@ai-capabilities-suite/mcp-process/-/mcp-process-1.5.10.tgz","fileCount":86,"unpackedSize":377185,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+p+tLpN0wiLLD1E+h1CEk1EZ/rkITfXlUSUKjY+gGJgIhAIq9YhP6WNdro1YduWY9P5d4KLERiR8H40WU3rF39Ic9"}]},"_npmUser":{"name":"jessica-mulein","email":"jessica@mulein.com"},"directories":{},"maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-process_1.5.10_1766302622164_0.9900841323459055"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-04T21:10:26.553Z","modified":"2025-12-21T07:37:02.559Z","0.1.0":"2025-12-04T21:10:26.781Z","0.1.1":"2025-12-05T18:32:38.115Z","0.1.2":"2025-12-05T21:25:32.715Z","0.1.3":"2025-12-09T01:39:15.124Z","0.1.4":"2025-12-09T08:29:51.628Z","1.5.7":"2025-12-09T20:47:56.508Z","1.5.8":"2025-12-12T18:24:52.901Z","1.5.9":"2025-12-12T18:35:15.610Z","1.5.10":"2025-12-21T07:37:02.325Z"},"bugs":{"url":"https://github.com/digital-defiance/ai-capabilities-suite/issues","email":"info@digitaldefiance.org"},"author":{"name":"Digital Defiance","email":"info@digitaldefiance.org","url":"https://digitaldefiance.org"},"license":"MIT","homepage":"https://github.com/Digital-Defiance/mcp-process","keywords":["mcp","model-context-protocol","process-management","process-monitoring","resource-monitoring","security","ai-agent","nodejs","process-launcher","service-management","resource-limits","process-orchestration","allowlist","audit-logging","ai-capabilities"],"repository":{"type":"git","url":"git+https://github.com/Digital-Defiance/mcp-process.git"},"description":"MCP server for process management and monitoring with strict security boundaries. Launch processes, monitor resources, manage services, and orchestrate workflows - all within secure, configurable boundaries.","maintainers":[{"name":"jessica-mulein","email":"jessica@mulein.com"}],"readme":"# MCP ACS Process Server\n\nA Model Context Protocol (MCP) server that provides process management and monitoring capabilities for AI agents, with strict security boundaries enforced by executable allowlists and resource limits.\n\n## 🔗 Repository\n\nThis package is now maintained in its own repository: **[https://github.com/Digital-Defiance/mcp-process](https://github.com/Digital-Defiance/mcp-process)**\n\nThis repository is part of the [AI Capabilities Suite](https://github.com/Digital-Defiance/ai-capabilities-suite) on GitHub.\n\n## Table of Contents\n\n- [Features](#features)\n- [Security](#security)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Configuration](#configuration)\n- [MCP Tools](#mcp-tools)\n- [Usage Examples](#usage-examples)\n- [Troubleshooting](#troubleshooting)\n- [Development](#development)\n- [License](#license)\n\n## Features\n\n- **Process Launching**: Spawn processes with specified arguments and environment variables\n- **Resource Monitoring**: Track CPU, memory, thread count, and I/O usage in real-time\n- **Output Capture**: Capture and retrieve stdout and stderr streams separately\n- **Process Termination**: Graceful (SIGTERM) and forced (SIGKILL) termination with timeout escalation\n- **Service Management**: Long-running services with auto-restart and health checks\n- **Process Groups**: Manage related processes and create pipelines\n- **Timeout Management**: Automatic process termination after specified duration\n- **I/O Management**: Send stdin input and retrieve buffered output\n- **Security**: Multi-layer security with executable allowlists, argument validation, and resource limits\n- **Audit Logging**: Complete operation tracking for security and compliance\n\n## Security\n\nThis server implements defense-in-depth security with 6 layers of validation:\n\n1. **Executable Allowlist**: Only pre-approved executables can be launched\n2. **Argument Validation**: Command arguments validated for injection attacks\n3. **Environment Sanitization**: Dangerous environment variables removed\n4. **Resource Limits**: CPU, memory, and time limits prevent resource exhaustion\n5. **Privilege Prevention**: No privilege escalation or setuid executables\n6. **Audit Logging**: Complete operation tracking\n\nSee [SECURITY.md](./SECURITY.md) for detailed security implementation.\n\n## Installation\n\n### Docker (Recommended)\n\n```bash\ndocker pull digitaldefiance/mcp-process:latest\n```\n\nSee [DOCKER.md](./DOCKER.md) for detailed Docker usage instructions.\n\n### NPM\n\n```bash\nnpm install @ai-capabilities-suite/mcp-process\n```\n\n### Yarn\n\n```bash\nyarn add @ai-capabilities-suite/mcp-process\n```\n\n### Global Installation\n\n```bash\nnpm install -g @ai-capabilities-suite/mcp-process\n```\n\n## Quick Start\n\n### Docker Quick Start\n\n```bash\n# Pull the image\ndocker pull digitaldefiance/mcp-process:latest\n\n# Create config directory\nmkdir -p config\n\n# Create configuration\ncat > config/mcp-process-config.json << EOF\n{\n  \"allowedExecutables\": [\"node\", \"python3\", \"npm\"],\n  \"maxConcurrentProcesses\": 5,\n  \"enableAuditLog\": true\n}\nEOF\n\n# Run with docker-compose\ndocker-compose up -d\n```\n\nSee [DOCKER.md](./DOCKER.md) for detailed Docker instructions.\n\n### NPM Quick Start\n\n#### 1. Create Configuration File\n\n```bash\nmcp-process --create-config ./mcp-process-config.json\n```\n\nThis creates a sample configuration file with secure defaults.\n\n### 2. Edit Configuration\n\nEdit `mcp-process-config.json` to add your allowed executables:\n\n```json\n{\n  \"allowedExecutables\": [\"node\", \"python3\", \"npm\", \"git\"],\n  \"defaultResourceLimits\": {\n    \"maxCpuPercent\": 80,\n    \"maxMemoryMB\": 1024,\n    \"maxCpuTime\": 300\n  },\n  \"maxConcurrentProcesses\": 10,\n  \"maxProcessLifetime\": 3600,\n  \"enableAuditLog\": true,\n  \"blockShellInterpreters\": true,\n  \"blockSetuidExecutables\": true,\n  \"allowProcessTermination\": true,\n  \"allowGroupTermination\": true,\n  \"allowForcedTermination\": false,\n  \"allowStdinInput\": true,\n  \"allowOutputCapture\": true,\n  \"requireConfirmation\": false\n}\n```\n\n### 3. Start the Server\n\n```bash\nmcp-process --config ./mcp-process-config.json\n```\n\nOr use environment variables:\n\n```bash\nexport MCP_PROCESS_CONFIG_PATH=./mcp-process-config.json\nmcp-process\n```\n\n### 4. Connect from Your AI Agent\n\nConfigure your AI agent (e.g., Kiro, Claude Desktop) to connect to the MCP server via stdio transport.\n\n## Configuration\n\n### Configuration File Locations\n\nThe server looks for configuration in the following order:\n\n1. `--config` command line argument\n2. `MCP_PROCESS_CONFIG_PATH` environment variable\n3. `MCP_PROCESS_CONFIG` environment variable (JSON string)\n4. `./mcp-process-config.json`\n5. `./config/mcp-process.json`\n\n### Configuration Options\n\nSee [SECURITY.md](./SECURITY.md) for detailed configuration options and security settings.\n\n### Minimal Configuration\n\n```json\n{\n  \"allowedExecutables\": [\"node\", \"python3\"],\n  \"defaultResourceLimits\": {\n    \"maxCpuPercent\": 80,\n    \"maxMemoryMB\": 1024\n  },\n  \"maxConcurrentProcesses\": 10,\n  \"maxProcessLifetime\": 3600,\n  \"enableAuditLog\": true,\n  \"blockShellInterpreters\": true,\n  \"blockSetuidExecutables\": true,\n  \"allowProcessTermination\": true,\n  \"allowGroupTermination\": true,\n  \"allowForcedTermination\": false,\n  \"allowStdinInput\": true,\n  \"allowOutputCapture\": true,\n  \"requireConfirmation\": false\n}\n```\n\n## MCP Tools\n\nThe server exposes 12 MCP tools for process management:\n\n### process_start\n\nLaunch a new process.\n\n**Parameters:**\n\n- `executable` (string, required): Path to executable\n- `args` (string[], optional): Command-line arguments\n- `cwd` (string, optional): Working directory\n- `env` (object, optional): Environment variables\n- `timeout` (number, optional): Timeout in milliseconds\n- `captureOutput` (boolean, optional): Whether to capture stdout/stderr\n- `resourceLimits` (object, optional): Resource limits\n\n**Returns:**\n\n- `pid` (number): Process ID\n- `startTime` (string): ISO timestamp of process start\n\n### process_terminate\n\nTerminate a process.\n\n**Parameters:**\n\n- `pid` (number, required): Process ID\n- `force` (boolean, optional): Use SIGKILL instead of SIGTERM\n- `timeout` (number, optional): Timeout for graceful termination (ms)\n\n**Returns:**\n\n- `exitCode` (number): Process exit code\n- `terminationReason` (string): \"graceful\" or \"forced\"\n\n### process_get_stats\n\nGet process resource usage statistics.\n\n**Parameters:**\n\n- `pid` (number, required): Process ID\n- `includeHistory` (boolean, optional): Include historical data\n\n**Returns:**\n\n- `cpuPercent` (number): CPU usage percentage\n- `memoryMB` (number): Memory usage in MB\n- `threadCount` (number): Number of threads\n- `ioRead` (number): Bytes read\n- `ioWrite` (number): Bytes written\n- `uptime` (number): Process uptime in seconds\n- `history` (array, optional): Historical statistics\n\n### process_send_stdin\n\nSend input to process stdin.\n\n**Parameters:**\n\n- `pid` (number, required): Process ID\n- `data` (string, required): Data to send\n- `encoding` (string, optional): Text encoding (default: \"utf-8\")\n\n**Returns:**\n\n- `bytesWritten` (number): Number of bytes written\n\n### process_get_output\n\nGet captured process output.\n\n**Parameters:**\n\n- `pid` (number, required): Process ID\n- `stream` (string, optional): \"stdout\", \"stderr\", or \"both\" (default: \"both\")\n- `encoding` (string, optional): Text encoding (default: \"utf-8\")\n\n**Returns:**\n\n- `stdout` (string): Captured stdout\n- `stderr` (string): Captured stderr\n- `stdoutBytes` (number): Stdout buffer size\n- `stderrBytes` (number): Stderr buffer size\n\n### process_list\n\nList all managed processes.\n\n**Returns:**\n\n- Array of process information objects with PID, command, state, and uptime\n\n### process_get_status\n\nGet detailed process status.\n\n**Parameters:**\n\n- `pid` (number, required): Process ID\n\n**Returns:**\n\n- `state` (string): \"running\", \"stopped\", or \"crashed\"\n- `uptime` (number): Process uptime in seconds\n- `stats` (object): Current resource usage statistics\n\n### process_create_group\n\nCreate a process group.\n\n**Parameters:**\n\n- `name` (string, required): Group name\n- `pipeline` (boolean, optional): Whether to create a pipeline\n\n**Returns:**\n\n- `groupId` (string): Group identifier\n\n### process_add_to_group\n\nAdd a process to a group.\n\n**Parameters:**\n\n- `groupId` (string, required): Group identifier\n- `pid` (number, required): Process ID\n\n### process_terminate_group\n\nTerminate all processes in a group.\n\n**Parameters:**\n\n- `groupId` (string, required): Group identifier\n\n### process_start_service\n\nStart a long-running service with auto-restart.\n\n**Parameters:**\n\n- `name` (string, required): Service name\n- `executable` (string, required): Path to executable\n- `args` (string[], optional): Command-line arguments\n- `cwd` (string, optional): Working directory\n- `env` (object, optional): Environment variables\n- `restartPolicy` (object, optional): Restart configuration\n- `healthCheck` (object, optional): Health check configuration\n\n**Returns:**\n\n- `serviceId` (string): Service identifier\n- `pid` (number): Initial process ID\n\n### process_stop_service\n\nStop a service and disable auto-restart.\n\n**Parameters:**\n\n- `serviceId` (string, required): Service identifier\n\n## Usage Examples\n\n### Example 1: Run a Simple Command\n\n```typescript\n// Launch a process\nconst result = await mcpClient.callTool(\"process_start\", {\n  executable: \"node\",\n  args: [\"--version\"],\n  captureOutput: true,\n});\n\nconsole.log(\"Process started:\", result.pid);\n\n// Wait a moment for it to complete\nawait new Promise((resolve) => setTimeout(resolve, 1000));\n\n// Get output\nconst output = await mcpClient.callTool(\"process_get_output\", {\n  pid: result.pid,\n});\n\nconsole.log(\"Output:\", output.stdout);\n```\n\n### Example 2: Monitor Resource Usage\n\n```typescript\n// Start a process\nconst result = await mcpClient.callTool(\"process_start\", {\n  executable: \"python3\",\n  args: [\"my_script.py\"],\n  resourceLimits: {\n    maxCpuPercent: 50,\n    maxMemoryMB: 512,\n  },\n});\n\n// Monitor resources\nconst stats = await mcpClient.callTool(\"process_get_stats\", {\n  pid: result.pid,\n  includeHistory: true,\n});\n\nconsole.log(\"CPU:\", stats.cpuPercent + \"%\");\nconsole.log(\"Memory:\", stats.memoryMB + \"MB\");\n```\n\n### Example 3: Interactive Process with Stdin\n\n```typescript\n// Start an interactive process\nconst result = await mcpClient.callTool(\"process_start\", {\n  executable: \"python3\",\n  args: [\"-i\"],\n  captureOutput: true,\n});\n\n// Send input\nawait mcpClient.callTool(\"process_send_stdin\", {\n  pid: result.pid,\n  data: 'print(\"Hello from AI agent\")\\n',\n});\n\n// Wait and get output\nawait new Promise((resolve) => setTimeout(resolve, 500));\nconst output = await mcpClient.callTool(\"process_get_output\", {\n  pid: result.pid,\n});\n\nconsole.log(\"Output:\", output.stdout);\n```\n\n### Example 4: Long-Running Service\n\n```typescript\n// Start a service with auto-restart\nconst service = await mcpClient.callTool(\"process_start_service\", {\n  name: \"my-api-server\",\n  executable: \"node\",\n  args: [\"server.js\"],\n  restartPolicy: {\n    enabled: true,\n    maxRetries: 3,\n    backoffMs: 5000,\n  },\n  healthCheck: {\n    command: \"curl http://localhost:3000/health\",\n    interval: 30000,\n    timeout: 5000,\n  },\n});\n\nconsole.log(\"Service started:\", service.serviceId);\n```\n\n### Example 5: Process Group Pipeline\n\n```typescript\n// Create a process group\nconst group = await mcpClient.callTool(\"process_create_group\", {\n  name: \"data-pipeline\",\n  pipeline: true,\n});\n\n// Start first process\nconst proc1 = await mcpClient.callTool(\"process_start\", {\n  executable: \"cat\",\n  args: [\"data.txt\"],\n  captureOutput: true,\n});\n\n// Add to group\nawait mcpClient.callTool(\"process_add_to_group\", {\n  groupId: group.groupId,\n  pid: proc1.pid,\n});\n\n// Start second process (will receive output from first)\nconst proc2 = await mcpClient.callTool(\"process_start\", {\n  executable: \"grep\",\n  args: [\"pattern\"],\n  captureOutput: true,\n});\n\nawait mcpClient.callTool(\"process_add_to_group\", {\n  groupId: group.groupId,\n  pid: proc2.pid,\n});\n```\n\n## Troubleshooting\n\n### Issue: \"Executable not in allowlist\"\n\n**Cause:** The executable you're trying to launch is not in the `allowedExecutables` configuration.\n\n**Solution:** Add the executable to your configuration file:\n\n```json\n{\n  \"allowedExecutables\": [\"node\", \"python3\", \"/path/to/your/executable\"]\n}\n```\n\nYou can use:\n\n- Absolute paths: `/usr/bin/node`\n- Basenames: `node`\n- Glob patterns: `/usr/bin/*`\n\n### Issue: \"Shell interpreters are blocked\"\n\n**Cause:** You're trying to launch a shell (bash, sh, cmd.exe, etc.) and `blockShellInterpreters` is enabled.\n\n**Solution:** Either:\n\n1. Set `blockShellInterpreters: false` in your configuration (not recommended)\n2. Launch the actual executable directly instead of through a shell\n\n### Issue: \"Process not found\"\n\n**Cause:** The process has already terminated or the PID is invalid.\n\n**Solution:** Check if the process is still running using `process_list` or `process_get_status`.\n\n### Issue: \"CPU limit exceeded\" or \"Memory limit exceeded\"\n\n**Cause:** The process exceeded configured resource limits.\n\n**Solution:** Increase resource limits in your configuration or when launching the process:\n\n```json\n{\n  \"defaultResourceLimits\": {\n    \"maxCpuPercent\": 90,\n    \"maxMemoryMB\": 2048\n  }\n}\n```\n\n### Issue: \"Maximum concurrent processes reached\"\n\n**Cause:** You've reached the `maxConcurrentProcesses` limit.\n\n**Solution:**\n\n1. Terminate some running processes\n2. Increase `maxConcurrentProcesses` in your configuration\n3. Wait for processes to complete\n\n### Issue: \"Process stdin not available\"\n\n**Cause:** The process stdin is closed or the process doesn't support stdin input.\n\n**Solution:** Ensure the process is still running and was started with stdin enabled.\n\n### Issue: Configuration file not found\n\n**Cause:** The server can't find your configuration file.\n\n**Solution:**\n\n1. Use `--config` flag: `mcp-process --config /path/to/config.json`\n2. Set environment variable: `export MCP_PROCESS_CONFIG_PATH=/path/to/config.json`\n3. Place config at `./mcp-process-config.json`\n\n### Debugging\n\nEnable debug logging by setting the audit log level:\n\n```json\n{\n  \"enableAuditLog\": true,\n  \"auditLogLevel\": \"debug\"\n}\n```\n\nCheck the audit log for detailed information about process operations and security violations.\n\n## Development\n\n### Prerequisites\n\n- Node.js >= 18.0.0\n- npm >= 8.0.0\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/digital-defiance/ai-capabilities-suite.git\ncd ai-capabilities-suite/packages/mcp-process\n\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n```\n\n### Testing\n\n```bash\n# Run all tests (unit, integration, and e2e)\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Run specific test file\nnpm test -- SecurityManager.spec.ts\n\n# Run only e2e tests\nnpm run test:e2e\n\n# Run minimal e2e smoke tests (quick validation)\nnpm run test:e2e:minimal\n```\n\n#### End-to-End (E2E) Testing\n\nThe MCP ACS Process Server includes comprehensive e2e tests that validate the complete system behavior by spawning the server as a child process and communicating via stdio using JSON-RPC protocol. These tests ensure the server works correctly in real-world usage scenarios.\n\n**E2E Test Structure:**\n\n- `server.e2e.spec.ts` - Comprehensive e2e tests covering all MCP tools and protocol features\n- `server.minimal.e2e.spec.ts` - Quick smoke tests for basic functionality validation (< 30 seconds)\n\n**Running E2E Tests:**\n\n```bash\n# Run comprehensive e2e tests\nnpm run test:e2e\n\n# Run minimal smoke tests for quick feedback\nnpm run test:e2e:minimal\n\n# Run e2e tests with specific pattern\nnpm test -- --testPathPattern=e2e.spec.ts\n\n# Run e2e tests with verbose output\nnpm test -- --testPathPattern=e2e.spec.ts --verbose\n```\n\n**What E2E Tests Validate:**\n\n- MCP protocol initialization and handshake\n- Tool discovery via tools/list\n- Process launch operations with security enforcement\n- Process monitoring and resource statistics\n- Process termination (graceful and forced)\n- Output capture (stdout/stderr)\n- Service management with auto-restart\n- Error handling and validation\n- Security policy enforcement\n- Resource limit enforcement\n- Timeout handling\n- JSON-RPC protocol compliance\n\n**E2E Test Requirements:**\n\n1. The server must be built before running e2e tests: `npm run build`\n2. Tests spawn the server from `dist/cli.js`\n3. Tests communicate via stdio using JSON-RPC 2.0 protocol\n4. All spawned processes are cleaned up after tests complete\n\n**Debugging E2E Test Failures:**\n\nIf e2e tests fail, follow these steps:\n\n1. **Ensure the server is built:**\n\n   ```bash\n   npm run build\n   ```\n\n2. **Check if the CLI exists:**\n\n   ```bash\n   ls -la dist/cli.js\n   ```\n\n3. **Run tests with verbose output:**\n\n   ```bash\n   npm test -- --testPathPattern=e2e.spec.ts --verbose\n   ```\n\n4. **Check for server startup errors:**\n\n   - E2E tests capture server stderr output\n   - Look for error messages in test output\n   - Common issues: missing dependencies, permission errors, port conflicts\n\n5. **Verify server can start manually:**\n\n   ```bash\n   node dist/cli.js --help\n   ```\n\n6. **Run minimal tests first:**\n\n   ```bash\n   npm run test:e2e:minimal\n   ```\n\n   If minimal tests pass but comprehensive tests fail, the issue is likely with specific functionality rather than basic server operation.\n\n7. **Check process cleanup:**\n\n   ```bash\n   # List any orphaned node processes\n   ps aux | grep node\n   ```\n\n8. **Enable debug logging:**\n   Set `DEBUG=*` environment variable to see detailed logs:\n\n   ```bash\n   DEBUG=* npm test -- --testPathPattern=e2e.spec.ts\n   ```\n\n**Common E2E Test Issues:**\n\n| Issue                         | Cause                          | Solution                              |\n| ----------------------------- | ------------------------------ | ------------------------------------- |\n| \"Server executable not found\" | Server not built or wrong path | Run `npm run build`                   |\n| \"Server failed to start\"      | Server crash on startup        | Check stderr output in test logs      |\n| \"Request timeout\"             | Server not responding          | Increase timeout or check server logs |\n| \"Process not cleaned up\"      | Test cleanup failure           | Run `npm test -- --forceExit`         |\n| \"Port already in use\"         | Previous test didn't clean up  | Kill orphaned processes               |\n| \"Permission denied\"           | Insufficient permissions       | Check file permissions on dist/cli.js |\n\n**CI Environment Considerations:**\n\nE2E tests are designed to run in CI environments with the following considerations:\n\n- **Headless operation**: No display server required\n- **Timeout adjustments**: CI environments get 50% longer timeouts\n- **Process cleanup**: All processes cleaned up even on test failure\n- **No interactive input**: Tests run fully automated\n- **Resource constraints**: Tests handle slower CI environments gracefully\n\n**CI Configuration Example:**\n\n```yaml\n# .github/workflows/test.yml\n- name: Build\n  run: npm run build\n\n- name: Run minimal e2e tests\n  run: npm run test:e2e:minimal\n\n- name: Run full test suite\n  run: npm test\n  env:\n    CI: true\n```\n\n**Property-Based Testing:**\n\nE2E tests include property-based tests using `fast-check` to validate universal properties:\n\n- JSON-RPC request/response ID matching\n- Concurrent request handling\n- Process launch with random allowed executables\n- Security rejection for blocked executables\n\nThese tests run multiple iterations with randomly generated inputs to ensure correctness across a wide range of scenarios.\n\n### Linting\n\n```bash\nnpm run lint\n```\n\n### Building\n\n```bash\n# Clean build directory\nnpm run clean\n\n# Build TypeScript\nnpm run build\n```\n\n### Publishing\n\n```bash\n# Publish to npm (requires authentication)\nnpm run publish:public\n```\n\n## Architecture\n\nThe MCP ACS Process Server consists of several core components:\n\n- **MCPServer**: Main server implementing MCP protocol\n- **SecurityManager**: Multi-layer security validation\n- **ProcessLauncher**: Process spawning and configuration\n- **ProcessManager**: Process lifecycle management\n- **ResourceMonitor**: CPU, memory, and I/O monitoring\n- **IOManager**: Stdin/stdout/stderr handling\n- **ProcessTerminator**: Graceful and forced termination\n- **ServiceManager**: Long-running service management\n- **TimeoutManager**: Process timeout enforcement\n- **ProcessGroup**: Process group and pipeline management\n- **ConfigLoader**: Configuration file loading and validation\n\n## Contributing\n\nContributions are welcome! Please see the main repository for contribution guidelines:\n<https://github.com/digital-defiance/ai-capabilities-suite>\n\n## License\n\nMIT License - see [LICENSE](./LICENSE) file for details.\n\n## Support\n\n- GitHub Issues: <https://github.com/digital-defiance/ai-capabilities-suite/issues>\n- Email: <info@digitaldefiance.org>\n\n## Related Projects\n\n- [MCP Filesystem](https://github.com/digital-defiance/ai-capabilities-suite/tree/main/packages/mcp-filesystem) - Filesystem operations for AI agents\n- [MCP Recording](https://github.com/digital-defiance/ai-capabilities-suite/tree/main/packages/mcp-recording) - Session recording and playback\n- [MCP ACS Debugger](https://github.com/digital-defiance/ai-capabilities-suite/tree/main/packages/mcp-debugger) - MCP protocol debugging tools\n\n## Acknowledgments\n\nBuilt with:\n\n- [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk) - MCP protocol implementation\n- [pidusage](https://github.com/soyuka/pidusage) - Process resource monitoring\n- [which](https://github.com/npm/node-which) - Executable path resolution\n- [minimatch](https://github.com/isaacs/minimatch) - Glob pattern matching\n","readmeFilename":"README.md"}