docs/setup.md
A comprehensive guide to connect mcpproxy (http-streamable) to popular MCP clients: Cursor IDE, VS Code, Claude Desktop, and Goose.
MCPProxy is a smart Model Context Protocol (MCP) proxy that provides intelligent tool discovery and proxying for MCP servers. It runs as an HTTP server that aggregates multiple upstream MCP servers into a single endpoint, making it easy to connect multiple AI tools and services to your favorite IDE or AI assistant.
Key Features:
macOS (Recommended - DMG Installer): Download the DMG installer from GitHub Releases for the easiest installation experience.
macOS (Homebrew):
brew install smart-mcp-proxy/mcpproxy/mcpproxy
Linux (Debian / Ubuntu):
VERSION=$(curl -fsSL https://api.github.com/repos/smart-mcp-proxy/mcpproxy-go/releases/latest \
| grep -oE '"tag_name": *"v[^"]+"' | sed -E 's/.*"v([^"]+)"/\1/')
ARCH=$(dpkg --print-architecture)
curl -fLO "https://github.com/smart-mcp-proxy/mcpproxy-go/releases/latest/download/mcpproxy_${VERSION}_${ARCH}.deb"
sudo apt install "./mcpproxy_${VERSION}_${ARCH}.deb"
The .deb ships a systemd unit and starts the service automatically, bound to 127.0.0.1:8080 by default. To reach it from other machines on your LAN, edit /etc/mcpproxy/mcp_config.json, switch listen to 0.0.0.0:8080, set a strong api_key, and restart the service. See Installation › Network exposure for the full security checklist, and Installation › Linux for .rpm, ARM64, and tarball options.
Go Install:
go install github.com/smart-mcp-proxy/mcpproxy-go/cmd/mcpproxy@latest
From Terminal:
mcpproxy serve
macOS (DMG Install): Use Launchpad or Spotlight search to find and launch MCPProxy.
This starts MCPProxy on the default port :8080 with HTTP endpoint at http://localhost:8080/mcp/
📝 Note:
Check if port 8080 is already in use:
macOS/Linux:
lsof -i :8080
# or
netstat -an | grep 8080
Windows:
netstat -an | findstr 8080
Change Default Port:
mcpproxy serve --listen :8081
# or set in config file
MCPProxy looks for configuration in these locations (in order):
| OS | Config Location |
|---|---|
| macOS | ~/.mcpproxy/mcp_config.json |
| Windows | %USERPROFILE%\.mcpproxy\mcp_config.json |
| Linux | ~/.mcpproxy/mcp_config.json |
| Linux (.deb / .rpm) | /etc/mcpproxy/mcp_config.json (system service) |
Sample Configuration:
{
"listen": ":8080",
"data_dir": "~/.mcpproxy",
// Search & tool limits
"tools_limit": 15,
"tool_response_limit": 20000,
"mcpServers": [
{
"name": "local-python",
"command": "python",
"args": ["-m", "my_server"],
"protocol": "stdio",
"enabled": true
},
{
"name": "remote-http",
"url": "http://localhost:3001",
"protocol": "http",
"enabled": true
}
]
}
📝 Note: At first launch, MCPProxy will automatically generate a minimal configuration file if none exists.
📚 For complete configuration reference: See Configuration Documentation for all available options, including tokenizer settings, TLS configuration, Docker isolation, and more.
Method 1: One-Click Install
Method 2: Manual Setup
Cmd/Ctrl + ,){
"MCPProxy": {
"type": "http",
"url": "http://localhost:8080/mcp/"
}
}
Verification:
VS Code has built-in MCP support starting from version 1.102.
Setup Steps:
Cmd/Ctrl + ,){
"chat.mcp.discovery.enabled": true,
"mcp": {
"servers": {
"mcpproxy": {
"type": "http",
"url": "http://localhost:8080/mcp/"
}
}
}
}
Alternative: Workspace Configuration
Create .vscode/mcp.json in your workspace:
{
"servers": {
"MCPProxy": {
"type": "http",
"url": "http://localhost:8080/mcp/"
}
}
}
Usage:
📚 Reference: VS Code MCP Documentation
OpenCode can be connected through MCPProxy's Connect Clients flow.
opencodemcp~/.config/opencode/opencode.json%LOCALAPPDATA%\opencode\opencode.jsonmcp subtree and preserves unrelated root config.Claude Desktop supports two different approaches depending on your plan:
A) Free Plan — Local JSON Configuration Run mcpproxy as a local process and register it in the JSON configuration file. This method uses stdio transport with a bridge package.
B) Paid Plans — Remote Custom Connector Add mcpproxy as a remote MCP server via Settings → Connectors → Add Custom Connector. This method connects directly via HTTP.
Configuration Paths:
| OS | Claude Desktop Config Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Setup Steps:
💡 One-click: mcpproxy's built-in Connect wizard (Web UI / tray) can write this bridge configuration for you automatically — pick Claude Desktop and click Connect. It registers the
npx -y mcp-remotebridge shown below (Node.js required). The manual steps remain available if you prefer to edit the file yourself.
macOS:
mkdir -p ~/Library/Application\ Support/Claude/
touch ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:
mkdir "%APPDATA%\Claude"
type nul > "%APPDATA%\Claude\claude_desktop_config.json"
Linux:
mkdir -p ~/.config/Claude/
touch ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcpproxy": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8080/mcp"]
}
}
}
📝 Note: This approach uses mcp-remote to bridge HTTP to stdio transport, which is required for the JSON configuration method.
http://localhost:8080/mcp📝 Note: Remote servers defined in the JSON configuration are NOT used by Claude Desktop for paid plans. You must add them through the UI, and this feature is gated by your subscription plan.
📚 Reference: Claude Desktop MCP Setup
Goose is a command-line AI agent that supports MCP servers through its extension system.
Prerequisites:
Setup via CLI:
# Configure Goose
goose configure
# Choose: Add Extension
# Choose: Remote Extension
# Name: MCPProxy
# URL: http://localhost:8080/mcp/
# Timeout: 300 (default)
Setup via Configuration File:
Edit ~/.config/goose/config.yaml:
extensions:
mcpproxy:
type: "remote"
url: "http://localhost:8080/mcp/"
timeout: 300
Usage:
# Start Goose session
goose
# Check available tools
goose> What tools do you have?
# Use MCPProxy tools
goose> Help me search for files related to authentication
📚 Reference: Goose Documentation
Google Antigravity is an AI-powered IDE built on VS Code with deep Gemini integration and built-in MCP support.
⚠️ Important: Antigravity uses serverUrl (not url) for HTTP-based MCP servers. Using url will cause a connection error.
Config file location:
| Platform | Path |
|---|---|
| macOS | ~/.gemini/antigravity/mcp_config.json |
| Linux | ~/.gemini/antigravity/mcp_config.json |
| Windows | %USERPROFILE%\.gemini\antigravity\mcp_config.json |
Setup via UI:
Setup via Configuration File:
Edit your mcp_config.json:
{
"mcpServers": {
"mcpproxy": {
"serverUrl": "http://127.0.0.1:8080/mcp"
}
}
}
📝 Note: MCPProxy's MCP endpoint does not require API key authentication, so no headers block is needed. Antigravity does not support ${workspaceFolder} — use absolute paths in any server configuration.
📚 Reference: Antigravity MCP Documentation
MCPProxy supports secure HTTPS connections with automatic certificate generation. HTTP is enabled by default for immediate compatibility, but HTTPS provides enhanced security for production use.
Step 1: Install Certificate (One-time setup)
# Trust the mcpproxy CA certificate
mcpproxy trust-cert
This command will:
Step 2: Enable HTTPS
Choose one of these methods:
Option A: Environment Variable (Temporary)
export MCPPROXY_TLS_ENABLED=true
mcpproxy serve
Option B: Configuration File (Permanent)
Edit ~/.mcpproxy/mcp_config.json:
{
"listen": ":8080",
"tls": {
"enabled": true,
"require_client_cert": false,
"hsts": true
}
}
📚 For complete TLS configuration options: See Configuration Documentation - TLS/HTTPS.
Step 3: Update Client Configurations
After enabling HTTPS, update your client configurations to use https:// URLs:
Cursor IDE:
{
"MCPProxy": {
"type": "http",
"url": "https://localhost:8080/mcp/"
}
}
VS Code:
{
"mcp": {
"servers": {
"mcpproxy": {
"type": "http",
"url": "https://localhost:8080/mcp/"
}
}
}
}
Claude Desktop (with certificate trust):
{
"mcpServers": {
"mcpproxy": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://localhost:8080/mcp"],
"env": {
"NODE_EXTRA_CA_CERTS": "~/.mcpproxy/certs/ca.pem"
}
}
}
}
Basic HTTPS (Recommended):
{
"tls": {
"enabled": true
}
}
Advanced HTTPS with mTLS:
{
"tls": {
"enabled": true,
"require_client_cert": true,
"certs_dir": "~/.mcpproxy/certs",
"hsts": true
}
}
Configuration Options:
enabled: Enable/disable HTTPS (default: false)require_client_cert: Enable mutual TLS (mTLS) for client authenticationcerts_dir: Custom directory for certificates (default: {data_dir}/certs)hsts: Enable HTTP Strict Transport Security headers📚 For complete TLS configuration reference: See Configuration Documentation - TLS/HTTPS.
Certificate Locations:
~/.mcpproxy/certs/ca.pem~/.mcpproxy/certs/localhost.pem~/.mcpproxy/certs/*.key (automatically secured)View Certificate Details:
# View CA certificate info
openssl x509 -in ~/.mcpproxy/certs/ca.pem -text -noout
# Verify certificate chain
openssl verify -CAfile ~/.mcpproxy/certs/ca.pem ~/.mcpproxy/certs/localhost.pem
Regenerate Certificates:
# Remove existing certificates
rm -rf ~/.mcpproxy/certs
# Start mcpproxy with HTTPS (will generate new certificates)
MCPPROXY_TLS_ENABLED=true mcpproxy serve
# Trust the new certificate
mcpproxy trust-cert
Certificate Trust Issues:
If you get SSL/TLS errors, verify certificate trust:
# Test certificate trust
curl -f https://localhost:8080/health
# If it fails, re-trust the certificate
mcpproxy trust-cert --force
Claude Desktop Certificate Issues:
If Claude Desktop shows certificate errors:
NODE_EXTRA_CA_CERTS points to the correct certificate path/Users/yourusername/.mcpproxy/certs/ca.pemBrowser Certificate Warnings:
When accessing the Web UI at https://localhost:8080/ui/:
require_client_cert: true for maximum security in sensitive environmentsFind MCPProxy Process:
# macOS/Linux
ps aux | grep mcpproxy
lsof -i :8080
# Windows
tasklist | findstr mcpproxy
netstat -ano | findstr :8080
Command Line:
mcpproxy serve --listen :8081
mcpproxy serve --listen :9000
mcpproxy serve --listen 127.0.0.1:8080 # Bind to specific interface
Configuration File:
{
"listen": ":8081"
// ... rest of config
}
📚 For all network binding options: See Configuration Documentation - Basic Configuration.
Environment Variable:
export MCPPROXY_LISTEN=":8081"
mcpproxy serve
📝 Note: Environment variables are prefixed with MCPPROXY_. For example, MCPPROXY_LISTEN controls the listen address.
Run multiple MCPProxy instances on different ports:
# Instance 1 - Development
mcpproxy serve --config dev_config.json --listen :8080
# Instance 2 - Production
mcpproxy serve --config prod_config.json --listen :8081
1. Port Already in Use
# Kill process using port 8080
lsof -ti:8080 | xargs kill -9 # macOS/Linux
netstat -ano | findstr :8080 # Windows - note PID, then:
taskkill /PID <PID> /F # Windows
2. MCPProxy Not Starting
# Check logs
mcpproxy serve --log-level debug
# Check configuration
mcpproxy serve --config ~/.mcpproxy/mcp_config.json --log-level debug
3. Client Connection Issues
ps aux | grep mcpproxymcpproxy serve --listen :80814. Tools Not Appearing
retrieve_tools tool in your MCP client to test tool discoverymcpproxy tools list --server=SERVER_NAME to test individual servers5. Server Connection Problems
mcpproxy tools list --server=SERVER_NAME --log-level=traceTest MCPProxy Status:
# Check if MCPProxy is running
ps aux | grep mcpproxy
# Check port usage
lsof -i :8080
# View logs (with debug mode)
mcpproxy serve --log-level debug
Debug Individual Servers:
# List tools from a specific server with detailed debugging
mcpproxy tools list --server=github-server --log-level=trace
# Test slow servers with extended timeout
mcpproxy tools list --server=slow-server --timeout=60s
# Output tools in machine-readable format
mcpproxy tools list --server=weather-api --output=json
📝 Note: The mcpproxy tools list command is perfect for debugging connection issues, authentication problems, or verifying that a server is working correctly. It connects directly to the server, bypasses the proxy's cache, and shows detailed logging.
📝 Note: MCPProxy uses the MCP protocol over HTTP, not simple REST endpoints. Use MCP clients to interact with the server, not direct curl commands.
View Logs:
# Real-time logs (macOS/Linux)
tail -f ~/Library/Logs/mcpproxy/main.log
# Windows
Get-Content -Path "$env:LOCALAPPDATA\mcpproxy\logs\main.log" -Wait
# Filter logs for specific server debugging
tail -f ~/Library/Logs/mcpproxy/main.log | grep -E "(github-server|oauth|error)"
📚 For complete configuration reference: See Configuration Documentation for all available options.
{
"listen": "127.0.0.1:8080", // Bind to localhost only
"read_only_mode": true, // Prevent configuration changes
"disable_management": true, // Disable server management tools
"allow_server_add": false, // Prevent adding new servers
"allow_server_remove": false // Prevent removing servers
}
{
"tools_limit": 25, // More tools per request
"tool_response_limit": 50000 // Larger response limit
}
For servers requiring authentication:
{
"mcpServers": [
{
"name": "github",
"url": "https://api.github.com/mcp/",
"protocol": "http",
"oauth": {
"scopes": ["repo", "user"]
},
"enabled": true
}
]
}
Need help? Join our community or open an issue on GitHub.