8000 GitHub - griffithsbs/mcpipe: Decorate stdio MCP servers with debugging and other capabilities
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

griffithsbs/mcpipe

Repository files navigation

mcpipe

npm version total downloads

A wrapper for stdio-based MCP servers that adds debugging, tool name prefixing, and environment management.

Quick Start

# 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:

{
  "my_server": {
    "command": "npx",
    "args": ["my-mcp-server", "--config", "path/to/config"]
  }
}

After (with debugging and tool prefixing):

{
  "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 <prefix>_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

Options

  • --debug, -d: Enable debug logging to stderr
  • --name <prefix>, -n <prefix>: Add prefix to tool names
  • --env-file <path>, -e <path>: 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

0