{"_id":"@botanicastudios/process-manager-mcp","_rev":"6-41f7be2a66b01666b78e2eb89ddf754d","name":"@botanicastudios/process-manager-mcp","dist-tags":{"latest":"0.3.3"},"versions":{"0.1.0":{"name":"@botanicastudios/process-manager-mcp","version":"0.1.0","keywords":["mcp","process-manager","typescript"],"author":{"name":"Botanica Studios"},"license":"MIT","_id":"@botanicastudios/process-manager-mcp@0.1.0","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"bin":{"process-manager-mcp":"dist/index.js"},"dist":{"shasum":"63eb32740f77573355ca3f101256fd1b53769aaf","tarball":"https://registry.npmjs.org/@botanicastudios/process-manager-mcp/-/process-manager-mcp-0.1.0.tgz","fileCount":11,"integrity":"sha512-eCmhIDtXWoNXtK7Mdw6uudCrcnys8Mgb/Ckgjsll2Xk5tTbTdx7oLuIKfN/1TTyaN+fYvNH5Oj7wvnoOxuB0mQ==","signatures":[{"sig":"MEUCIFQwaqUbkV63L6+2r46+TfFH7DCY/eQ0CrOl8LmRHLd5AiEA7X/8r9mCl0bOQMaaRKOO1d9BSfycbdEKVnXoJ8xWPmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45626},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e4cc7f78fcf684ddab059fef73e42ea61d1cea52","scripts":{"dev":"tsc && node dist/index.js","test":"vitest run","build":"tsc","test:ui":"vitest --ui","test:run":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"_npmVersion":"10.9.2","description":"MCP server for managing processes with persistent storage","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.23.0","conf":"^13.0.0","execa":"^9.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","@vitest/ui":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/process-manager-mcp_0.1.0_1755179273527_0.2808691954004834","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@botanicastudios/process-manager-mcp","version":"0.2.0","keywords":["mcp","process-manager","typescript"],"author":{"name":"Botanica Studios"},"license":"MIT","_id":"@botanicastudios/process-manager-mcp@0.2.0","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"bin":{"process-manager-mcp":"dist/index.js"},"dist":{"shasum":"61280eba7131f1137fef07c76c13a78e5ce11dcb","tarball":"https://registry.npmjs.org/@botanicastudios/process-manager-mcp/-/process-manager-mcp-0.2.0.tgz","fileCount":11,"integrity":"sha512-SCC2pKZ6QK1JLDXrOakR3GdXuIf0TMgdqIb03R+envh36A4zlALsPxBczk4G/4KC8dlu31BJ2IbV+D63drJeOg==","signatures":[{"sig":"MEUCIDxdzi4s0dCNOqmekgpixCft4soGAkSv/a2z0jeAixA7AiEA6vA79H96oTQRwqFi5jrGqyz0VwHq2Hlka/5NMhqeB94=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52078},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"0732d6e52e4fc1aa1d34fb89d6fcceba27c6a315","scripts":{"dev":"tsc && node dist/index.js","test":"vitest run","build":"tsc","test:ui":"vitest --ui","test:run":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"_npmVersion":"10.9.2","description":"MCP server for managing processes with persistent storage","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.23.0","conf":"^13.0.0","execa":"^9.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","@vitest/ui":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/process-manager-mcp_0.2.0_1755249746599_0.8286304807071467","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@botanicastudios/process-manager-mcp","version":"0.3.0","keywords":["mcp","process-manager","typescript"],"author":{"name":"Botanica Studios"},"license":"MIT","_id":"@botanicastudios/process-manager-mcp@0.3.0","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"bin":{"procman":"dist/cli-entry.js","process-manager-mcp":"dist/cli-entry.js"},"dist":{"shasum":"26633f968c282b9f6ff15defc4fbff8abe9ad206","tarball":"https://registry.npmjs.org/@botanicastudios/process-manager-mcp/-/process-manager-mcp-0.3.0.tgz","fileCount":19,"integrity":"sha512-W/3z09Q7ijY7qaw+RcibLJTVrY3B2AWeVLsfVS1GW6WdgAbTle1Tdqv+77wvskUsMMdDPmb6ts1upWeJJPKG9Q==","signatures":[{"sig":"MEQCIE8EqayCiN62ESvyLoMvY7Boipd02lbHNbGdxhedGsU8AiB0izxGccpV+WJuiqpbtz4aG27IU9O+hX4bmcXx2j0qwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77252},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"ad2b85f542d445bf49d1be8eb54c98d636fb6678","scripts":{"dev":"tsc && node dist/index.js","test":"vitest run","build":"tsc","test:ui":"vitest --ui","test:run":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"_npmVersion":"10.9.2","description":"MCP server for managing processes with persistent storage","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.23.0","conf":"^13.0.0","execa":"^9.0.0","commander":"^14.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","@vitest/ui":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/process-manager-mcp_0.3.0_1755260680137_0.6690408349100017","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@botanicastudios/process-manager-mcp","version":"0.3.1","keywords":["mcp","process-manager","typescript"],"author":{"name":"Botanica Studios"},"license":"MIT","_id":"@botanicastudios/process-manager-mcp@0.3.1","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"bin":{"procman":"dist/cli-entry.js","process-manager-mcp":"dist/cli-entry.js"},"dist":{"shasum":"d98b8c6962fcd3b69158db99cc4c955d9be13b9f","tarball":"https://registry.npmjs.org/@botanicastudios/process-manager-mcp/-/process-manager-mcp-0.3.1.tgz","fileCount":19,"integrity":"sha512-h2e7BP4fRVseM2fN/CrNntSPAgrf+aMIaKuTGNVq8PYaIXpEhvwGKDf4i4z8VmLWcXgdcJY86I5+V9Hxzbl+EA==","signatures":[{"sig":"MEYCIQD1nL3c1ITa9JzlbG7Ej7mv78nhpvhZiZEBgtHSguE6pQIhAO2Z1CzpxrqP0u/N5ix1i5mU4sTmuNgZnezBoXxcirDL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83468},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f18ea99a6cce804a21ce88d38ede42eb40a1b21a","scripts":{"dev":"tsc && node dist/index.js","test":"vitest run","build":"tsc","test:ui":"vitest --ui","test:run":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"_npmVersion":"10.9.2","description":"MCP server for managing processes with persistent storage","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.23.0","conf":"^13.0.0","execa":"^9.0.0","commander":"^14.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","@vitest/ui":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/process-manager-mcp_0.3.1_1755262635147_0.1695607262150387","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@botanicastudios/process-manager-mcp","version":"0.3.2","keywords":["mcp","process-manager","typescript"],"author":{"name":"Botanica Studios"},"license":"MIT","_id":"@botanicastudios/process-manager-mcp@0.3.2","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"bin":{"procman":"dist/cli-entry.js","process-manager-mcp":"dist/cli-entry.js"},"dist":{"shasum":"9db51d71a9d10a46ed9b749010f445292f72075f","tarball":"https://registry.npmjs.org/@botanicastudios/process-manager-mcp/-/process-manager-mcp-0.3.2.tgz","fileCount":19,"integrity":"sha512-gjnRg/4s/P+UhnulR1vdswuUL7VmzvdbyIe0DO7eDFpcovb1ogMP8QBqsfImaYLhEJEiQZHcktLTB9KXQQEreQ==","signatures":[{"sig":"MEQCID2As07WqEiArxfzQcUoVd/4y9EdYtQhpSrXZGhJV0utAiAiKOexzaDB3fkdkaiJrg5cRDPXn0LLmRXzkpxj/axr3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87786},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"00a8f9a84744404d223b2193e0c3f38114e22397","scripts":{"dev":"tsc && node dist/index.js","test":"vitest run","build":"tsc","test:ui":"vitest --ui","test:run":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"_npmVersion":"10.9.2","description":"MCP server for managing processes with persistent storage","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^3.23.0","conf":"^13.0.0","execa":"^9.0.0","commander":"^14.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","@vitest/ui":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/process-manager-mcp_0.3.2_1755268067312_0.852285085976427","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@botanicastudios/process-manager-mcp","version":"0.3.3","type":"module","description":"MCP server for managing processes with persistent storage","main":"dist/index.js","bin":{"process-manager-mcp":"dist/cli-entry.js","procman":"dist/cli-entry.js"},"scripts":{"build":"tsc","dev":"tsc && node dist/index.js","test":"vitest run","test:watch":"vitest","test:ui":"vitest --ui","test:run":"vitest run","prepublishOnly":"npm run build"},"keywords":["mcp","process-manager","typescript"],"author":{"name":"Botanica Studios"},"license":"MIT","devDependencies":{"@types/node":"^20.0.0","@vitest/ui":"^2.0.0","typescript":"^5.0.0","vitest":"^2.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","commander":"^14.0.0","conf":"^13.0.0","execa":"^9.0.0","zod":"^3.23.0"},"_id":"@botanicastudios/process-manager-mcp@0.3.3","gitHead":"e9bb3e7e93266a89c886ed13f4e53ef3c48dd807","types":"./dist/index.d.ts","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-0WDY13o4BO+Yf5ns7Qp0dEndDbFmLaoofE9l2QY2eUkA5DmZDxGl96uh/xfcGt41HL8DrfGeERMooTiBNfgl9g==","shasum":"346192902c93c5a7f9aeb93ecd18451d810c5150","tarball":"https://registry.npmjs.org/@botanicastudios/process-manager-mcp/-/process-manager-mcp-0.3.3.tgz","fileCount":19,"unpackedSize":94017,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDliU/zrCWhz2LwKsQQdC/ojx/72wF3LSaB3X2/xFfkswIhAO6qTYZ+tAVlne5rBGUFAsUE/TiY+IGCBGRELHngcVZu"}]},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"directories":{},"maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/process-manager-mcp_0.3.3_1755273483774_0.4832201572211401"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-14T13:47:53.449Z","modified":"2025-08-15T15:58:04.171Z","0.1.0":"2025-08-14T13:47:53.708Z","0.2.0":"2025-08-15T09:22:26.786Z","0.3.0":"2025-08-15T12:24:40.327Z","0.3.1":"2025-08-15T12:57:15.331Z","0.3.2":"2025-08-15T14:27:47.495Z","0.3.3":"2025-08-15T15:58:03.978Z"},"author":{"name":"Botanica Studios"},"license":"MIT","keywords":["mcp","process-manager","typescript"],"description":"MCP server for managing processes with persistent storage","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"readme":"# Process Manager MCP Server\n\nA Model Context Protocol (MCP) server that provides process management capabilities with persistent storage and log management.\n\n## ⚠️ Security Warning\n\n**This MCP server allows AI agents to execute arbitrary commands on your machine.** This poses significant security risks including:\n\n- Execution of malicious commands\n- Access to sensitive files and system resources\n- Potential system compromise\n- Data theft or destruction\n\n**Strongly recommended security measures:**\n\n- **Run agents in containerized environments** (Docker, Podman, etc.) with limited privileges\n- **Never run this server with elevated privileges** (root/Administrator)\n- **Use in isolated development environments only**\n- **Regularly audit process logs for suspicious activity**\n- **Consider using read-only filesystem mounts where possible**\n\nUse at your own risk. The authors are not responsible for any damage caused by misuse of this software.\n\n## Features\n\n- **Dual Mode Operation**: Works as both MCP server and standalone CLI tool\n- **Start Processes**: Launch processes with configurable auto-shutdown behavior and custom working directories\n- **Environment Variables**: Pass custom environment variables to processes\n- **Stop Processes**: Stop processes by command name or PID\n- **Process Monitoring**: Automatic health checks every 5 seconds\n- **Persistent Storage**: Process information persists across server restarts\n- **Log Management**: Capture and retrieve process logs with tail functionality\n- **Directory-based Organization**: Organize processes by working directory using the `CWD` environment variable\n- **Flexible Path Support**: Support for both absolute and relative paths in the `cwd` parameter\n- **CLI Mode**: Command-line interface for manual process management with streaming logs\n\n## Installation\n\n### As a CLI tool\n\n```bash\nnpm install -g @botanicastudios/process-manager-mcp\nprocman start \"npm run dev\"\n```\n\nOr run directly with npx:\n\n```bash\nnpx @botanicastudios/process-manager-mcp\n```\n\n### Claude Code\n\n```\nclaude mcp add process-manager -s user -- npx -y @botanicastudios/process-manager-mcp\n```\n\n### Into an MCP server config file\n\n```\n{\n  \"mcpServers\": {\n    \"process-manager\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@botanicastudios/process-manager-mcp\"],\n      \"env\": {\n        \"CWD\": \"/Users/me/Code/myproject\"\n      }\n    }\n  }\n}\n```\n\n`env.CWD` is optional\n\n## CLI Usage\n\nThe process manager can be used as a standalone CLI tool for managing processes:\n\n### Starting Processes\n\n```bash\n# Start a process and stream logs to stdout (Ctrl+C to stop)\nnpx @botanicastudios/process-manager-mcp start \"npm run dev\"\n\n# Start a persistent background process\nnpx @botanicastudios/process-manager-mcp start --persist \"npm run dev\"\n\n# Start a process in a specific directory\nnpx @botanicastudios/process-manager-mcp start --cwd ./server \"npm run dev\"\n\n# Start a process with environment variables\nnpx @botanicastudios/process-manager-mcp start --env USER_ID=12345 --env USER_TOKEN=abcdef \"node app.js\"\n\n# Combine multiple options\nnpx @botanicastudios/process-manager-mcp start --persist --cwd ./backend --env PORT=3000 --env NODE_ENV=production \"npm start\"\n```\n\n### Managing Processes\n\n```bash\n# List all managed processes\nnpx @botanicastudios/process-manager-mcp list\n\n# Stop a process by PID\nnpx @botanicastudios/process-manager-mcp stop 12345\n\n# Stop all managed processes\nnpx @botanicastudios/process-manager-mcp stop all\n\n# View logs for a process\nnpx @botanicastudios/process-manager-mcp logs 12345\n\n# Stream logs in real-time\nnpx @botanicastudios/process-manager-mcp logs -t 12345\n\n# View last 200 lines of logs\nnpx @botanicastudios/process-manager-mcp logs -n 200 12345\n```\n\n### CLI Options\n\n- `-c, --cwd <path>`: Set working directory for the process (start command)\n- `-p, --persist`: Keep process running after CLI exits (start command)\n- `-e, --env <key=value>`: Set environment variable (can be used multiple times) (start command)\n- `-t, --tail`: Stream logs in real-time (logs command)\n- `-n, --num-lines <number>`: Number of log lines to display (default: 100) (logs command)\n- `--help`: Show help information\n- `--version`: Show version number\n\n**Note:** Use `stop all` to stop all managed processes at once.\n\n## MCP Server Configuration\n\nSet the `CWD` environment variable to specify the working directory for process management:\n\n```bash\nexport CWD=/path/to/your/project\nnpx -y @botanicastudios/process-manager-mcp\n```\n\nIf `CWD` is not set, the current working directory will be used.\n\n## Shared Process Management\n\nProcesses started via the CLI are visible to the MCP server and vice versa. This allows AI agents and human operators to collaborate on process management:\n\n- Start a process via CLI, manage it via MCP\n- Start a process via MCP (AI agent), monitor it via CLI\n- Shared process list and log access\n- Unified process storage\n\n## MCP Server Tools\n\n### start_process\n\nStart a new process with the given command.\n\n**Parameters:**\n\n- `command` (string, required): The command to execute\n- `auto_shutdown` (boolean, optional, default: true): Whether to automatically shutdown the process when the MCP server stops\n- `cwd` (string, optional): Working directory for the process. Supports relative paths like `'./server'` or `'server'` (relative to `${process.env.CWD || process.cwd()}`)\n- `env` (object, optional): Environment variables to set for the process (e.g., `{ \"USER_ID\": \"12345\", \"USER_TOKEN\": \"abcdef\" }`)\n\n**Returns:** Process PID as an integer\n\n**Examples:**\n\n```json\n{\n  \"command\": \"npm run dev\",\n  \"auto_shutdown\": false\n}\n```\n\n```json\n{\n  \"command\": \"python app.py\",\n  \"auto_shutdown\": true,\n  \"cwd\": \"./backend\"\n}\n```\n\n```json\n{\n  \"command\": \"node server.js\",\n  \"auto_shutdown\": false,\n  \"env\": {\n    \"PORT\": \"3000\",\n    \"NODE_ENV\": \"production\",\n    \"API_KEY\": \"your-api-key-here\"\n  }\n}\n```\n\n**Returns:**\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Process started successfully. PID: 12345\"\n    }\n  ]\n}\n```\n\n### end_process\n\nStop a running process by PID.\n\n**Parameters:**\n\n- `pid` (number, required): The PID of the process to stop\n\n**Returns:**\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Process stopped successfully\"\n    }\n  ]\n}\n```\n\nOr on error:\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Process not found or could not be stopped\"\n    }\n  ],\n  \"isError\": true\n}\n```\n\n### get_logs\n\nFetch logs for a specific process by PID.\n\n**Parameters:**\n\n- `pid` (number, required): The PID of the process to get logs for\n- `numLines` (number, optional, default: 100): Number of lines to retrieve from the end of the log\n\n**Example:**\n\n```json\n{\n  \"tool\": \"get_logs\",\n  \"parameters\": {\n    \"pid\": 12345,\n    \"numLines\": 50\n  }\n}\n```\n\n**Returns:**\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"2024-01-01 12:00:00 Server started\\n2024-01-01 12:00:01 Listening on port 3000...\"\n    }\n  ]\n}\n```\n\n### list_processes\n\nList all running processes for the current working directory.\n\n**Parameters:** None\n\n**Example:**\n\n```json\n{\n  \"tool\": \"list_processes\",\n  \"parameters\": {}\n}\n```\n\n**Returns:**\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"PID: 12345\\nCommand: npm run dev\\nStatus: running\\nStarted: 2024-01-01T00:00:00.000Z\\nAuto-shutdown: true\\nWorking Directory: /home/user/project\\n\\nPID: 67890\\nCommand: python server.py\\nStatus: running\\nStarted: 2024-01-01T00:01:00.000Z\\nAuto-shutdown: false\\nWorking Directory: /home/user/api\"\n    }\n  ]\n}\n```\n\nOr when no processes are running:\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"No processes are currently running.\"\n    }\n  ]\n}\n```\n\n## Resources\n\n### processes://processes\n\nLists all tracked running processes for the current working directory.\n\n**Returns:** JSON array with process information including:\n\n- `key`: Internal process key\n- `pid`: Process ID\n- `command`: Original command\n- `status`: Current status (running, stopped, crashed)\n- `startTime`: ISO timestamp of when the process started\n- `autoShutdown`: Whether the process will be shut down with the server\n- `errorOutput`: Error information if the process crashed\n- `pwd`: Absolute path to the directory where the command was executed (e.g., `/Users/user/project`)\n\n### processes://processes/{pid}/logs?numLines={tail_length}\n\nRetrieve logs for a specific process.\n\n**Parameters:**\n\n- `pid`: Process ID (required in the URL path)\n- `numLines` (optional query parameter, default: 100): Number of lines to tail from the end of the log\n\n**Returns:** Process logs as plain text\n\n**Example:** `processes://processes/12345/logs?numLines=50`\n\n## Process Management\n\n### Auto-shutdown vs Persistent Processes\n\n- **Auto-shutdown processes** (`auto_shutdown: true`): These processes are automatically terminated when the MCP server shuts down. Useful for development servers and temporary processes.\n\n- **Persistent processes** (`auto_shutdown: false`): These processes continue running even after the MCP server stops. Useful for background services and long-running tasks.\n\n### Process Monitoring\n\nThe server automatically monitors all tracked processes every 5 seconds:\n\n- **Running**: Process is active and responding\n- **Stopped**: Process ended normally or was terminated\n- **Crashed**: Process ended with a non-zero exit code\n\n### Log Storage\n\nProcess logs are stored in `~/.process-manager-mcp/logs/` and are organized by PID. Logs persist even when the MCP server is not running, allowing you to retrieve logs from previously started processes.\n\n## Usage Examples\n\n### Starting a Development Server\n\n```json\n{\n  \"tool\": \"start_process\",\n  \"parameters\": {\n    \"command\": \"npm run dev\",\n    \"auto_shutdown\": true\n  }\n}\n```\n\n### Starting a Background Service\n\n```json\n{\n  \"tool\": \"start_process\",\n  \"parameters\": {\n    \"command\": \"python background_worker.py\",\n    \"auto_shutdown\": false\n  }\n}\n```\n\n### Starting a Process in a Specific Directory\n\n```json\n{\n  \"tool\": \"start_process\",\n  \"parameters\": {\n    \"command\": \"npm start\",\n    \"auto_shutdown\": true,\n    \"cwd\": \"./frontend\"\n  }\n}\n```\n\nThis will run `npm start` in the `./frontend` directory relative to the current working directory.\n\n### Starting a Process with Environment Variables\n\n```json\n{\n  \"tool\": \"start_process\",\n  \"parameters\": {\n    \"command\": \"node api-server.js\",\n    \"auto_shutdown\": true,\n    \"env\": {\n      \"PORT\": \"8080\",\n      \"DATABASE_URL\": \"postgres://localhost:5432/mydb\",\n      \"JWT_SECRET\": \"your-secret-key\"\n    }\n  }\n}\n```\n\n### Starting a Process with Both Directory and Environment\n\n```json\n{\n  \"tool\": \"start_process\",\n  \"parameters\": {\n    \"command\": \"npm run dev\",\n    \"auto_shutdown\": false,\n    \"cwd\": \"./microservice\",\n    \"env\": {\n      \"SERVICE_NAME\": \"auth-service\",\n      \"PORT\": \"3001\",\n      \"NODE_ENV\": \"development\"\n    }\n  }\n}\n```\n\n### Stopping a Process by PID\n\n```json\n{\n  \"tool\": \"end_process\",\n  \"parameters\": {\n    \"pid\": 12345\n  }\n}\n```\n\n### Viewing Process Logs\n\nUse the `get_logs` tool:\n\n```json\n{\n  \"tool\": \"get_logs\",\n  \"parameters\": {\n    \"pid\": 12345,\n    \"numLines\": 50\n  }\n}\n```\n\nOr access the resource `processes://processes/12345/logs?numLines=50` to get the last 50 lines of logs for process with PID 12345.\n\n### Listing All Processes\n\n```json\n{\n  \"tool\": \"list_processes\",\n  \"parameters\": {}\n}\n```\n\n## Development\n\n### Building from Source\n\n```bash\ngit clone <repository>\ncd process-manager-mcp\nnpm install\nnpm run build\n```\n\n### Running in Development Mode\n\n```bash\nnpm run dev\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}