Multi-model AI analysis for Claude - get second opinions from DeepSeek, Kimi, and OpenRouter
Project description
Second Opinion MCP
Get second opinions from multiple AI models while using Claude. Break the single-model echo chamber by consulting DeepSeek Reasoner, Kimi K2.5 (Moonshot), and 300+ OpenRouter models.
What It Does
When working with Claude Code or Claude Desktop, this MCP server lets you:
- Get alternative perspectives on code, architecture, and decisions
- Run systematic code reviews with severity-classified issues
- Stage multi-model debates where AI models argue opposing positions
- Challenge proposals with anti-sycophancy mode (finds weaknesses, not validation)
Quickstart
1. Install
pipx install second-opinion-mcp
If you don't have pipx, install it first: pip install pipx && pipx ensurepath
2. Setup
Run the interactive setup wizard:
second-opinion-mcp setup
The wizard will guide you through selecting providers and entering API keys. Keys are stored securely in your system's credential manager.
3. Register
After setup, copy the registration command from the wizard output, e.g.:
claude mcp add -s user second-opinion -e SECOND_OPINION_PROVIDERS="deepseek,moonshot" -- second-opinion-mcp
That's it. Restart Claude Code and the tools are available.
Supported Models
DeepSeek V3.2 (Recommended)
Chain-of-thought reasoning model. Best for code reviews and complex analysis.
- Get your API key at https://platform.deepseek.com
- Pricing: ~$0.28/$0.42 per million tokens (input/output)
Kimi K2.5 (Moonshot)
Chinese AI model with thinking mode. Good for alternative perspectives and debates.
- Get your API key at https://platform.moonshot.cn
- Supports 256K context window
OpenRouter (Optional)
Access 300+ models through a single API. Enable for variety or specific model access.
- Get your API key at https://openrouter.ai/keys
Available Tools
second_opinion
Get a straightforward second opinion on any question, code, or decision.
Use second_opinion to review this database schema: [paste schema]
challenge
Anti-sycophancy mode. The model is instructed to find weaknesses, not validate.
Use challenge to critique: "We should use a global singleton for database connections"
code_review
Systematic directory-based code review with BLOCKER/CRITICAL/MAJOR/MINOR classifications.
Use code_review on directory="./src" with focus_areas=["security", "performance"]
consensus
Multi-model debate where DeepSeek and Moonshot argue opposing positions, then synthesize.
Use consensus to debate: "GraphQL vs REST for internal microservices"
review_synthesis
Full workflow: parallel reviews from both models, debate, then synthesis instructions.
Perform a comprehensive code review of ./myproject using review_synthesis
Configuration
Changing Providers
After initial setup, reconfigure providers:
second-opinion-mcp setup
Or manually set the environment variable:
# Claude Code CLI
claude mcp add -s user second-opinion -e SECOND_OPINION_PROVIDERS="deepseek" -- second-opinion-mcp
# Only DeepSeek
export SECOND_OPINION_PROVIDERS="deepseek"
# Only Moonshot
export SECOND_OPINION_PROVIDERS="moonshot"
# All providers
export SECOND_OPINION_PROVIDERS="deepseek,moonshot,openrouter"
API Key Management
Keys are stored in your system's credential manager (Windows Credential Manager, macOS Keychain, or Linux Secret Service).
To update keys:
second-opinion-mcp setup
Or manually:
python -c "import keyring; keyring.set_password('second-opinion', 'deepseek', 'sk-YOUR_NEW_KEY')"
Claude Desktop Configuration
For Claude Desktop (the standalone app), add to claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"second-opinion": {
"command": "second-opinion-mcp",
"env": {
"SECOND_OPINION_PROVIDERS": "deepseek,moonshot"
}
}
}
}
Troubleshooting
"No API key configured" Error
Run the setup wizard again:
second-opinion-mcp setup
"Keyring access failed" (Linux)
Linux without a desktop environment needs a keyring backend configured:
pip install keyrings.alt
mkdir -p ~/.local/share/python_keyring
echo -e "[backend]\ndefault-keyring=keyrings.alt.file.EncryptedKeyring" > ~/.local/share/python_keyring/keyringrc.cfg
Connection Timeout
Check firewall, VPN, or proxy settings. Both DeepSeek (api.deepseek.com) and Moonshot (api.moonshot.ai) must be accessible.
Rate Limit Exceeded
Moonshot has rate limits (3 concurrent, 20 RPM at Tier 0). Wait a minute and retry, or use fast mode for non-critical queries.
Tool Not Found in Claude
Verify registration:
claude mcp list
If not listed, re-register:
claude mcp add -s user second-opinion -e SECOND_OPINION_PROVIDERS="deepseek,moonshot" -- second-opinion-mcp
Advanced Usage
Fast Mode
Skip the thinking/reasoning phase for quicker responses:
Use second_opinion with fast=true to check: is this regex correct?
Note: Code reviews always use full thinking mode regardless of this setting.
Include Reasoning
See the model's chain-of-thought:
Use second_opinion with include_reasoning=true to analyze this algorithm
Focus Areas for Reviews
Use code_review with focus_areas=["security", "error-handling", "performance"]
Save Review Output
Use code_review on directory="./src" with save_to="./docs/reviews"
Updating
The server checks for updates on startup and notifies you if a new version is available.
To update manually:
pipx upgrade second-opinion-mcp
Or reinstall:
pipx uninstall second-opinion-mcp
pipx install second-opinion-mcp
Your API keys are preserved in the system keyring across updates.
Uninstalling
# Remove from Claude
claude mcp remove second-opinion
# Uninstall package
pipx uninstall second-opinion-mcp
# Optional: remove stored API keys
python -c "import keyring; keyring.delete_password('second-opinion', 'deepseek')"
python -c "import keyring; keyring.delete_password('second-opinion', 'moonshot')"
Security
API keys are stored in your OS keyring, not in environment variables or config files. The code review tool:
- Skips
.envfiles, credentials, SSH keys, and certificates - Validates directories against allowed roots
- Detects symlinks to prevent traversal attacks
- Limits content size to prevent memory exhaustion
Cost Estimates
Per operation (typical usage):
| Tool | Approximate Cost |
|---|---|
| second_opinion / challenge | ~$0.001 |
| code_review | ~$0.01-0.05 |
| consensus (2 rounds) | ~$0.004-0.010 |
| review_synthesis | ~$0.02-0.10 |
License
MIT License. See LICENSE file.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file second_opinion_mcp-0.3.2.tar.gz.
File metadata
- Download URL: second_opinion_mcp-0.3.2.tar.gz
- Upload date:
- Size: 31.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35dd95d5c6f4dedd56ba2be6823ae7ea2514c1e03736c176be8f14a031c0cea4
|
|
| MD5 |
84254c2e18968ba5a52df8caf01c1309
|
|
| BLAKE2b-256 |
36cc1aa78f28447875342b5bc454e2d39862f2858a0e1c0243346bf77acf8d57
|
Provenance
The following attestation bundles were made for second_opinion_mcp-0.3.2.tar.gz:
Publisher:
publish.yml on MarvinFS/second-opinion-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
second_opinion_mcp-0.3.2.tar.gz -
Subject digest:
35dd95d5c6f4dedd56ba2be6823ae7ea2514c1e03736c176be8f14a031c0cea4 - Sigstore transparency entry: 909246204
- Sigstore integration time:
-
Permalink:
MarvinFS/second-opinion-mcp@d37bcb97fd156665ffa0178318027554cf87b08f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/MarvinFS
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d37bcb97fd156665ffa0178318027554cf87b08f -
Trigger Event:
release
-
Statement type:
File details
Details for the file second_opinion_mcp-0.3.2-py3-none-any.whl.
File metadata
- Download URL: second_opinion_mcp-0.3.2-py3-none-any.whl
- Upload date:
- Size: 27.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2517ced1346aa85717ed8a90be471f45cbde343fed5ce408add8b92dcd772d2d
|
|
| MD5 |
3bdf7f8bf5c8769562502f87dfb52012
|
|
| BLAKE2b-256 |
48195e4a0b9f974d391230e0446668d07df3cabeb4079a2a6a09e7f7584cf440
|
Provenance
The following attestation bundles were made for second_opinion_mcp-0.3.2-py3-none-any.whl:
Publisher:
publish.yml on MarvinFS/second-opinion-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
second_opinion_mcp-0.3.2-py3-none-any.whl -
Subject digest:
2517ced1346aa85717ed8a90be471f45cbde343fed5ce408add8b92dcd772d2d - Sigstore transparency entry: 909246208
- Sigstore integration time:
-
Permalink:
MarvinFS/second-opinion-mcp@d37bcb97fd156665ffa0178318027554cf87b08f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/MarvinFS
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d37bcb97fd156665ffa0178318027554cf87b08f -
Trigger Event:
release
-
Statement type: