Skip to main content
Glama

1MCP Server

proxy.md9.16 kB
# Proxy Command Start STDIO proxy to connect MCP clients that only support STDIO transport to a running 1MCP HTTP server. ## Synopsis ```bash npx -y @1mcp/agent proxy [options] ``` ## Description The `proxy` command creates a STDIO transport proxy that forwards all MCP protocol communications to a running 1MCP HTTP server. This enables MCP clients that only support STDIO transport (like Claude Desktop) to connect to centralized 1MCP HTTP servers with advanced features like authentication, filtering, and multi-client support. The proxy automatically discovers running 1MCP servers using multiple methods and provides a seamless bridge between STDIO and HTTP transports while supporting tag filtering and preset configurations. ## Auto-Discovery The proxy automatically discovers running 1MCP servers in this order: 1. **PID File** - Reads server URL from `~/.config/1mcp/server.pid` 2. **Port Scanning** - Scans common ports (3050, 3051, 3052) on localhost 3. **Environment Variables** - Uses `ONE_MCP_HOST` and `ONE_MCP_PORT` 4. **User Override** - Uses URL specified with `--url` option ## Project Configuration (.1mcprc) You can create a project-level configuration file named `.1mcprc` in your project directory to set default connection settings for the proxy command. This allows you to avoid repeating command-line options and share configuration across team members. ### Prerequisites **Project configuration is specifically designed for MCP clients that:** - **Do not support** HTTP or SSE (Server-Sent Events) transport - **Only support** STDIO transport (like Claude Desktop) - **Need to connect** to a running 1MCP HTTP server via proxy **Required setup:** 1. **Running 1MCP server**: Must have `npx -y @1mcp/agent serve` running on a port 2. **MCP client limitations**: Client cannot directly connect to HTTP/SSE endpoints 3. **Bridge requirement**: Need proxy to translate STDIO ↔ HTTP communications This configuration is **not needed** for MCP clients that can directly connect to HTTP/SSE endpoints. ### Configuration Priority Settings are loaded in this order (higher priority overrides lower): 1. **Command-line options** (highest priority) 2. **Project configuration file** (`.1mcprc`) 3. **Default values** (lowest priority) ### Configuration Structure Create a `.1mcprc` file in your project directory: ```json { // Project-level configuration for 1MCP proxy command // Use preset for team collaboration and configuration management "preset": "my-preset" } ``` ### Recommended Approach We recommend using presets for better configuration management and team collaboration: 1. **Create presets** for different environments (development, production, testing) 2. **Share presets** with team members for consistent configurations 3. **Switch environments** easily by changing the preset name ### Example Configurations #### Development Environment ```json { "preset": "dev-environment" } ``` #### Production Setup ```json { "preset": "production" } ``` #### Testing Environment ```json { "preset": "testing" } ``` Copy `.1mcprc.example` from the project root as a starting template. ## Options ### Connection Options - **`--url, -u <url>`** - Override auto-detected 1MCP server URL - **`--timeout, -t <ms>`** - Connection timeout in milliseconds (default: 10000) ### Filtering Options - **`--filter, -f <expression>`** - Filter expression for server selection - **`--preset, -P <name>`** - Load preset configuration (URL, filters, etc.) ### Global Options - **`--config-dir, -d <path>`** - Path to the config directory for discovery - **`--log-level <level>`** - Set log level (`debug`, `info`, `warn`, `error`) - **`--log-file <path>`** - Write logs to file ## Tag Filtering Use the `--filter` option to limit which MCP servers are exposed through the proxy: ### Simple Filtering (OR logic) ```bash --filter "web,api,database" # Exposes servers with ANY of these tags ``` ### Advanced Filtering (Boolean expressions) ```bash --filter "web AND database" # Servers with BOTH tags --filter "(web OR api) AND database" # Complex logic --filter "web AND NOT test" # Exclusion logic ``` ### Priority Order 1. `--filter` option (highest priority) 2. Preset tag query (if `--preset` specified) 3. `.1mcprc` configuration file (preset only) 4. No filtering (expose all servers) ## Examples ### Basic Usage ```bash # Auto-discover and connect to running 1MCP server npx -y @1mcp/agent proxy # Connect with debug logging npx -y @1mcp/agent proxy --log-level=debug # Use custom config directory for discovery npx -y @1mcp/agent proxy --config-dir=./test-config # Use project configuration file (.1mcprc) npx -y @1mcp/agent proxy ``` ### Specific Server Connection ```bash # Connect to specific server URL npx -y @1mcp/agent proxy --url http://localhost:3051/mcp # Connect with custom timeout npx -y @1mcp/agent proxy --url http://192.168.1.100:3051/mcp --timeout=5000 ``` ### Tag Filtering ```bash # Only expose servers with web and api tags npx -y @1mcp/agent proxy --filter "web AND api" # Expose development servers npx -y @1mcp/agent proxy --filter "dev OR test" # Complex filtering logic npx -y @1mcp/agent proxy --filter "(web OR mobile) AND NOT production" ``` ### Preset Integration ```bash # Load URL and filters from saved preset npx -y @1mcp/agent proxy --preset my-dev-setup # Use preset with custom config directory npx -y @1mcp/agent proxy --preset production --config-dir ./prod-config ``` ### Development and Testing ```bash # Development with full logging npx -y @1mcp/agent proxy \ --log-level=debug \ --log-file=proxy-debug.log \ --config-dir=./dev-config # Test specific server with filtering npx -y @1mcp/agent proxy \ --url http://localhost:3051/mcp \ --filter "filesystem,editing" \ --timeout=15000 # Use project configuration in development # Create .1mcprc file with your dev preset echo '{"preset": "dev-setup"}' > .1mcprc npx -y @1mcp/agent proxy ``` ## Authentication Considerations ### STDIO Transport Limitations - STDIO transport does **not** support OAuth 2.1 authentication - STDIO clients cannot authenticate with servers that have auth enabled ### Recommended Setup #### For STDIO Clients (Claude Desktop, etc.) ```bash # Start server WITHOUT authentication for STDIO clients npx -y @1mcp/agent serve --port=3051 # Start proxy (will work out of the box) npx -y @1mcp/agent proxy ``` #### For HTTP/SSE Clients ```bash # Start server WITH authentication for web clients npx -y @1mcp/agent serve --port=3052 --enable-auth # HTTP/SSE clients can authenticate via OAuth curl "http://localhost:3052/mcp?app=cursor" ``` ### Mixed Environment Strategy Run separate server instances for different client types: - **Port 3051**: No auth for STDIO clients (via proxy) - **Port 3052**: With auth for HTTP/SSE clients ## Workflow Integration ### Typical Development Workflow 1. **Start 1MCP Server** ```bash npx -y @1mcp/agent serve --port=3051 ``` 2. **Add MCP Servers** ```bash npx -y @1mcp/agent mcp add filesystem -- npx mcp-server-filesystem npx -y @1mcp/agent mcp add github -- npx mcp-server-github ``` 3. **Create Preset (Optional)** ```bash npx -y @1mcp/agent preset create dev --filter "filesystem,github" ``` 4. **Start Proxy** ```bash npx -y @1mcp/agent proxy --preset dev ``` 5. **Configure Client** - Point Claude Desktop to the proxy command - Client communicates via STDIO to proxy - Proxy forwards to HTTP server with filtering ### Production Deployment ```bash # Production server with filtering npx -y @1mcp/agent serve \ --port=3051 \ --enable-enhanced-security # Production proxy with preset npx -y @1mcp/agent proxy \ --preset production \ --log-level=info \ --config-dir /etc/1mcp ``` ## Troubleshooting ### Common Issues #### Server Not Found ```bash # Check if server is running npx -y @1mcp/agent mcp status # Verify server URL manually curl http://localhost:3051/mcp ``` #### Connection Timeout ```bash # Increase timeout for slow servers npx -y @1mcp/agent proxy --timeout=30000 # Check network connectivity netstat -an | grep 3051 ``` #### Filter Not Working ```bash # Use debug logging to see filtering details npx -y @1mcp/agent proxy --filter "web" --log-level=debug # Verify server tags npx -y @1mcp/agent mcp list --tags=web ``` ### Debug Information Enable debug logging to troubleshoot issues: ```bash npx -y @1mcp/agent proxy --log-level=debug ``` Debug output shows: - Server discovery attempts - Connection establishment details - Tag parsing and filtering logic - MCP protocol forwarding ## See Also - **[Serve Command](./serve.md)** - Starting 1MCP servers - **[MCP Commands](./mcp/)** - Managing MCP server configurations - **[Preset Commands](./preset/)** - Creating and managing presets - **[Configuration Guide](../guide/essentials/configuration.md)** - Configuration options - **[Claude Desktop Integration](../guide/integrations/claude-desktop.md)** - Desktop client setup - **[Architecture Reference](../reference/architecture.md)** - Transport layer details

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1mcp-app/agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server