Skip to main content
Glama
deslicer

MCP Server for Splunk

direct-access-guide.md7.58 kB
# Direct Access to MCP Server (Bypassing Traefik) ## Overview This guide explains how to access the MCP server directly without going through the Traefik reverse proxy. ## Configuration ### Port Mapping The MCP server is now accessible on **two ports**: | Access Method | URL | Port | Description | |--------------|-----|------|-------------| | **Direct** | `http://localhost:8004/mcp` | 8004 | Direct container access (bypasses Traefik) | | **Via Traefik** | `http://localhost:8003/mcp` | 8003 | Through Traefik reverse proxy | ### Docker Compose Configuration In `docker-compose-dev.yml`, the MCP server exposes port 8004: ```yaml mcp-server-dev: ports: # Direct access to MCP server (bypasses Traefik) - "8004:8003" # Host:8004 -> Container:8003 ``` **How it works:** - Container runs on port `8003` internally (set by `MCP_SERVER_PORT`) - Port `8004` on host maps to container port `8003` - Port `8003` on host is used by Traefik ## Usage ### Health Check ```bash # Direct access curl http://localhost:8004/health # Via Traefik curl http://localhost:8003/health ``` **Response:** ```json { "status": "healthy", "server": { "name": "MCP Server for Splunk", "version": "0.3.1", "transport": "http" }, "splunk_connection": "connected", "splunk_info": { "version": "9.3.2", "serverName": "splunk-aws-demo-itsi-prod-shm-1201" } } ``` ### MCP Endpoint The MCP endpoint requires proper headers for Streamable HTTP transport: ```bash # Direct access curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: text/event-stream" \ http://localhost:8004/mcp # Via Traefik curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: text/event-stream" \ http://localhost:8003/mcp ``` ## MCP Client Configuration ### Claude Desktop (Direct Access) Update your `claude_desktop_config.json`: ```json { "mcpServers": { "splunk": { "url": "http://localhost:8004/mcp", "transport": "streamable-http" } } } ``` ### MCP Inspector (Direct Access) Update the Inspector to use direct access: ```bash npx @modelcontextprotocol/inspector \ --transport streamable-http \ --server-url http://localhost:8004/mcp ``` ## Benefits of Direct Access ### ✅ Advantages 1. **Lower Latency**: No reverse proxy overhead 2. **Simpler Debugging**: Direct connection to server 3. **Fewer Dependencies**: Doesn't require Traefik 4. **Clearer Logs**: Server logs show real client IPs ### ⚠️ Disadvantages 1. **No Load Balancing**: Can't distribute across multiple instances 2. **No HTTPS**: Direct connection is HTTP only 3. **No Middleware**: Missing Traefik's CORS and rate limiting 4. **Less Production-Ready**: Traefik provides enterprise features ## When to Use Each Method | Scenario | Recommended | Reason | |----------|-------------|--------| | **Local Development** | Direct (8004) | Faster, simpler debugging | | **Testing** | Direct (8004) | Isolated testing | | **Production** | Traefik (8003) | Load balancing, HTTPS, security | | **Multiple Clients** | Traefik (8003) | Better traffic management | | **Debugging** | Direct (8004) | Clearer connection issues | ## Troubleshooting ### Connection Refused ```bash # Check if port is exposed docker ps --filter "name=mcp-server" --format "table {{.Names}}\t{{.Ports}}" # Should show: # mcp-server-dev 0.0.0.0:8004->8003/tcp ``` ### Empty Reply from Server **Cause:** Server is still starting up **Solution:** ```bash # Wait for server to be ready docker logs mcp-server-dev -f # Look for: # INFO: Uvicorn running on http://0.0.0.0:8003 ``` ### Wrong Port If you see errors connecting to port 8003 directly: ```bash # Direct access uses port 8004 curl http://localhost:8004/health # ✅ Correct # Port 8003 goes through Traefik curl http://localhost:8003/health # ✅ Also works (via Traefik) ``` ## Network Architecture ``` ┌─────────────────────────────────────────────────────────────┐ │ Your Machine │ │ │ │ ┌──────────────────┐ ┌─────────────────────────┐ │ │ │ Your Client │ │ Docker Container │ │ │ │ (Browser/CLI) │ │ │ │ │ └──────────────────┘ │ ┌──────────────────┐ │ │ │ │ │ │ MCP Server │ │ │ │ │ │ │ Port: 8003 │ │ │ │ │ │ └──────────────────┘ │ │ │ │ │ │ │ │ │ └─────────────────────────┘ │ │ │ │ │ │ │ │ │ │ ├───────────────────────────────────┤ │ │ │ │ │ │ Port 8004 Port 8003 │ │ (Direct Access) (Via Traefik) │ │ │ └───────────────────────────────────────────────────────────────┘ Direct Access (8004): localhost:8004 → Docker Port 8003 → MCP Server Traefik Access (8003): localhost:8003 → Traefik → Docker Port 8003 → MCP Server ``` ## Security Considerations ### Development Mode Current configuration is suitable for **local development only**: ```yaml environment: - MCP_AUTH_DISABLED=true - DANGEROUSLY_OMIT_AUTH=true ``` ### Production Deployment For production, you should: 1. **Use Traefik** (port 8003) instead of direct access 2. **Enable authentication** 3. **Use HTTPS** with valid certificates 4. **Remove direct port exposure** (comment out port 8004) 5. **Configure firewall rules** 6. **Enable rate limiting** in Traefik ## Testing Both Endpoints ### Automated Test Script ```bash #!/bin/bash echo "Testing Direct Access (port 8004)..." curl -s http://localhost:8004/health | jq '.status' echo "" echo "Testing Traefik Access (port 8003)..." curl -s http://localhost:8003/health | jq '.status' echo "" echo "Both should return: healthy" ``` ### Response Time Comparison ```bash # Direct access timing time curl -s http://localhost:8004/health > /dev/null # Traefik access timing time curl -s http://localhost:8003/health > /dev/null ``` **Expected results:** - Direct access: ~5-10ms faster (no proxy overhead) - Both should work reliably ## Summary You now have **two ways** to access your MCP server: 1. **Direct Access** (`localhost:8004`): Best for development and debugging 2. **Traefik Access** (`localhost:8003`): Best for production and scaling Choose based on your needs, and remember that **both can run simultaneously** for maximum flexibility! 🚀

Latest Blog Posts

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/deslicer/mcp-for-splunk'

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