McpProxy 1.0.0
dotnet tool install --global McpProxy --version 1.0.0
dotnet new tool-manifest
dotnet tool install --local McpProxy --version 1.0.0
#tool dotnet:?package=McpProxy&version=1.0.0
nuke :add-package McpProxy --version 1.0.0
MCP Proxy
A proxy server for the Model Context Protocol (MCP) that aggregates multiple MCP servers into a single endpoint. This allows clients to connect to one proxy and access tools from multiple backend MCP servers.
Features
- Aggregates multiple MCP servers - Connect to multiple backend MCP servers and expose all their tools through a single endpoint
- Dual transport support - Run the proxy with either STDIO or SSE (Server-Sent Events) transport
- Supports STDIO and HTTP backends - Connect to backend MCP servers using STDIO (local processes) or HTTP/SSE (remote servers)
Installation
Install as a .NET Global Tool (Recommended)
dotnet tool install -g McpProxy
After installation, you can run the proxy using:
mcpproxy stdio ./mcp-proxy.json
mcpproxy sse ./mcp-proxy.json
Run with dnx (No Installation Required)
You can run McpProxy directly without installing it using dnx:
dnx McpProxy -- stdio ./mcp-proxy.json
dnx McpProxy -- sse ./mcp-proxy.json
Build from Source
git clone https://github.com/MoaidHathot/mcp-proxy.git
cd mcp-proxy
dotnet build src/McpProxy
dotnet run --project src/McpProxy -- stdio ./mcp-proxy.json
Usage
mcpproxy <transport> [config-path]
Arguments
| Argument | Description |
|---|---|
transport |
Server transport type: stdio or sse |
config-path |
Path to configuration file (optional) |
Environment Variables
| Variable | Description |
|---|---|
MCP_PROXY_CONFIG_PATH |
Path to the configuration file (used if config-path argument is not provided) |
Examples
# Run with STDIO transport (for use with Claude Desktop, etc.)
mcpproxy stdio
# Run with SSE transport (for HTTP clients)
mcpproxy sse
# Run with STDIO and specific config file
mcpproxy stdio ./mcp-proxy.json
# Run with SSE and specific config file
mcpproxy sse /path/to/config.json
Configuration
Create a mcp-proxy.json file to configure the backend MCP servers. See mcp-proxy.sample.json for a complete example with both local (Azure MCP) and remote (Context7) servers.
{
"Mcp": {
"sample-mcp-server": {
"type": "stdio",
"title": "Azure MCP Server",
"description": "The official Azure MCP Server",
"command": "dnx",
"arguments": ["Azure.Mcp@2.0.0-beta.10", "--yes", "--", "server", "start"]
},
"microsoft-learn": {
"type": "http",
"title": "Microsoft Learn MCP",
"description": "Microsoft Learn MCP Server",
"url": "https://learn.microsoft.com/api/mcp"
}
}
}
Configuration Options
STDIO Backend
| Property | Type | Description |
|---|---|---|
type |
string | Must be "stdio" |
title |
string | Display name for the server |
description |
string | Description of the server |
command |
string | Command to execute |
arguments |
string[] | Command-line arguments |
HTTP/SSE Backend
| Property | Type | Description |
|---|---|---|
type |
string | "sse" for SSE-only servers (like Context7), "http" for Streamable HTTP with auto-detection |
title |
string | Display name for the server |
description |
string | Description of the server |
url |
string | URL of the MCP server endpoint |
Note: Use
"sse"for servers that only support Server-Sent Events (most current MCP servers). Use"http"for servers that support the newer Streamable HTTP transport (auto-detects and falls back to SSE).
Using with OpenCode
Add the following to your OpenCode configuration file (opencode.json):
Using the installed dotnet tool
{
"mcp": {
"mcp-proxy": {
"type": "local",
"command": ["mcpproxy", "stdio", "/path/to/mcp-proxy.json"],
"enabled": true
}
}
}
Using dnx (no installation required)
{
"mcp": {
"mcp-proxy": {
"type": "local",
"command": ["dnx", "McpProxy", "--", "stdio", "/path/to/mcp-proxy.json"],
"enabled": true
}
}
}
Using with GitHub Copilot CLI
Add the following to your VS Code settings (settings.json) or workspace settings:
Using the installed dotnet tool
{
"github.copilot.chat.mcp.servers": {
"mcp-proxy": {
"command": "mcpproxy",
"args": ["stdio", "/path/to/mcp-proxy.json"]
}
}
}
Using dnx (no installation required)
{
"github.copilot.chat.mcp.servers": {
"mcp-proxy": {
"command": "dnx",
"args": ["McpProxy", "--", "stdio", "/path/to/mcp-proxy.json"]
}
}
}
Alternatively, create a .vscode/mcp.json file in your project:
{
"servers": {
"mcp-proxy": {
"command": "mcpproxy",
"args": ["stdio", "/path/to/mcp-proxy.json"]
}
}
}
Using with Claude Desktop
Add the following to your Claude Desktop configuration (claude_desktop_config.json):
Using the installed dotnet tool
{
"mcpServers": {
"mcp-proxy": {
"command": "mcpproxy",
"args": ["stdio", "/path/to/mcp-proxy.json"]
}
}
}
Using dnx (no installation required)
{
"mcpServers": {
"mcp-proxy": {
"command": "dnx",
"args": ["McpProxy", "--", "stdio", "/path/to/mcp-proxy.json"]
}
}
}
Using with HTTP/SSE Clients
Start the proxy in SSE mode:
mcpproxy sse ./mcp-proxy.json
The server will start on the default ASP.NET Core port (typically http://localhost:5000). You can configure the port using standard ASP.NET Core configuration:
mcpproxy sse ./mcp-proxy.json --urls "http://localhost:8080"
Or via environment variable:
ASPNETCORE_URLS=http://localhost:8080 mcpproxy sse ./mcp-proxy.json
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 94 | 1/16/2026 |
Initial release of MCP Proxy - aggregates multiple MCP servers into a single endpoint.