β
node --version
npm install -g @anthropic-ai/claude-code
npm install -g @musistudio/claude-code-router
mkdir "$env:USERPROFILE\.claude-code-router"
mkdir "$env:USERPROFILE\.claude"
notepad "$env:USERPROFILE\.claude-code-router\config.json"
Paste the following minimal Gemini config:
{
"LOG": true,
"LOG_LEVEL": "info",
"HOST": "127.0.0.1",
"PORT": 3456,
"API_TIMEOUT_MS": 600000,
"Providers": [
{
"name": "gemini",
"api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
"api_key": "$GOOGLE_API_KEY",
"models": ["gemini-2.5-flash", "gemini-2.0-flash"],
"transformer": { "use": ["gemini"] }
}
],
"Router": {
"default": "gemini,gemini-2.5-flash",
"background": "gemini,gemini-2.5-flash",
"think": "gemini,gemini-2.5-flash",
"longContext": "gemini,gemini-2.5-flash",
"longContextThreshold": 60000
}
}
Save & close.
[System.Environment]::SetEnvironmentVariable('GOOGLE_API_KEY', 'YOUR_KEY_HERE', 'User')
Restart PowerShell β verify:
echo $env:GOOGLE_API_KEY
npm install -g @anthropic-ai/claude-code @musistudio/claude-code-router
mkdir -p ~/.claude-code-router ~/.claude
cat > ~/.claude-code-router/config.json << 'EOF'
{
"LOG": true,
"LOG_LEVEL": "info",
"HOST": "127.0.0.1",
"PORT": 3456,
"API_TIMEOUT_MS": 600000,
"Providers": [
{
"name": "gemini",
"api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
"api_key": "$GOOGLE_API_KEY",
"models": ["gemini-2.5-flash", "gemini-2.0-flash"],
"transformer": { "use": ["gemini"] }
}
],
"Router": {
"default": "gemini,gemini-2.5-flash",
"background": "gemini,gemini-2.5-flash",
"think": "gemini,gemini-2.5-flash",
"longContext": "gemini,gemini-2.5-flash",
"longContextThreshold": 60000
}
}
EOF
zsh:
echo 'export GOOGLE_API_KEY="YOUR_KEY_HERE"' >> ~/.zshrc
source ~/.zshrc
bash:
echo 'export GOOGLE_API_KEY="YOUR_KEY_HERE"' >> ~/.bashrc
source ~/.bashrc
Replace your config with this to enable Gemini + OpenAI + Qwen + Grok + OpenRouter:
{
"LOG": true,
"LOG_LEVEL": "info",
"HOST": "127.0.0.1",
"PORT": 3456,
"API_TIMEOUT_MS": 600000,
"Providers": [
{
"name": "gemini",
"api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
"api_key": "$GOOGLE_API_KEY",
"models": ["gemini-2.5-flash","gemini-2.0-flash"],
"transformer": { "use": ["gemini"] }
},
{
"name": "openai",
"api_base_url": "https://api.openai.com/v1",
"api_key": "$OPENAI_API_KEY",
"models": ["gpt-5", "gpt-4o-mini"],
"transformer": { "use": ["openai"] }
},
{
"name": "qwen",
"api_base_url": "https://api.qwen.ai",
"api_key": "$QWEN_API_KEY",
"models": ["qwen-2.5", "qwen-3-coder"],
"transformer": { "use": ["qwen"] }
},
{
"name": "grok",
"api_base_url": "https://api.x.ai",
"api_key": "$XAI_API_KEY",
"models": ["grok-4.1-fast", "grok-3"],
"transformer": { "use": ["grok"] }
},
{
"name": "openrouter",
"api_base_url": "https://openrouter.ai/api/v1/chat/completions",
"api_key": "$OPENROUTER_API_KEY",
"models": ["google/gemini-2.5-pro-preview","anthropic/claude-3.5-sonnet"],
"transformer": { "use": ["openrouter"] }
}
],
"Router": {
"default": "gemini,gemini-2.5-flash",
"background": "openai,gpt-4o-mini",
"think": "openai,gpt-5",
"fallback": [
"openai,gpt-4o-mini",
"openrouter,google/gemini-2.5-pro-preview",
"grok,grok-4.1-fast"
],
"longContext": "grok,grok-4.1-fast",
"longContextThreshold": 60000
}
}
[System.Environment]::SetEnvironmentVariable('OPENAI_API_KEY','sk-xxxx','User')
[System.Environment]::SetEnvironmentVariable('QWEN_API_KEY','qwen-xxxx','User')
[System.Environment]::SetEnvironmentVariable('XAI_API_KEY','xai-xxxx','User')
[System.Environment]::SetEnvironmentVariable('OPENROUTER_API_KEY','or-xxxx','User')
ccr start
or Linux:
ccr start
Wait for:
β Service started successfully
ccr code
or:
eval "$(ccr activate)"
claude
Test:
hi
python -m venv .venv
source .venv/bin/activate
pip install modelcontextprotocol
mcp_server.py)from modelcontextprotocol import FastMCP
mcp = FastMCP()
@mcp.tool()
async def list_files(path: str = "."):
import os
return "
".join(os.listdir(path))
if __name__ == "__main__":
mcp.run(transport="stdio")
Run:
python mcp_server.py
127.0.0.1.You now have: