Skip to main content

Let your MCP-aware agent consult rival LLMs (OpenAI, Gemini, Anthropic, Grok) mid-conversation.

Project description

mcp-second-opinion

Let your MCP-aware agent consult rival LLMs mid-conversation. One simple MCP server, four providers — OpenAI, Google Gemini, Anthropic, xAI/Grok — unified behind two tools.

Install

pip install mcp-second-opinion

or with uv:

uv add mcp-second-opinion

Configure

Set at least one of these environment variables:

Variable Provider
OPENAI_API_KEY OpenAI
GEMINI_API_KEY Google Gemini
ANTHROPIC_API_KEY Anthropic
XAI_API_KEY xAI/Grok

Providers without a key set are gracefully disabled — they appear in panel responses with a friendly error field rather than crashing the server.

Optional:

Variable Default Purpose
MCP_SECOND_OPINION_PROFILE flagship flagship | balanced | cheap — controls which model each provider uses in ask_the_panel.
MCP_SECOND_OPINION_SELF_SKIP unset Provider key to omit from panel (openai, gemini, anthropic, grok). Useful when the host is itself one of the panelists.
MCP_SECOND_OPINION_TIMEOUT 30 Per-provider timeout in seconds.
MCP_SECOND_OPINION_MAX_TOKENS 2048 Cap on rival output length.

Register with your MCP client

Claude Desktop / Claude Code (mcp_settings.json or equivalent):

{
  "mcpServers": {
    "second-opinion": {
      "command": "mcp-second-opinion",
      "env": {
        "OPENAI_API_KEY": "sk-...",
        "GEMINI_API_KEY": "...",
        "ANTHROPIC_API_KEY": "...",
        "XAI_API_KEY": "..."
      }
    }
  }
}

Tools

ask_other_model(question, model, context?, system_prompt?)

Ask one specific rival.

question:      "is this regex correct? /^[a-z]+$/"
model:         "gpt-5" | "gemini-2.5-pro" | "claude-opus-4-7" | "grok-4" | ...
context:       optional — code snippets, prior reasoning, files
system_prompt: optional — persona/framing

Returns:

{
  "answer": "...",
  "model": "gpt-5",
  "latency_ms": 842,
  "tokens": {"input": 47, "output": 92},
  "cost_usd": 0.0014
}

ask_the_panel(question, context?, system_prompt?)

Fan out to every enabled provider in parallel.

question:      "what's wrong with this approach?"
context:       optional
system_prompt: optional — applied uniformly to all panelists

Returns:

{
  "responses": {
    "openai":    {"answer": "...", "model": "gpt-5", "latency_ms": 800, "cost_usd": 0.001, "error": null},
    "gemini":    {"answer": "...", "model": "gemini-2.5-pro", "latency_ms": 750, "cost_usd": 0.0008, "error": null},
    "anthropic": {"answer": null, "model": "claude-opus-4-7", "error": "skipped (self)"},
    "grok":      {"answer": null, "model": "grok-4", "error": "XAI_API_KEY not set"}
  },
  "total_cost_usd": 0.0018,
  "total_latency_ms": 800
}

How it works

The server is a thin layer over LiteLLM, which provides a unified OpenAI-shaped interface to all four providers. Cost calculation comes from LiteLLM's pricing table.

License

MIT

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

mcp_second_opinion-0.1.1.tar.gz (222.5 kB view details)

Uploaded Source

Built Distribution

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

mcp_second_opinion-0.1.1-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file mcp_second_opinion-0.1.1.tar.gz.

File metadata

  • Download URL: mcp_second_opinion-0.1.1.tar.gz
  • Upload date:
  • Size: 222.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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 mcp_second_opinion-0.1.1.tar.gz
Algorithm Hash digest
SHA256 371dd72da2340c5953c41fd09311dec4ff51756dc47161ecf71b7ae31520f3fa
MD5 bebbad4e5c9cbfe0a7f52d6d19723ac9
BLAKE2b-256 b5c5d9894c72b42604c9e1e1f7f8b84850b86b2910e3183e58f5a4ae23c9e8cf

See more details on using hashes here.

File details

Details for the file mcp_second_opinion-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mcp_second_opinion-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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 mcp_second_opinion-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e0fa688b1da8bd1ac7878d4e12b5521c9195fa1ab3aefadc67738ac3f082c5e9
MD5 524d08fcba39b4e92b1b256ca83bd0d5
BLAKE2b-256 5931692cc0c5e4ec2be3effe75a805b17d8740e35265431524e8568216d15700

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