Skip to main content

Multi-model AI gateway for MCP clients — routes prompts to Gemini, OpenAI, Anthropic, xAI, DeepSeek, Moonshot, OpenRouter, and local models with conversation memory

Project description

Vox MCP

Multi-model AI gateway for MCP clients.

Why

MCP clients like Claude Code, Claude Desktop, and Cursor are locked to their host model. Vox gives them access to every other model — Gemini, GPT, Grok, DeepSeek, Kimi, or your local Ollama — through a single chat tool.

The design is deliberately minimal: prompts go to providers unmodified, responses come back unmodified. No system prompt injection. No response formatting. No behavioral directives. The only value Vox adds is routing and conversation memory — everything else is pure passthrough.

What it does

Send a prompt, optionally attach files or images, pick a model (or let the agent pick), and get back the model's raw response. Conversation threads persist in memory via continuation_id for multi-turn exchanges across any provider — start a thread with Gemini, continue it with GPT. Threads are shadow-persisted to disk as JSONL for durability and can be exported as Markdown.

3 tools:

Tool Description
chat Send prompts to any configured AI model with optional file/image context
listmodels Show available models, aliases, and capabilities
dump_threads Export conversation threads as JSON or Markdown

8 providers:

Provider Env Variable Example Models
Google Gemini GEMINI_API_KEY gemini-2.5-pro
OpenAI OPENAI_API_KEY gpt-5.1, gpt-5, o3, o4-mini
Anthropic ANTHROPIC_API_KEY claude-4-opus, claude-4-sonnet
xAI XAI_API_KEY grok-3, grok-3-fast
DeepSeek DEEPSEEK_API_KEY deepseek-v4-pro
Moonshot (Kimi) MOONSHOT_API_KEY kimi-k2-thinking-turbo, kimi-k2.6
OpenRouter OPENROUTER_API_KEY Any OpenRouter model
Custom CUSTOM_API_URL Ollama, vLLM, LM Studio, etc.

Quick start

git clone https://github.com/linxule/vox-mcp.git
cd vox-mcp
cp .env.example .env
# Edit .env — add at least one API key
uv sync
uv run python server.py

MCP client configuration

Vox runs as a stdio MCP server. Each client needs to know how to launch it.

Replace /path/to/vox-mcp with the absolute path to your cloned repo.

Claude Code (CLI)

claude mcp add vox-mcp \
  -e GEMINI_API_KEY=your-key-here \
  -- uv run --directory /path/to/vox-mcp python server.py

Or add to .mcp.json in your project root:

{
  "mcpServers": {
    "vox-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/vox-mcp", "python", "server.py"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "vox-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/vox-mcp", "python", "server.py"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "vox-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/vox-mcp", "python", "server.py"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "vox-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/vox-mcp", "python", "server.py"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}

Any MCP client

The canonical stdio configuration:

{
  "mcpServers": {
    "vox-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/vox-mcp", "python", "server.py"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}

Tips:

  • Paths must be absolute
  • You only need one API key to start — add more providers later via .env
  • The .env file in the vox-mcp directory is loaded automatically, so API keys can go there instead of in the client config
  • Use VOX_FORCE_ENV_OVERRIDE=true in .env if client-passed env vars conflict with your .env values

Configuration

Copy .env.example to .env and configure:

  • API keys — at least one provider key is required
  • DEFAULT_MODELauto (default, agent picks) or a specific model name
  • Model restrictionsGOOGLE_ALLOWED_MODELS, OPENAI_ALLOWED_MODELS, etc.
  • CONVERSATION_TIMEOUT_HOURS — thread TTL (default: 24h)
  • MAX_CONVERSATION_TURNS — thread length limit (default: 100)

See .env.example for the full reference.

Development

uv sync
uv run python -c "import server"   # smoke test
uv run pytest                       # run tests

See CONTRIBUTING.md for code style, project structure, and how to add providers.

License

Apache 2.0 — see LICENSE and NOTICE.

Derived from pal-mcp-server by Beehive Innovations.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vox_mcp-0.2.0.tar.gz (186.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vox_mcp-0.2.0-py3-none-any.whl (167.1 kB view details)

Uploaded Python 3

File details

Details for the file vox_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: vox_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 186.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vox_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 337740551ed608f1cf823345b79d93bb449b22d298fb0d4d5fe4044db5a6de6a
MD5 f0d358a78cce025261b8b229bbb44e1d
BLAKE2b-256 a0e00ec6cb1556cc680d203034e845f03011f92146c19d61447a2f3ed152e504

See more details on using hashes here.

File details

Details for the file vox_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: vox_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 167.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vox_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48e1dcd21dba6efdad884c8a4b25bb57ed73094f820785b60508e0ead7f76df4
MD5 eb979010a74c546621ce952f586ee665
BLAKE2b-256 c32eff779f61a0afd70a65fcb3802b26469cb8713332bfe21b1074718b55df1f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page