mcp-ollama-account-rotation
mcp-ollama-account-rotation
MCP server that transparently routes Ollama Cloud API requests across multiple user-owned accounts, handling quota exhaustion, rate limits, and failures via automatic account rotation.
Architecture
┌──────────────────────────────────────────┐
│ MCP Client │
│ (Claude Code / OpenCode / etc.) │
└─────────────────┬────────────────────────┘
│ MCP Protocol (stdio/SSE)
▼
┌──────────────────────────────────────────┐
│ FastMCP Server │
│ Tools: chat, generate, list_models │
│ Resources: models://, accounts:// │
├──────────────────────────────────────────┤
│ Request Router │
│ select account → forward → classify │
├──────────────────────────────────────────┤
│ Account Manager │ Retry Engine │
│ State Manager │ Health Checker │
│ HTTP Client │ Logger/Metrics │
└──────────────────────────────────────────┘
│
▼
Ollama Cloud API
https://api.ollama.comInstallation
# Prerequisites: Python 3.11+
pip install -e .
# Or with uv:
uv syncConfiguration
Edit data/config.yaml:
ollama_base_url: "https://api.ollama.com"
retry:
max_attempts: 3
backoff_base: 2.0
backoff_max: 60.0
jitter: 0.1
rotation:
strategy: "round_robin"
health:
interval_seconds: 60
timeout_seconds: 10
timeouts:
request_seconds: 60
connect_seconds: 10
logging:
level: "INFO"
format: "json"
output: "console"Account Setup
Add accounts to data/accounts.json:
{
"accounts": [
{
"email": "user1@example.com",
"api_key": "ollama-api-key-1"
},
{
"email": "user2@example.com",
"api_key": "ollama-api-key-2"
}
]
}Usage
CLI
# stdio transport (default)
ollama-router
# custom config
ollama-router -c /path/to/config.yaml
# SSE transport
ollama-router --transport sse --port 8000MCP Client Integration
OpenCode (opencode.json):
{
"mcpServers": {
"ollama-router": {
"command": "ollama-router",
"args": ["-c", "data/config.yaml"]
}
}
}Claude Code (claude.json):
{
"mcpServers": {
"ollama-router": {
"command": "ollama-router",
"args": ["-c", "data/config.yaml"]
}
}
}Tools
Tool | Description |
| Send chat completion request |
| Send text generation request |
| List available models |
| Show current active account |
| Show server metrics |
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Type checking
mypy app
# Linting
ruff check app
ruff format appLog Events
Event | Description |
| Server starts |
| Server stops |
| Account chosen for request |
| Rotated to different account |
| Retrying failed request |
| Health check succeeded |
| No healthy accounts |
License
MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/irad-bouzidi/mcp-ollama-account-rotation'
If you have feedback or need assistance with the MCP directory API, please join our Discord server