A MCP Forward Proxy Bridge designed to be a one-to-many bridge allowing you to use a single MCP server to communicate with many MCP servers transparently.
Project description
MCP Foxxy Bridge
Overview
MCP Foxxy Bridge is a secure, feature-rich one-to-many proxy for the Model Context Protocol (MCP). It lets you aggregate and route requests to multiple MCP servers through a single endpoint, with enterprise-grade security features:
🔒 Security Features
- Command substitution security with allow-lists and validation
- OAuth 2.0 + PKCE authentication for secure server connections
- Shell injection protection with comprehensive input validation
- Localhost-only binding by default for maximum security
🚀 Core Capabilities
- Centralize configuration for all your MCP servers
- Expose all tools, resources, and prompts from connected servers
- Route requests transparently to the right backend
- Use a single MCP endpoint in your AI tools (Claude Desktop, VS Code, etc.)
- Support for command substitution with secure credential retrieval
🚀 Quickstart
See the Installation Guide for full details.
1. Choose one of the following installation methods
A. Install via uv (Recommended):
uv tool install mcp-foxxy-bridge
B. Install latest from GitHub:
uv tool install git+https://github.com/billyjbryant/mcp-foxxy-bridge
C. Run with Docker (from GHCR):
docker run --rm -p 8080:8080 ghcr.io/billyjbryant/mcp-foxxy-bridge:latest --bridge-config /app/config.json
2. Run the Bridge
With config file:
mcp-foxxy-bridge --bridge-config config.json
Or with named servers:
mcp-foxxy-bridge --port 8080 \
--named-server fetch 'uvx mcp-server-fetch' \
--named-server github 'npx -y @modelcontextprotocol/server-github' \
--named-server filesystem 'npx -y @modelcontextprotocol/server-filesystem'
# With security features
mcp-foxxy-bridge --bridge-config config.json \
--allow-command-substitution # Enable secure command substitution
See Configuration Guide for config file examples.
3. Connect Your AI Tool
Point your MCP-compatible client to:
http://localhost:8080/sse
See API Reference for integration details.
📚 Documentation
- Overview & Features
- Installation Guide
- Configuration Guide
- Security Guide 🔒
- OAuth Authentication 🔐
- Deployment Guide
- API Reference
- Architecture Overview
- Troubleshooting Guide
- Example Configurations
🛠️ Development
🤝 Contributing & Support
🔒 Security
MCP Foxxy Bridge implements comprehensive security measures:
Network Security
- Default binding: Bridge binds to
127.0.0.1:8080(localhost-only) by default - MCP server isolation: Individual MCP servers communicate via local stdio pipes, never network ports
- OAuth port separation: Dedicated OAuth callback port (8090) independent of main bridge port
- Configurable access: Host and port settings can be configured via config file or CLI arguments
Command Substitution Security
- Allow-list approach: Only pre-approved commands can be executed via
$(command)syntax - Shell injection protection: Blocks dangerous shell operators (
|,&,;, etc.) - Argument validation: Validates arguments for sensitive commands (git, vault, op, gh)
- Read-only enforcement: Prevents write/delete operations in command substitution
Authentication Security
- OAuth 2.0 + PKCE: Secure authentication with Proof Key for Code Exchange
- Automatic discovery: OAuth endpoints discovered from server metadata
- Secure token storage: Tokens stored with restricted file permissions
- Token refresh: Automatic token renewal when possible
Configuration Priority
- Command-line arguments (
--host,--port,--allow-command-substitution) - highest priority - Configuration file bridge settings (
bridge.host,bridge.port,bridge.allow_command_substitution) - Environment variables (
MCP_ALLOW_COMMAND_SUBSTITUTION,MCP_ALLOWED_COMMANDS) - Secure defaults (
127.0.0.1:8080, command substitution disabled) - lowest priority
Security Recommendations
- Keep the default
127.0.0.1binding unless external access is required - Only enable command substitution when needed, with minimal command allow-lists
- Use OAuth authentication for production deployments with sensitive data
- Regularly update MCP server dependencies and review access logs
- See Security Guide for comprehensive security practices
⚖️ License
This project is licensed under the GNU Affero General Public License v3.0 or later (AGPLv3+). See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_foxxy_bridge-1.4.0.tar.gz.
File metadata
- Download URL: mcp_foxxy_bridge-1.4.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13051889fc5bc9a70ee770c21b4b1b129a1c604563ba5d98f67dd5c0a61417bb
|
|
| MD5 |
7f13bf8218a889d3053d15101395ee3e
|
|
| BLAKE2b-256 |
703e5a447c7b593fea4c5de2649c7f5b5e8a12b1def776d35a0513913a37c6a4
|
Provenance
The following attestation bundles were made for mcp_foxxy_bridge-1.4.0.tar.gz:
Publisher:
main.yml on billyjbryant/mcp-foxxy-bridge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_foxxy_bridge-1.4.0.tar.gz -
Subject digest:
13051889fc5bc9a70ee770c21b4b1b129a1c604563ba5d98f67dd5c0a61417bb - Sigstore transparency entry: 414332819
- Sigstore integration time:
-
Permalink:
billyjbryant/mcp-foxxy-bridge@48941714ba6ce057d87e53bba0c0f4e0dd286a0a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/billyjbryant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@48941714ba6ce057d87e53bba0c0f4e0dd286a0a -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_foxxy_bridge-1.4.0-py3-none-any.whl.
File metadata
- Download URL: mcp_foxxy_bridge-1.4.0-py3-none-any.whl
- Upload date:
- Size: 145.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22d59877b62590b3576260a1468cfe548654dae7b238b7cc8bf1d77e4a5fbd1e
|
|
| MD5 |
36dfec952f0166760d98158219da979a
|
|
| BLAKE2b-256 |
839e388975159b824ce938f37255777dd52a407e342a53a47ed098045f65764a
|
Provenance
The following attestation bundles were made for mcp_foxxy_bridge-1.4.0-py3-none-any.whl:
Publisher:
main.yml on billyjbryant/mcp-foxxy-bridge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_foxxy_bridge-1.4.0-py3-none-any.whl -
Subject digest:
22d59877b62590b3576260a1468cfe548654dae7b238b7cc8bf1d77e4a5fbd1e - Sigstore transparency entry: 414332832
- Sigstore integration time:
-
Permalink:
billyjbryant/mcp-foxxy-bridge@48941714ba6ce057d87e53bba0c0f4e0dd286a0a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/billyjbryant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@48941714ba6ce057d87e53bba0c0f4e0dd286a0a -
Trigger Event:
push
-
Statement type: