Aggregates upstream MCP servers and LLM providers behind a single authenticated HTTP endpoint with caching, cost tracking, and observability.
Also known as ENTERPILOT/GoModel
- Stars
- 1,320
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.2.3
- Last commit
- Nov 13, 2026
- License
- MIT
What is GoModel MCP?
GoModel aggregates upstream MCP servers and LLM providers behind a single authenticated HTTP endpoint with caching, cost tracking, and observability.
Summary generated from the project's README
About GoModel MCP server
GoModel acts as a centralized AI gateway that aggregates various LLM providers and MCP servers behind a single authenticated HTTP endpoint. It is designed for developers and teams who need to manage multiple AI services while maintaining control over costs and reliability. The system supports a wide range of providers including OpenAI, Anthropic, Google Gemini, and Ollama, as well as OpenAI-compatible services. Users can deploy the server via Docker, macOS, Linux, or Windows.
This gateway provides advanced management features such as exact and semantic response caching to reduce repeated costs, alongside detailed cost tracking and usage analytics. It includes tools for setting hard spend limits through budgets and managing request volume via rate limits. Developers can use the dashboard to monitor observability metrics, manage virtual models for load balancing, and implement failover strategies with circuit breakers. The server is compatible with official OpenAI and Anthropic SDKs by adjusting the base URL to point to the local or remote GoModel instance.
What you can do with it
- 1Consolidate multiple AI servicesA developer can aggregate various MCP servers and LLM providers behind one authenticated endpoint.
- 2Reduce API expensesYou can use semantic caching to ensure that repeated prompts do not incur additional costs.
- 3Monitor and limit spendingTeams can set hard spending limits for specific users or keys to prevent budget overruns.
Written from the project's README. Every use case is checked against a quote from it.
How to install GoModel MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall GoModel MCP in Claude Code
$ claude mcp add --env 'GOMODEL_MASTER_KEY=<YOUR_GOMODEL_MASTER_KEY>' gomodel -- docker run -i --rm docker.io/enterpilot/gomodel:0.2.3Install GoModel MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"gomodel": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/enterpilot/gomodel:0.2.3"
],
"env": {
"GOMODEL_MASTER_KEY": "<YOUR_GOMODEL_MASTER_KEY>"
}
}
}
}Install GoModel MCP in VS Code
.vscode/mcp.json
{
"servers": {
"gomodel": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/enterpilot/gomodel:0.2.3"
],
"env": {
"GOMODEL_MASTER_KEY": "<YOUR_GOMODEL_MASTER_KEY>"
}
}
}
}Install GoModel MCP in VS Code CLI
$ code --add-mcp '{"name":"gomodel","type":"stdio","command":"docker","args":["run","-i","--rm","docker.io/enterpilot/gomodel:0.2.3"],"env":{"GOMODEL_MASTER_KEY":"<YOUR_GOMODEL_MASTER_KEY>"}}'Install GoModel MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"gomodel": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/enterpilot/gomodel:0.2.3"
],
"env": {
"GOMODEL_MASTER_KEY": "<YOUR_GOMODEL_MASTER_KEY>"
}
}
}
}Install GoModel MCP in Codex
$ codex mcp add gomodel --env 'GOMODEL_MASTER_KEY=<YOUR_GOMODEL_MASTER_KEY>' -- docker run -i --rm docker.io/enterpilot/gomodel:0.2.3Install GoModel MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.gomodel] command = "docker" args = ["run", "-i", "--rm", "docker.io/enterpilot/gomodel:0.2.3"] [mcp_servers.gomodel.env] GOMODEL_MASTER_KEY = "<YOUR_GOMODEL_MASTER_KEY>"
Install GoModel MCP in Gemini CLI
$ gemini mcp add -s user -e 'GOMODEL_MASTER_KEY=<YOUR_GOMODEL_MASTER_KEY>' gomodel docker -- run -i --rm docker.io/enterpilot/gomodel:0.2.3Install GoModel MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"gomodel": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/enterpilot/gomodel:0.2.3"
],
"env": {
"GOMODEL_MASTER_KEY": "<YOUR_GOMODEL_MASTER_KEY>"
}
}
}
}Configuration
GOMODEL_MASTER_KEYSecretGateway API key clients authenticate with; unset runs the gateway in unsafe (no-auth) mode.
MCP_SERVERSJSON object of upstream MCP servers to aggregate, e.g. {"github":{"url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer ${GITHUB_PAT}"}}}. Servers can also be declared in config.yaml or the admin dashboard.
| Name | Description | |
|---|---|---|
| GOMODEL_MASTER_KEY | Gateway API key clients authenticate with; unset runs the gateway in unsafe (no-auth) mode. | Secret |
| MCP_SERVERS | JSON object of upstream MCP servers to aggregate, e.g. {"github":{"url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer ${GITHUB_PAT}"}}}. Servers can also be declared in config.yaml or the admin dashboard. |
Automated checks
Ran Nov 12, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packageNot checked
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesNot checked
README
View on GitHubQuick Start
Step 1: Install and start GoModel
Docker
docker run --rm -p 8080:8080 \
-v gomodel_data:/app/data \
enterpilot/gomodel
macOS / Linux
curl -fsSL https://gomodel.enterpilot.io/install.sh | sh
# OPENAI_API_KEY="your-openai-key" # (optional)
gomodel
Windows (PowerShell)
irm https://gomodel.enterpilot.io/install.ps1 | iex
# $env:OPENAI_API_KEY = "your-openai-key" # (optional)
gomodel
ℹ️ Configure GoModel with .env, a config.yaml file, or manage the most important settings directly in the dashboard.
ℹ️ See .env.template for the complete list of environment variables, including all available providers.
Step 2: Open the dashboard and add a provider
http://localhost:8080/admin/dashboard
Step 3: Make an API call
curl http://localhost:8080/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5-chat-latest",
"input": "Hello!"
}'
GoModel and official SDKs
GoModel accepts requests in two compatible formats:
- OpenAI-compatible at
/v1 - Anthropic-compatible at
/v1/messages
The official SDKs therefore work unchanged. Configure their base URLs as follows:
- OpenAI SDK:
http://localhost:8080/v1 - Anthropic SDK:
http://localhost:8080(the SDK appends/v1/messages)
List of Supported LLM Providers
- OpenAI
- Anthropic
- xAI (Grok)
- Google Gemini
- Cohere
- Vertex AI
- DeepSeek
- Groq
- Fireworks AI
- Together AI
- Meta (Muse Spark)
- OpenRouter
- Z.ai
- Alibaba Cloud Model Studio (Bailian)
- Kilo AI
- Eden AI
- MiniMax
- Mistral AI
- Xiaomi MiMo
- OpenCode Go
- Azure OpenAI
- Oracle
- Ollama
- SGLang
- vLLM
- llm-d
- Amazon Bedrock Runtime and Bedrock Mantle
- ChatGPT (the Codex backend) and Claude
- GitHub Copilot
- ElevenLabs (text-to-speech and speech-to-text)
- Jev (TypeSafe System One decision API) and self-hosted Kev, also behind OpenAI's Decisions API
- All OpenAI-compatible providers
See the Providers Overview for the full per-provider feature matrix.
Docker Compose
Infrastructure only (Redis, PostgreSQL, MongoDB, Adminer - no image build):
cp .env.template .env
# Add your API keys to .env
docker compose up -d
# or: make infra
Full stack (adds GoModel + Prometheus; builds the app image):
docker compose --profile app up -d
# or: make image
API docs
Gateway Configuration
GoModel resolves configuration in the following order, with each source overriding those to its left:
Good defaults → config.yaml → .env → exported environment variables
See the Configuration reference for the full list of settings.
Features
- Caching - exact and semantic response caching, so repeated prompts cost nothing
- Cost tracking - per-request cost estimates, usage analytics, and spending breakdowns in the dashboard
- Budgets - hard spend limits per user, team, or key
- Rate limits - requests, tokens, and concurrency caps per user path, provider, or model
- Usage API - clients check their own usage, remaining budget, and rate-limit headroom with the key they already use for inference
- Virtual models - aliases and load balancing (round-robin or cost-based) behind stable model names
- Session keeping - detect a client session and pin it to one target and provider key, so provider prompt caches stay warm and audit logs read as threads
- Failover - automatic rerouting to backup providers, with retries and circuit breakers
- Labelling - tag requests from HTTP headers or API keys and break down usage by label
- User paths - hierarchical scoping of keys, model access, budgets, usage, and audit logs
- Model access control - per-group, per-user, and per-key model allowlists that intersect down the user-path tree
- MCP gateway - aggregate your MCP servers behind one authenticated endpoint
- Passthrough API - provider-native APIs under
/p/{provider}/..., with GoModel auth and tracking - Audio and image APIs - OpenAI-compatible text-to-speech, transcription, and image generation and editing with the same access rules, budgets, and cost tracking as chat
- Provider replay state - preserves Gemini thought signatures and Anthropic thinking blocks across turns, APIs, and providers
- Guardrails - request and response policies enforced at the gateway
- Plugins - one contract for guardrails, response and stream filters, header edits, and routing strategies; built in, compiled in, or loaded from a
.soat startup - Workflows - versioned per-request policies that scope cache, budgets, audit logging, guardrail phases, and failover by user path, provider, or model
- Provider key rotation - round-robin over multiple API keys to lift per-key rate limits
- Observability - Prometheus metrics, OpenTelemetry traces, audit logs, and live request streaming in the dashboard
- Playground - try any model or virtual model from the dashboard and inspect the exact request and response JSON
GoModel Pro
GoModel Pro is the commercial build: the same gateway, configuration, and dashboard, with licensed extensions.
- Prompt compression - remove repeated and structural context before it reaches the provider, without changing the request shape
- Intelligent routing - classify each request as easy or hard, then pick the healthiest and cheapest provider in that tier
- OIDC single sign-on - protect the dashboard with your identity provider using Authorization Code flow with PKCE
More in the documentation...
Not ready for Pro? Sponsor GoModel to keep the open-source gateway moving.
Roadmap
See the roadmap for GoModel Pro and the upcoming 0.3.0 release.
Featured Sponsors
Goal: $1K/month - ~15% achieved!
If GoModel saves you money or time, become a sponsor or try GoModel Pro.
Community
We are on Discord. Feel free to stop by and tell us what you think about GoModel.
GoModel MCP questions
How do I add GoModel MCP to Claude Code?
Run claude mcp add --env 'GOMODEL_MASTER_KEY=<YOUR_GOMODEL_MASTER_KEY>' gomodel -- docker run -i --rm docker.io/enterpilot/gomodel:0.2.3 in your terminal. Add --scope user to make it available in every project.
How do I add GoModel MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.