quelllm-mcp
quelllm-mcp
MCP server exposing the quelllm.fr catalog of 190+ open-weights LLMs via Model Context Protocol tools. Use it from Claude Code, Cursor, Continue, or any MCP-compatible client to query models, compare them, estimate VRAM, and compute API vs self-hosted cost.
Tools exposed
Tool | Description |
| List models with filters (origin code, family, max params in B) |
| Full record for one model (params, vram per quant, context window, family, tags, license, URLs) |
| Side-by-side comparison with verdict |
| VRAM in GB at chosen quant + recommended GPU/Mac tiers |
| Cost in EUR — full table API providers vs self-hosted hardware OR a specific id |
| Fuzzy search by name, family, tag, author |
Related MCP server: HydraMCP
Install
Install from source (not yet on PyPI) :
pip install git+https://github.com/MGM-FALCON/quelllm-mcp.gitOr run without installing, using uv :
uvx --from git+https://github.com/MGM-FALCON/quelllm-mcp.git quelllm-mcpFor local development :
git clone https://github.com/MGM-FALCON/quelllm-mcp.git
cd quelllm-mcp
pip install -e .Use with Claude Code
Add to ~/.claude.json or a project's .mcp.json. If you installed with pip :
{
"mcpServers": {
"quelllm": {
"command": "quelllm-mcp"
}
}
}Or zero-install with uvx :
{
"mcpServers": {
"quelllm": {
"command": "uvx",
"args": ["--from", "git+https://github.com/MGM-FALCON/quelllm-mcp.git", "quelllm-mcp"]
}
}
}Use with Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) :
{
"mcpServers": {
"quelllm": {
"command": "quelllm-mcp"
}
}
}Use with Cursor / Continue / Cline
Most MCP clients accept the same JSON config :
{
"command": "quelllm-mcp"
}Example queries (from your client)
> Quels LLM Mistral peuvent tourner sur RTX 5070 Ti 16GB ?
→ list_models(filter_family='Mistral', max_params_b=24)
→ estimate_vram('mistral-small-24b', 'q4')
> Compare Llama 3.3 70B vs Qwen 2.5 32B
→ compare('llama33-70b', 'qwen25-32b')
> J'utilise 10M tokens input + 2.5M output / mois. Combien je paye chez OpenAI vs DeepSeek ?
→ estimate_cost(10_000_000, 2_500_000)Data source
All data pulled from quelllm.fr/api/ (CC BY 4.0, no key, CORS-enabled). Cached locally for 1h to avoid rate-limiting.
API pricing data (GPT-5, Claude Opus 4.7, Gemini 2.5, DeepSeek, Mistral) and hardware pricing (RTX 50-series, Mac M4) are hardcoded as of 2026-05 — verify semestrially.
License
MIT — see LICENSE.
Contributing
Source : https://github.com/MGM-FALCON/quelllm-mcp Issues + PRs welcome. Particularly :
API pricing updates (semestrial)
Hardware additions (new GPUs, Mac Mx series)
New tools (e.g.
find_alternatives_to(model_id),recommend_gpu(budget_eur))
Tests
A pytest smoke suite lives under tests/. It covers all 6 tools and the v1.1.0
output invariants, never touches the network (local fixture + mocked httpx),
and stubs the mcp SDK when it isn't importable — so it also runs on Python 3.9.
pip install -e ".[test]"
pytestAuthor
Mohamed Meguedmi — LinkedIn · Hugging Face Founder of La Gazette IA and QuelLLM.fr.
Available Tools
6 toolscompareA
Compare two LLMs side-by-side.
Args: model_a_id: first model ID model_b_id: second model ID
Returns: comparison dict with VRAM, params, license, context window, family, origin for both models, plus a verdict
| Name | Required | Description | Default |
|---|---|---|---|
| model_a_id | Yes | ||
| model_b_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It transparently lists return fields (VRAM, params, license, etc.) and mentions a verdict, indicating read-only behavior. Minimal missing details like error handling or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear docstring format (args/returns). The returns section lists many fields but is structured. No wasted words, though could be slightly shorter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 string parameters and no output schema, the description adequately explains what it does and returns. However, it misses edge cases (invalid IDs) and usage context, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage. The description adds 'first model ID' and 'second model ID,' but these add little beyond the parameter names. More semantic detail (e.g., format, source) would be needed to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Compare two LLMs side-by-side,' specifying the verb and resource. It distinguishes from sibling tools like list_models or get_model by focusing on side-by-side comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It only implies usage for comparing two models, lacking 'when not to use' or reference to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costA
Estimate monthly cost for LLM usage — API providers OR self-hosted hardware.
Args: input_tokens_per_month: total input tokens per month output_tokens_per_month: total output tokens per month model_or_hardware: specific model/hw ID (e.g. 'gpt-5', 'rtx-5090'). If None, returns full comparison table. amort_months: amortization period for hardware purchase, default 24 months electricity_eur_per_kwh: electricity rate, default 0.20 EUR/kWh (FR 2026 average) hours_active_per_day: hours of active inference per day, default 4 caching_hit_rate: 0..0.9 fraction of input tokens hitting prompt cache (Anthropic 90% off / Gemini 75% off). Default 0. batch_mode: True applies 50% off input+output for batchable APIs (24h delay). Default False. off_peak: True applies DeepSeek off-peak discount (50% V3.5 / 75% R1). Default False. pc_always_on: True = idle (24-hours_active) × idleW. False = PC off out of active hours (0W idle). Default True. vat_recoverable: True = subtract 16.67% VAT from hardware purchase price (HT pour pro). Default False.
Returns: cost estimate in EUR (with USD-to-EUR conversion ~0.92 for APIs)
| Name | Required | Description | Default |
|---|---|---|---|
| off_peak | No | ||
| batch_mode | No | ||
| amort_months | No | ||
| pc_always_on | No | ||
| vat_recoverable | No | ||
| caching_hit_rate | No | ||
| model_or_hardware | No | ||
| hours_active_per_day | No | ||
| input_tokens_per_month | Yes | ||
| electricity_eur_per_kwh | No | ||
| output_tokens_per_month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and excels. It discloses all behavioral traits: parameter effects (caching discounts, batch/off-peak discounts, VAT handling), default values, and return format (EUR cost with USD conversion). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose sentence followed by detailed bullet points. It is somewhat lengthy but efficient for the complexity. Every sentence provides value; no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters, no output schema, and high complexity, the description is complete. It covers all inputs with defaults, return format, and conversion notes. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains all 11 parameters in detail with examples and default behaviors (e.g., 'caching_hit_rate: 0..0.9 fraction... Default 0.'). This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it estimates monthly cost for LLM usage across API providers and self-hosted hardware, using specific verbs and resources. It distinguishes from sibling tools like compare, estimate_vram, get_model, list_models, search_models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: if model_or_hardware is None, returns full comparison table; billing options are detailed. However, it does not explicitly state when to use this tool versus siblings like compare or estimate_vram, lacking explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_vramA
Estimate VRAM required to run a model at a given quantization.
Args: model_id: the model ID quant: quantization level — one of 'q4', 'q5', 'q8', 'fp16'. Default 'q4'.
Returns: dict with vram_gb (estimate including context overhead) + recommended GPU tiers
| Name | Required | Description | Default |
|---|---|---|---|
| quant | No | q4 | |
| model_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the result is an 'estimate including context overhead' and specifies the return format (dict with vram_gb and recommended GPU tiers). This is transparent for a computation tool. Additional details like potential error conditions or performance characteristics are missing but not critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one line for purpose, then bullet-like args and returns. No unnecessary words. Front-loaded with the verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no annotations), the description covers inputs and outputs adequately. It explains what the tool does and what it returns, meeting the needs for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It explains 'quant' with enumerated values ('q4', 'q5', 'q8', 'fp16') and default, and describes 'model_id' as 'the model ID'. This adds value beyond the schema. However, 'model_id' could be more specific (e.g., Hugging Face ID).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Estimate VRAM required to run a model at a given quantization.' It uses a specific verb ('Estimate') and resource ('VRAM'), and distinguishes itself from siblings like estimate_cost and list_models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when VRAM estimation is needed), but does not explicitly state when not to use it or mention alternatives. The purpose is clear, so a minor deduction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_modelA
Get full details for a single model.
Args: model_id: the model ID (e.g. 'mistral-7b-instruct', 'qwen3-8b')
Returns: full model record with params, vram per quant, context window, family, tags, license, and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It details what the output contains (params, vram, etc.), implying read-only behavior. However, it lacks explicit disclosure of any constraints (e.g., API limits, authentication) though minimal given simplicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured with Args and Returns sections. Every sentence adds value; no redundancy. Front-loaded with main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-param tool with no output schema or annotations, description covers purpose, parameter, and output fields. Lacks edge cases (e.g., model not found) but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter model_id has 0% schema coverage, but description provides concrete examples ('mistral-7b-instruct', 'qwen3-8b') adding value. Could hint at expected naming convention, but adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get full details for a single model' with specific verb and resource, and distinguishes from siblings like list_models and search_models. Example model IDs reinforce purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly clear when to use (for a known model ID), but no explicit alternatives or when-not-to-use guidance. With sibling tools like list_models and search_models, additional clarification would help but is not critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List open-weights LLMs from quelllm.fr catalog (190+ models).
Args: filter_origin: filter by author origin code, e.g. 'fr', 'us', 'cn' filter_family: filter by model family, e.g. 'Mistral', 'Qwen', 'Llama' max_params_b: maximum number of params in billions (e.g. 32 for ≤32B models)
Returns: dict with keys: count, models (list of {id, name, author, params, family, license, vram_q4_gb})
| Name | Required | Description | Default |
|---|---|---|---|
| max_params_b | No | ||
| filter_family | No | ||
| filter_origin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It describes the return format (dict with count and list of models) but omits details like read-only nature, rate limits, or authorization requirements. Adequate for a simple list tool but lacks full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact docstring format with Args and Returns sections. Every sentence adds value, no fluff. Front-loaded with main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description provides return type and fields. Covers all 3 parameters with examples. Missing mention of pagination, sorting, or default max results, but overall sufficient for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description compensates fully: explains each parameter with examples (e.g., filter_origin: 'fr', 'us', 'cn'; max_params_b: 'e.g. 32 for ≤32B models'). Adds meaning well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List open-weights LLMs from quelllm.fr catalog (190+ models).' Uses specific verb 'List' and resource 'open-weights LLMs', distinguishes from siblings like get_model (single) and search_models (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context for listing with optional filters, but does not explicitly state when to use versus alternatives (e.g., search_models for full-text search). Still, the purpose is clear for basic listing tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_modelsA
Fuzzy search models by name, family, tag, or author.
Args: query: search string limit: max number of results, default 10
Returns: dict with count and matching models (sorted by relevance)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses that search is fuzzy and returns sorted results, but lacks details on algorithm, rate limits, pagination, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured: purpose sentence, then argument list, then return info. Every sentence adds value, though more detail on fuzzy behavior could be added.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return shape is described, but missing details on error cases, pagination, and exact fuzzy algorithm. Given no output schema and limited annotations, description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are absent, so description adds value by explaining each parameter: query is a search string, limit controls max results with a default. This compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'search' and the resource 'models', listing searchable fields (name, family, tag, author). It clearly distinguishes from sibling tools like 'list_models' and 'get_model'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It does not mention exclusions or prerequisites, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: listing models, searching, getting details, comparing, estimating cost, and estimating VRAM. No significant overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_models, estimate_cost), making it easy to predict functionality from the name.
With 6 tools, the count is appropriate for the domain of LLM discovery and analysis. Each tool serves a clear purpose without unnecessary bloat or deficiency.
The toolset covers core operations: listing, searching, detail retrieval, comparison, cost estimation, and VRAM estimation. Minor gaps exist, such as direct pricing for specific models, but the overall workflow is well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceIntegrates local language models (like Qwen3-8B) with MCP clients, providing tools for chat, code analysis, text generation, translation, and content summarization using your own hardware.
- AlicenseAqualityCmaintenanceAn MCP server that enables users to query, compare, and synthesize responses from multiple local and cloud LLMs simultaneously using existing subscriptions. It provides tools for parallel model evaluation, consensus polling with an LLM-as-judge, and response synthesis across different model providers.81515MIT
- AlicenseAqualityCmaintenanceMCP server for LLM quantization. Compress any HuggingFace model to GGUF, GPTQ, or AWQ format. 6 tools: info, check, recommend, quantize, evaluate, push. Self-contained Python server — no external CLI needed.64MIT
- FlicenseAqualityCmaintenanceAn MCP server for discovering and querying over 300 AI models available on OpenRouter. It enables users to list, search, filter, compare, and get detailed information about models with pricing, context limits, and capabilities.51
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MGM-FALCON/quelllm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server