# mcpipe [![npm version](https://img.shields.io/npm/v/mcpipe.svg)](https://www.npmjs.com/package/mcpipe) [![total downloads](https://img.shields.io/npm/dt/mcpipe.svg)](https://www.npmjs.com/package/mcpipe) A wrapper for stdio-based MCP servers that adds debugging, tool name prefixing, and environment management. ## Quick Start ```bash # Debug MCP communication npx mcpipe --debug your-mcp-server # Avoid tool name conflicts npx mcpipe --name myserver your-mcp-server # Load environment variables npx mcpipe --env-file .env your-mcp-server # Combine features npx mcpipe --debug --name myserver --env-file .env your-mcp-server ``` ## Usage in MCP Clients Prefix your server command with mcpipe. _Before_: ```json { "my_server": { "command": "npx", "args": ["my-mcp-server", "--config", "path/to/config"] } } ``` _After (with debugging and tool prefixing)_: ```json { "my_server": { "command": "npx", "args": ["mcpipe", "--debug", "--name", "myserver", "npx", "my-mcp-server", "--config", "path/to/config"] } } ``` ## Features **Debug Logging (`--debug`)** - View all JSON-RPC messages between client and server - Monitor process lifecycle events - See tool name transformations **Tool Name Prefixing (`--name prefix`)** - Run multiple instances of the same server - Avoid tool name conflicts between different servers - A tool that the server exposes under the name `foo` will be exposed to your client under the name `_foo` instead **Environment Loading (`--env-file path`)** - Load variables from `.env` files - Keep secrets out of MCP client config - N.B. if you want only the environment loading without the other features, consider [envmcp](https://github.com/griffithsbs/envmcp) ## Options - `--debug`, `-d`: Enable debug logging to stderr - `--name `, `-n `: Add prefix to tool names - `--env-file `, `-e `: Load environment file ## Debug Output Example ``` [2024-01-15 10:30:01.125] [myserver_CLIENT→SERVER] {"jsonrpc":"2.0","method":"tools/list","id":1} [2024-01-15 10:30:01.128] [myserver_SERVER→CLIENT] {"jsonrpc":"2.0","result":{"tools":[{"name":"fetch"}]},"id":1} [2024-01-15 10:30:01.128] [myserver_TRANSFORM] Tool names prefixed with: myserver_ [2024-01-15 10:30:01.129] [myserver_SERVER→CLIENT] (Modified) {"jsonrpc":"2.0","result":{"tools":[{"name":"myserver_fetch"}]},"id":1} ``` ## Environment File Format ``` KEY=value ANOTHER_KEY=another value # This is a comment QUOTED_VALUE="value with spaces" ``` ## License MIT