Skip to main content

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.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.

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.4.0.tar.gz (195.1 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.4.0-py3-none-any.whl (170.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vox_mcp-0.4.0.tar.gz
  • Upload date:
  • Size: 195.1 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.4.0.tar.gz
Algorithm Hash digest
SHA256 7cfbfbe5d786a7759c68717769d594a63d42497a9adb45eef5c6a6b802099f3e
MD5 567ff38664a7860cb05f41176e34c3f1
BLAKE2b-256 f2b9e3170f0189e14950b6ba04f051785cc9428a5351eb3ea70e21af5a6fcb7f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vox_mcp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 170.4 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e23037908ac16afca40fbdcbab48d70c204e99a44813fb9c5613ba5da467292c
MD5 05f6884ac731e3257d3020593963e8c8
BLAKE2b-256 7927d6768589ce8b36a0047de3ed50376671031ef7d4f340854e435e9d34bed2

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