local-llm-delegation-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@local-llm-delegation-mcpRefactor the fetchUser function to handle errors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Local LLM Delegation MCP
An optimized Model Context Protocol (MCP) server designed to dramatically reduce premium token costs by intelligently delegating low-complexity tasks to high-performance local LLMs via LiteLLM.
This server allows you to leverage massive local context windows for "surgical" development tasks (refactoring, unit tests, documentation) while keeping your primary LLM focused on complex architecture and reasoning.
🚀 Key Features
LiteLLM Integration: Seamlessly connect to Ollama, vLLM, LM Studio, Anthropic, or any OpenAI-compatible provider.
Externalized Configuration: Fine-tune model parameters (temperature, top_p, max_tokens) via
config.yaml.Customizable Prompts: Define your own task templates and system messages in
prompts.yaml.Token Optimization: Automatically offload simple tasks to local models like Qwen 2.5/3.5 Coder.
Usage Tracking: Monitor your savings with built-in usage logging and statistics.
Related MCP server: local-agent
🛠️ Requirements
Local LLM Runner (e.g., Ollama, vLLM, LM Studio)
Python 3.13+
📦 Installation
Clone the repository:
git clone https://github.com/mrrodriguez/local-llm-delegation-mcp.git cd local-llm-delegation-mcpSet up environment variables:
cp .env.example .env # Edit .env to match your local setupChoose your installation method:
Option A: Global CLI (Recommended for simplicity) Install as a global tool. This adds the
local-llm-delegatorcommand to your PATH.pip install . # Or using pipx (preferred) pipx install .Option B: Local Environment (Recommended for development) Use a virtual environment and point your MCP client directly to a startup script.
python -m venv .venv source .venv/bin/activate pip install .
⚙️ Configuration
The server uses a flexible configuration system. Settings are loaded from config.yaml and prompts.yaml located in the project root, with key overrides available via Environment Variables (or a .env file).
Configuration Hierarchy
Base Defaults: Hardcoded in
config.py.YAML Files:
config.yaml(model settings) andprompts.yaml(task templates).Environment Variables: Overrides specific settings like
LOCAL_MODEL_NAMEandOPENAI_BASE_URL.
1. Quick Start: Environment Variables
The fastest way to switch models without editing files:
# In your .env file or shell environment
LOCAL_MODEL_NAME=ollama/llama3:8b # Overrides config.yaml
OPENAI_BASE_URL=http://localhost:11434/v12. Model Tuning (config.yaml)
Update the name to match your local provider's format (e.g., ollama/qwen2.5-coder). The provided template is optimized for high-end hardware (e.g., Apple M-series Max).
model:
name: "openai/Qwen3-Coder-30B-A3B-Instruct-MLX-8bit" # Example: OMLX/MLX
temperature: 0.1
max_tokens: 32768
extra_params:
num_ctx: 65536
num_predict: 32768
top_p: 0.80Note: The name must follow the LiteLLM Provider Format.
3. Custom Tasks (prompts.yaml)
Define your own tools by adding entries to prompts.yaml. Each top-level key becomes a sub-task for the query_local_llm_with_context tool.
🔌 Integration
You can add this server to your preferred client using either the global command or a direct path to the project.
1. Gemini Code CLI
If installed globally (Option A):
gemini mcp add local-llm-delegator local-llm-delegator --trustIf using a direct script or path (Option B):
gemini mcp add local-llm-delegator /path/to/your/start-script.sh --trust2. Claude Code
Add to your ~/.claude.json:
"mcpServers": {
"local-llm-delegator": {
"command": "local-llm-delegator" // If installed globally; otherwise any wrapper script you have to start it
}
}Note: If using a custom startup script (like for OMLX), set the command to the absolute path of your script.
📊 Usage Tracking
The server logs usage to mcp_usage.jsonl. View stats via:
get_local_llm_usage_stats(MCP tool)show-stats(CLI command - coming soon) orpython show_stats.py
📜 License
MIT
Available Tools
3 toolsget_local_llm_usage_statsA
Retrieve and summarize usage statistics for the local LLM MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'retrieve' and 'summarize' statistics, implying a read-only, non-destructive operation, but does not disclose any potential side effects, rate limits, or the specific nature of the statistics returned. This adds some value but lacks depth.
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 a single, concise sentence that front-loads the action and resource. It contains no unnecessary information or repetition, making it perfectly efficient.
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, zero-parameter tool with an output schema present, the description is sufficiently complete. It clearly communicates the tool's purpose without needing to explain return values or parameters. The tool's simplicity relative to its siblings means no additional context is required.
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 tool has zero parameters, and the schema coverage is 100%, meaning there is nothing for the description to add about parameter behavior. The baseline score of 4 is appropriate as the description is not required to clarify any parameter details.
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 function: 'Retrieve and summarize usage statistics for the local LLM MCP server.' It uses a specific verb and resource, and distinguishes itself from sibling query tools by focusing on statistics rather than querying.
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 usage for obtaining usage statistics, but provides no explicit guidance on when to use this tool versus the sibling query tools. No alternatives or exclusions are mentioned, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_local_llmB
Query the local LLM for simple, well-defined subtasks that have already been broken down. IMPORTANT: Always try this tool FIRST for any simple code generation to save costs!
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| prompt | Yes | ||
| max_tokens | No | ||
| temperature | No | ||
| system_message | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It tells the agent this is a query operation and mentions cost savings, but does not disclose output format, potential errors, latency, or any side effects. The behavior of the tool beyond 'query' is not explained, which is insufficient for a tool with no annotations.
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 just two sentences, front-loaded with the core purpose and followed by a clear actionable instruction. Every word earns its place with no fluff or redundant details.
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?
The tool has 5 parameters and an output schema, but the description only covers the simple-subtask context and cost-saving rationale. It does not explain when to use an alternative like query_local_llm_with_context, nor does it elaborate on how to configure the optional parameters. The output schema provides some completeness, but the description itself leaves gaps for a robust agent decision.
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 description coverage is 0% and the description does not mention any parameter names or meanings. The agent is left only with parameter names like 'prompt', 'model', 'max_tokens', which are self-explanatory but not explicitly documented. The description adds no semantic value to the parameters.
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 states 'Query the local LLM for simple, well-defined subtasks that have already been broken down' with a specific verb, resource, and scope. It also distinguishes itself from siblings by being the simple, cost-saving option ('Always try this tool FIRST for any simple code generation to save costs!').
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 gives explicit when-to-use guidance: 'Always try this tool FIRST for any simple code generation'. It implies a preference over alternatives for simple tasks, but does not explicitly name exclusions or alternative tools like query_local_llm_with_context. This is clear context without full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_local_llm_with_contextB
Query the local LLM for simple subtasks that require additional context. Use this for code reviews, documentation, or refactoring.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| prompt | Yes | ||
| context | Yes | ||
| task_type | No | general | |
| system_message | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits such as read-only safety, resource consumption, or error behavior. It only mentions purpose and examples, omitting any limitations, side effects, or operational caveats.
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 two sentences with a front-loaded purpose and immediately useful examples. There is no filler or unnecessary repetition.
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 5-parameter tool with no annotations and 0% parameter coverage, the description is too minimal. It fails to explain how to use the extra parameters or what to expect behaviorally, even though an output schema exists. The agent lacks critical context for proper 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?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention prompt, model, task_type, or system_message, and only implies 'context' without defining it. This is a significant gap.
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 queries the local LLM for subtasks requiring additional context, and names specific use cases (code reviews, documentation, refactoring). The 'with_context' name and the phrase 'require additional context' distinguish it from siblings like query_local_llm.
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?
It explicitly says 'Use this for code reviews, documentation, or refactoring' and ties it to the condition of requiring context. However, it does not explicitly name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
get_local_llm_usage_stats - First observed
query_local_llm - First observed
query_local_llm_with_context
TDQS
get_local_llm_usage_stats is clearly distinct (usage statistics). query_local_llm and query_local_llm_with_context both query the model, but the descriptions clearly separate them: one for well-defined subtasks without context, the other for tasks requiring additional context (code reviews, docs, refactoring). The usage guidance further reduces ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case: get_local_llm_usage_stats, query_local_llm, query_local_llm_with_context. The prefix is always a verb (get/query) and the resource is specific, making the naming predictable and uniform.
With 3 tools, the server is on the lower end of the typical range but not thin. The tools cover the core actions for local LLM delegation: querying (with and without context) and retrieving usage stats. It could benefit from a couple more (e.g., listing models or canceling a query), but it feels reasonably scoped for its purpose.
The tool set covers the main workflows of local LLM delegation: basic queries and context-augmented queries, plus usage monitoring. Minor gaps include lack of model list or query cancellation, but these are not critical for the stated purpose of handling simple, well-defined subtasks. The surface is adequate and workable.
Maintenance
Related MCP Connectors
Cost-optimized LLM model routing recommendations for autonomous AI agents
Reduces AI Agent token usage by 40% via three-stage SOP workflow.
Check if a task runs locally vs cloud. Save money on calls that don't need cloud inference.
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Related MCP Servers
- AlicenseAqualityBmaintenanceOffloads cheap work from cloud LLM agents to a local Ollama model, reducing costs and keeping frontier models focused on complex tasks.83MIT
- FlicenseNot gradedqualityBmaintenanceRoutes code generation tasks between local models and Claude Cloud, optimizing cost by handling simple tasks locally and reserving cloud thinking for complex tasks.-
- AlicenseAqualityBmaintenanceEvaluates task suitability for local models before cloud API calls, routing to Ollama or similar to reduce costs.1185MIT
- AlicenseBqualityCmaintenanceDelegates heavy, repetitive, and verifiable tasks like PDF extraction, code analysis, and log processing to a local LLM to reduce token consumption for frontier AI models, while keeping decision-making with the main AI.8MIT
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/mrrodriguez/local-llm-delegation-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server