MCP Proxy with PII Redaction
An MCP proxy that aggregates multiple MCP servers behind a single HTTP entrypoint, with built-in PII redaction capabilities.
- Proxy multiple MCP servers: Aggregate tools, prompts, and resources from many servers through a single HTTP endpoint
- Multiple transport types: Support for
stdio,sse, andstreamable-httpclient transports - Server transport options: Serve via Server-Sent Events (SSE) or streamable HTTP
- PII redaction: Automatic redaction of PII using GCS-backed dictionaries and generic pattern matching
- Tool filtering: Allow or block specific tools per server configuration
- Authentication: Bearer token authentication with per-server or global configuration
- Audit logging: Optional verbose audit logging for redaction operations
- Flexible configuration: JSON configuration with environment variable interpolation
- IDE setup
- Configuration - Configuration reference and examples
- Usage - CLI options, endpoints, authentication, and tool filtering
- PII Redaction - Redaction setup and configuration
- Deployment - Production deployment
- Docker Usage - Build, run, and configure the Docker image
- Node.js >= 20 (or equivalent bun or pnpm)
Integrate directly with your IDE over stdio. No global install required.
Before configuring your IDE, initialize a default config file (creates ~/gs-mcp-proxy/config.json by default):
gs-mcp-proxy --init
# or without installing globally
npx -y @growthspace-engineering/gs-mcp-proxy-pii-redactor --initSee Usage to customize the destination via --init-dest.
- Cursor: see docs/ide/cursor.md (stdio section)
- Claude Desktop: see docs/ide/claude.md (stdio section)
- Other IDEs: see docs/ide/other.md
- Install the module globally:
npm install -g @growthspace-engineering/gs-mcp-proxy-pii-redactor
- Initialize a default config file (creates
~/gs-mcp-proxy/config.jsonby default):See Usage to customize the destination viags-mcp-proxy --init
--init-dest. - Run the CLI (with or without a config file):
gs-mcp-proxy --config ~/gs-mcp-proxy/config.json # or (uses ./config.json by default if present) gs-mcp-proxy
- Connect your IDE using
mcp-remote(SSE or streamable HTTP):- Cursor: see docs/ide/cursor.md (SSE/HTTP sections)
- Claude Desktop: see docs/ide/claude.md (SSE/HTTP sections)
Developer setup (clone, build, run locally) has moved to CONTRIBUTING.md.
{
"mcpProxy": {
"baseURL": "http://localhost:8084",
"addr": ":8084",
"name": "MCP Proxy with PII Redaction",
"version": "1.0.0",
"type": "sse"
},
"mcpServers": {
"github": {
"transportType": "streamable-http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
}
}
}See Configuration for full configuration reference and examples.
# Unit tests
npm test
# E2E tests (requires GITHUB_TOKEN)
export GITHUB_TOKEN=your_token_here
npm run test:e2eNote: All E2E tests require a valid GITHUB_TOKEN environment variable. The test suite validates both SSE and Streamable HTTP transport options.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project follows the all-contributors specification. Contributions of any kind welcome!
This project adheres to a Code of Conduct. Please read CODE_OF_CONDUCT.md before contributing.
Thanks goes to these wonderful people (emoji key):
When you merge a pull request, our GitHub Actions workflow automatically:
- Adds the contributor to the
.all-contributorsrcconfiguration - Updates the Contributors section in this README
- Creates a commit with the changes
You can also manually add contributors using:
npm run contributors:addand the allcontributors cli will prompt you for the contribution details.
This project was inspired by the following projects:
- TBXark/mcp-proxy: a Go-based MCP proxy server that aggregates multiple MCP servers through a single HTTP endpoint.
- nestjs/nest: a progressive Node.js framework for building server-side applications.
MIT 2025
