Cross-LLM MCP Server
# 🤖 Cross-LLM MCP Server
> **Access multiple LLM APIs from one place.** Call ChatGPT, Claude, DeepSeek, Gemini, Grok, Kimi, Perplexity, Mistral, and Hugging Face Inference Router with intelligent model selection, preferences, and prompt logging.
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that provides unified access to multiple Large Language Model APIs for AI coding environments like Cursor and Claude Desktop.
[](https://archestra.ai/mcp-catalog/jamesanz__cross-llm-mcp)
## Why Use Cross-LLM MCP?
- 🌐 **9 LLM Providers** – ChatGPT, Claude, DeepSeek, Gemini, Grok, Kimi, Perplexity, Mistral, Hugging Face
- 🎯 **Smart Model Selection** – Tag-based preferences (coding, business, reasoning, math, creative, general)
- 📊 **Prompt Logging** – Track all prompts with history, statistics, and analytics
- 💰 **Cost Optimization** – Choose flagship or cheaper models based on preference
- ⚡ **Easy Setup** – One-click install in Cursor or simple manual setup
- 🔄 **Call All LLMs** – Get responses from all providers simultaneously
## Quick Start
Ready to access multiple LLMs? Install in seconds:
**Install in Cursor (Recommended):**
[🔗 Install in Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=cross-llm-mcp&config=eyJjcm9zcy1sbG0tbWNwIjp7ImNvbW1hbmQiOiJucHgiLCJhcmdzIjpbIi15IiwiY3Jvc3MtbGxtLW1jcCJdfX0=)
**Or install manually:**
```bash
npm install -g cross-llm-mcp
# Or from source:
git clone https://github.com/JamesANZ/cross-llm-mcp.git
cd cross-llm-mcp && npm install && npm run build
```
## Features
### 🤖 Individual LLM Tools
- **`call-chatgpt`** – OpenAI's ChatGPT API
- **`call-claude`** – Anthropic's Claude API
- **`call-deepseek`** – DeepSeek API
- **`call-gemini`** – Google's Gemini API
- **`call-grok`** – xAI's Grok API
- **`call-kimi`** – Moonshot AI's Kimi API
- **`call-perplexity`** – Perplexity AI API
- **`call-mistral`** – Mistral AI API
- **`call-huggingface`** – Hugging Face Inference Router (OpenAI-compatible Hub models)
### 🔄 Combined Tools
- **`call-all-llms`** – Call all LLMs with the same prompt
- **`call-llm`** – Call a specific provider by name
### ⚙️ Preferences & Model Selection
- **`get-user-preferences`** – Get current preferences
- **`set-user-preferences`** – Set default model, cost preference, and tag-based preferences
- **`get-models-by-tag`** – Find models by tag (coding, business, reasoning, math, creative, general)
### 📝 Prompt Logging
- **`get-prompt-history`** – View prompt history with filters
- **`get-prompt-stats`** – Get statistics about prompt logs
- **`delete-prompt-entries`** – Delete log entries by criteria
- **`clear-prompt-history`** – Clear all prompt logs
## Installation
### Cursor (One-Click)
Click the install link above or use:
```
cursor://anysphere.cursor-deeplink/mcp/install?name=cross-llm-mcp&config=eyJjcm9zcy1sbG0tbWNwIjp7ImNvbW1hbmQiOiJucHgiLCJhcmdzIjpbIi15IiwiY3Jvc3MtbGxtLW1jcCJdfX0=
```
After installation, add your API keys in Cursor settings (see Configuration below).
### Manual Installation
**Requirements:** Node.js 18+ and npm
```bash
# Clone and build
git clone https://github.com/JamesANZ/cross-llm-mcp.git
cd cross-llm-mcp
npm install
npm run build
```
### Claude Desktop
Add to `claude_desktop_config.json`:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"cross-llm-mcp": {
"command": "node",
"args": ["/absolute/path/to/cross-llm-mcp/build/index.js"],
"env": {
"OPENAI_API_KEY": "your_openai_api_key_here",
"ANTHROPIC_API_KEY": "your_anthropic_api_key_here",
"DEEPSEEK_API_KEY": "your_deepseek_api_key_here",
"GEMINI_API_KEY": "your_gemini_api_key_here",
"XAI_API_KEY": "your_grok_api_key_here",
"KIMI_API_KEY": "your_kimi_api_key_here",
"PERPLEXITY_API_KEY": "your_perplexity_api_key_here",
"MISTRAL_API_KEY": "your_mistral_api_key_here",
"HF_TOKEN": "your_huggingface_token_here"
}
}
}
}
```
Restart Claude Desktop after configuration.
## Configuration
### API Keys
Set environment variables for the LLM providers you want to use:
```bash
export OPENAI_API_KEY="your_openai_api_key"
export ANTHROPIC_API_KEY="your_anthropic_api_key"
export DEEPSEEK_API_KEY="your_deepseek_api_key"
export GEMINI_API_KEY="your_gemini_api_key"
export XAI_API_KEY="your_grok_api_key"
export KIMI_API_KEY="your_kimi_api_key"
export PERPLEXITY_API_KEY="your_perplexity_api_key"
export MISTRAL_API_KEY="your_mistral_api_key"
export HF_TOKEN="your_huggingface_token"
# Or: HUGGINGFACE_API_KEY (same as HF_TOKEN)
# Optional: DEFAULT_HUGGINGFACE_MODEL, HUGGINGFACE_INFERENCE_BASE_URL (default https://router.huggingface.co/v1)
```
### Getting API Keys
- **OpenAI**: [https://platform.openai.com/api-keys](https://platform.openai.com/api-keys)
- **Anthropic**: [https://console.anthropic.com/](https://console.anthropic.com/)
- **DeepSeek**: [https://platform.deepseek.com/](https://platform.deepseek.com/)
- **Google Gemini**: [https://makersuite.google.com/app/apikey](https://makersuite.google.com/app/apikey)
- **xAI Grok**: [https://console.x.ai/](https://console.x.ai/)
- **Moonshot AI**: [https://platform.moonshot.ai/](https://platform.moonshot.ai/)
- **Perplexity**: [https://www.perplexity.ai/hub](https://www.perplexity.ai/hub)
- **Mistral**: [https://console.mistral.ai/](https://console.mistral.ai/)
- **Hugging Face**: Create a fine-grained token with **Inference** (serverless / Inference Providers) access at [https://huggingface.co/settings/tokens](https://huggingface.co/settings/tokens). See [Chat Completion](https://huggingface.co/docs/api-inference/tasks/chat-completion) for supported models.
### Running Hub models locally (outside this MCP)
This server calls Hugging Face’s **hosted** Inference Router; it does not download weights or run PyTorch/GGUF inside Node. To run models on your machine, use tools such as [Ollama](https://ollama.com/), [llama.cpp](https://github.com/ggerganov/llama.cpp), [Text Generation Inference](https://github.com/huggingface/text-generation-inference), or Hugging Face [Inference Endpoints](https://huggingface.co/docs/inference-endpoints/index), then point other clients at those services if they expose an API.
## Usage Examples
### Call ChatGPT
Get a response from OpenAI:
```json
{
"tool": "call-chatgpt",
"arguments": {
"prompt": "Explain quantum computing in simple terms",
"temperature": 0.7,
"max_tokens": 500
}
}
```
### Call Hugging Face
Get a response from a Hub model via the Inference Router (`model` is the Hub repo id, e.g. `Qwen/Qwen2.5-7B-Instruct`):
```json
{
"tool": "call-huggingface",
"arguments": {
"prompt": "Reply with exactly: ok",
"model": "Qwen/Qwen2.5-7B-Instruct",
"temperature": 0.3,
"max_tokens": 32
}
}
```
### Call All LLMs
Get responses from all providers:
```json
{
"tool": "call-all-llms",
"arguments": {
"prompt": "Write a short poem about AI",
"temperature": 0.8
}
}
```
### Set Tag-Based Preferences
Automatically use the best model for each task type:
```json
{
"tool": "set-user-preferences",
"arguments": {
"defaultModel": "gpt-4o",
"costPreference": "cheaper",
"tagPreferences": {
"coding": "deepseek-r1",
"general": "gpt-4o",
"business": "claude-3.5-sonnet-20241022",
"reasoning": "deepseek-r1",
"math": "deepseek-r1",
"creative": "gpt-4o"
}
}
}
```
### Get Prompt History
View your prompt logs:
```json
{
"tool": "get-prompt-history",
"arguments": {
"provider": "chatgpt",
"limit": 10
}
}
```
## Model Tags
Models are tagged by their strengths:
- **coding**: `deepseek-r1`, `deepseek-coder`, `gpt-4o`, `claude-3.5-sonnet-20241022`
- **business**: `claude-3-opus-20240229`, `gpt-4o`, `gemini-1.5-pro`
- **reasoning**: `deepseek-r1`, `o1-preview`, `claude-3.5-sonnet-20241022`
- **math**: `deepseek-r1`, `o1-preview`, `o1-mini`
- **creative**: `gpt-4o`, `claude-3-opus-20240229`, `gemini-1.5-pro`
- **general**: `gpt-4o-mini`, `claude-3-haiku-20240307`, `gemini-1.5-flash`
## Use Cases
- **Multi-Perspective Analysis** – Get different perspectives from multiple LLMs
- **Model Comparison** – Compare responses to understand strengths and weaknesses
- **Cost Optimization** – Choose the most cost-effective model for each task
- **Quality Assurance** – Cross-reference responses from multiple models
- **Intelligent Selection** – Automatically use the best model for coding, business, reasoning, etc.
- **Prompt Analytics** – Track usage, costs, and patterns with automatic logging
## Technical Details
**Built with:** Node.js, TypeScript, MCP SDK
**Dependencies:** `@modelcontextprotocol/sdk`, `superagent`, `zod`
**Platforms:** macOS, Windows, Linux
**Preference Storage:**
- Unix/macOS: `~/.cross-llm-mcp/preferences.json`
- Windows: `%APPDATA%/cross-llm-mcp/preferences.json`
**Prompt Log Storage:**
- Unix/macOS: `~/.cross-llm-mcp/prompts.json`
- Windows: `%APPDATA%/cross-llm-mcp/prompts.json`
## Contributing
⭐ **If this project helps you, please star it on GitHub!** ⭐
Contributions welcome! Please open an issue or submit a pull request.
## License
MIT License – see [LICENSE.md](LICENSE.md) for details.
## Support
If you find this project useful, consider supporting it:
**⚡ Lightning Network**
```
lnbc1pjhhsqepp5mjgwnvg0z53shm22hfe9us289lnaqkwv8rn2s0rtekg5vvj56xnqdqqcqzzsxqyz5vqsp5gu6vh9hyp94c7t3tkpqrp2r059t4vrw7ps78a4n0a2u52678c7yq9qyyssq7zcferywka50wcy75skjfrdrk930cuyx24rg55cwfuzxs49rc9c53mpz6zug5y2544pt8y9jflnq0ltlha26ed846jh0y7n4gm8jd3qqaautqa
```
**₿ Bitcoin**: [bc1ptzvr93pn959xq4et6sqzpfnkk2args22ewv5u2th4ps7hshfaqrshe0xtp](https://mempool.space/address/bc1ptzvr93pn959xq4et6sqzpfnkk2args22ewv5u2th4ps7hshfaqrshe0xtp)
**Ξ Ethereum/EVM**: [0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f](https://etherscan.io/address/0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f)
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose targeting specific resources and actions in the Bitcoin/Lightning domain. For example, decode_invoice and pay_invoice handle Lightning payments, while decode_tx and get_transaction handle Bitcoin transactions, with no overlapping functionality that would cause confusion.
All tool names follow a consistent verb_noun pattern using snake_case, such as decode_invoice, generate_key, and validate_address. This uniformity makes the tool set predictable and easy to understand for agents.
With 7 tools, the server is well-scoped for its purpose of Bitcoin and Lightning operations. Each tool serves a specific, necessary function without redundancy, making the count appropriate for the domain's core needs.
The tool set covers key operations like decoding, generating, validating, and paying, but there are minor gaps such as creating invoices or managing wallet balances. However, agents can still perform essential workflows with the provided tools.