Skip to main content
Glama
coder-ka

procm-mcp

by coder-ka
README.md
# procm-mcp

A Model Context Protocol (MCP) server for process management.

## Supported features

- Secure and automatable process creation
- Cleanup created processes automatically on termination (e.g. exiting claude code)
- Common process management features supported, restarting, deleting, checking status or retreving stdout/stderr of processes

Using these features, LLMs start processes like development servers, docker-compose, or test watchers and check their outputs to fix bugs automatically.

## Installation

```bash
npm i -D procm-mcp
```

`.mcp.json`

```json
{
  "mcpServers": {
    "procm-mcp": {
      "command": "node",
      "args": ["./node_modules/procm-mcp/build/index.js"],
      "env": {}
    }
  }
}
```

## Secure process creation

You can permit LLMs to use `start-process` tool without confirmation, because procm-mcp only allow whitelisted process creations.

LLMs will ask you to use `allow-start-process` tool to add specific process creation to the whitelist.

Once you allow a process creation, you don't have to confirming it anymore as long as the command and the working directory are the same.

I call it "allow-x pattern", which can balances security and usability in MCP.

**Warning: Do not permit LLMs to use `allow-start-process` without confirmation.That means "Do anything you want to".**

## Tools

- `allow-start-process` Allow specific processes to be created
  - `script` (required): The script/command to allow
  - `args` (optional): Array of arguments
  - `cwd` (optional): Working directory
- `start-process` Start a new process with specified script and arguments
  - `script` (required): The script/command to execute
  - `name` (optional): A friendly name for the process
  - `args` (optional): Array of arguments to pass to the script
  - `cwd` (required): Working directory for the process
  - `envs` (optional): Environment variables to set for the process
- `delete-process` Stop and remove a process by ID.The default signal is SIGTERM, but SIGKILL(force killing) will be sent after 10 seconds unless the process exits.
  - `id` (required): The process ID
- `restart-process` Restart an existing process by ID
  - `id` (required): The process ID
- `get-process-info` Get detailed information about a process
  - `id` (required): The process ID
- `list-processes` List all currently managed processes
  - No parameters required
- `get-process-stdout` Retrieve stdout logs from a process
  - `id` (required): The process ID
  - `chunkCount` (optional): Number of recent log entries to retrieve (default: 10)
- `get-process-stderr` Retrieve stderr logs from a process
  - `id` (required): The process ID
  - `chunkCount` (optional): Number of recent log entries to retrieve (default: 10)

## License

MIT

TDQS

C2.8/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct action or resource: starting, allowing, deleting, listing, retrieving info, stdout, stderr. No two tools have overlapping purposes; descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb-noun pattern in snake_case (e.g., start-process, get-process-info). Naming is predictable and uniform.

Tool Count5/5

With 11 tools, the server covers process lifecycle management comprehensively without redundancy. The count feels appropriate for the domain.

Completeness4/5

Core operations (start, list, info, restart, delete, output retrieval) are covered. Missing tools like graceful stop or sending input, but the set is sufficient for basic management.

Maintenance

ActivityInactive
ResponsivenessNo issues