Skip to content

Quickstart

This guide uses bearer token authentication for simplicity. For production deployments with OAuth, see the Identity Providers guide.

Create config.json:

{
"version": "v0.0.1-DEV_EDITION_EXPECT_CHANGES",
"proxy": {
"baseURL": "http://localhost:8080",
"addr": ":8080"
},
"mcpServers": {
"filesystem": {
"transportType": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
"serviceAuths": [
{
"type": "bearer",
"tokens": ["dev-token-123"]
}
]
}
}
}

The server name filesystem determines the URL path: /filesystem/sse.

Terminal window
go install github.com/stainless-api/mcp-front/cmd/mcp-front@main
mcp-front -config config.json
Terminal window
docker run -p 8080:8080 \
-v $(pwd)/config.json:/app/config.json \
docker.io/dgellow/mcp-front:latest
Terminal window
git clone https://github.com/stainless-api/mcp-front
cd mcp-front
go build -o mcp-front ./cmd/mcp-front
./mcp-front -config config.json

In Claude.ai, go to Settings and add a new MCP server. Set the URL to http://localhost:8080/filesystem/sse, auth type to Bearer Token, and token to dev-token-123.

Ask Claude: “What MCP tools do you have available?”

You should see the filesystem tools from your MCP server.

Switch to OAuth authentication for production. Add more MCP servers to your config. Or, configure services that require per-user authentication by following the Service Authentication guide.

Terminal window
curl http://localhost:8080/health

Should return {"status":"ok"}. If not, verify the process is running and port 8080 isn’t already in use.

The token in Claude must match one of the tokens in the serviceAuths array for that server. Double-check the token string is identical — no extra whitespace or encoding differences. Check logs for details (docker logs <container-id> for Docker, or stdout for the binary).

This usually means MCP Front can’t start the MCP server process. Test the server directly:

Terminal window
npx -y @modelcontextprotocol/server-filesystem /tmp

If that fails, the server itself has a problem. If it works, check MCP Front logs for errors — the command might not be in PATH inside the container.