LocaLLama MCP Server 是一个与 Roo Code 或 Cline.Bot(目前尚未测试与 Claude Desktop 或 CoPilot MCP VS Code 扩展的兼容性)配合使用的服务器,通过智能地在本地大语言模型(LLM)和付费 API 之间分配编码任务来优化成本。此版本中存在许多实现问题。
LocalLama MCP Server 设计用于通过动态决定是将编码任务卸载到本地能力较弱的指令 LLM(例如,LM Studio、Ollama)还是使用付费 API 来减少令牌使用量和成本。版本 1.7.0 引入了智能代码任务分析、高级依赖关系映射和智能任务分解功能。
以下工具可在 LocalLama MCP Server 中使用:
route_task:根据成本和复杂度将编码任务路由到本地 LLM 或付费 API。
task,context_length,expected_output_length,complexity,priority,preemptiveretriv_init:初始化并配置 Retriv 以进行代码搜索和索引。
directories,exclude_patterns,chunk_size,force_reindex,bm25_options,install_dependenciescancel_job:取消正在运行的任务。
job_idpreemptive_route_task:快速路由编码任务而不调用 API(更快但准确性较低)。
task,context_length,expected_output_length,complexity,priorityget_cost_estimate:获取任务的成本估算。
context_length,expected_output_length,modelbenchmark_task:对特定任务进行本地 LLM 和付费 API 的性能基准测试。
task_id,task,context_length,expected_output_length,complexity,local_model,paid_model,runs_per_taskbenchmark_tasks:对多个任务进行本地 LLM 和付费 API 的性能基准测试。
tasks,runs_per_task,parallel,max_parallel_tasks以下工具仅在安装了 Python 和 retriv 模块时可用:
retriv_search:使用 Retriv 搜索引擎搜索代码。
query,limit以下工具仅在配置了 OpenRouter API 密钥时可用:
get_free_models:获取 OpenRouter 可用的免费模型列表。
clear_openrouter_tracking:清除 OpenRouter 跟踪数据并强制更新。
benchmark_free_models:对 OpenRouter 的免费模型进行性能基准测试。
tasks,runs_per_task,parallel,max_parallel_tasksset_model_prompting_strategy:更新 OpenRouter 模型的提示策略。
task,context_length,expected_output_length,priority,complexity,preemptive以下资源可在 LocalLama MCP Server 中使用:
静态资源:
locallama://status:LocalLama MCP Server 的当前状态。locallama://models:可用的本地 LLM 模型列表。locallama://jobs/active:当前活跃的任务列表。locallama://memory-bank:内存银行目录中的文件列表(仅在存在 memory-bank 目录时可用)。locallama://openrouter/models:OpenRouter 可用的模型列表(仅在配置了 OpenRouter API 密钥时可用)。locallama://openrouter/free-models:OpenRouter 可用的免费模型列表(仅在配置了 OpenRouter API 密钥时可用)。locallama://openrouter/status:OpenRouter 集成的状态(仅在配置了 OpenRouter API 密钥时可用)。资源模板:
locallama://usage/{api}:特定 API 的令牌使用量和成本统计。locallama://jobs/progress/{jobId}:特定任务的进度信息。locallama://openrouter/model/{modelId}:特定 OpenRouter 模型的详细信息(仅在配置了 OpenRouter API 密钥时可用)。locallama://openrouter/prompting-strategy/{modelId}:特定 OpenRouter 模型的提示策略(仅在配置了 OpenRouter API 密钥时可用)。# 克隆仓库
git clone https://github.com/yourusername/locallama-mcp.git
cd locallama-mcp
# 安装依赖
npm install
# 构建项目
npm run build
# 安装 Retriv 依赖(如果要使用 Retriv)
pip install retriv>=0.3.1 numpy>=1.22.0 scikit-learn>=1.0.2 scipy>=1.8.0
代码搜索功能使用 Retriv,这是一个基于 Python 的语义搜索引擎。要使用此功能:
# 对于 Linux/macOS:
python3 -m venv venv
source venv/bin/activate
# 对于 Windows:
python -m venv venv
venv\Scripts\activate
pip install retriv>=0.3.1 numpy>=1.22.0 scikit-learn>=1.0.2 scipy>=1.8.0
.env 文件中添加以下内容:
# Python 配置
PYTHON_PATH=./venv/bin/python # 对于 Linux/macOS
# PYTHON_PATH=./venv/Scripts/python.exe # 对于 Windows
PYTHON_DETECT_VENV=true
注意:您也可以让服务器自动安装 Retriv,方法是在使用
retriv_init工具时将install_dependencies设置为true。
复制 .env.example 文件以创建自己的 .env 文件:
cp .env.example .env
然后编辑 .env 文件以包含您的特定配置:
# 本地 LLM 端点
LM_STUDIO_ENDPOINT=http://localhost:1234/v1
OLLAMA_ENDPOINT=http://localhost:11434/api
# 配置
DEFAULT_LOCAL_MODEL=qwen2.5-coder-3b-instruct
TOKEN_THRESHOLD=1500
COST_THRESHOLD=0.02
QUALITY_THRESHOLD=0.7
# 代码搜索配置
CODE_SEARCH_ENABLED=true
CODE_SEARCH_EXCLUDE_PATTERNS=["node_modules/**","dist/**",".git/**"]
CODE_SEARCH_INDEX_ON_START=true
CODE_SEARCH_REINDEX_INTERVAL=3600
# 代码任务分析配置
TASK_DECOMPOSITION_ENABLED=true
DEPENDENCY_ANALYSIS_ENABLED=true
MAX_SUBTASKS=8
SUBTASK_GRANULARITY=medium
# 基准测试配置
BENCHMARK_RUNS_PER_TASK=3
BENCHMARK_PARALLEL=false
BENCHMARK_MAX_PARALLEL_TASKS=2
BENCHMARK_TASK_TIMEOUT=60000
BENCHMARK_SAVE_RESULTS=true
BENCHMARK_RESULTS_PATH=./benchmark-results
# 服务器锁定配置
LOCK_FILE_CHECK_ACTIVE_PROCESS=true
REMOVE_STALE_LOCK_FILES=true
# API 密钥(替换为您实际的密钥)
OPENROUTER_API_KEY=your_openrouter_api_key_here
# 日志
LOG_LEVEL=debug
# Python 配置
PYTHON_PATH=./venv/bin/python # 对于 Linux/macOS
# PYTHON_PATH=./venv/Scripts/python.exe # 对于 Windows
PYTHON_DETECT_VENV=true
本地 LLM 端点
LM_STUDIO_ENDPOINT:LM Studio 实例运行的 URLOLLAMA_ENDPOINT:Ollama 实例运行的 URL配置
DEFAULT_LOCAL_MODEL:当卸载任务时使用的本地 LLM 模型TOKEN_THRESHOLD:考虑卸载到本地 LLM 之前的最大令牌数COST_THRESHOLD:触发本地 LLM 使用的成本阈值(以美元为单位)QUALITY_THRESHOLD:低于该质量分数时,无论成本如何都使用付费 API代码搜索配置
CODE_SEARCH_ENABLED:启用或禁用语义代码搜索功能CODE_SEARCH_EXCLUDE_PATTERNS:从代码索引中排除的模式(JSON 数组)CODE_SEARCH_INDEX_ON_START:服务器启动时是否索引代码文件CODE_SEARCH_REINDEX_INTERVAL:重新索引之间的间隔(秒),0 表示禁用代码任务分析配置(新增)
TASK_DECOMPOSITION_ENABLED:启用智能任务分解DEPENDENCY_ANALYSIS_ENABLED:启用依赖关系映射和关键路径分析MAX_SUBTASKS:分解任务时创建的最大子任务数SUBTASK_GRANULARITY:子任务的详细程度(细、中、粗)API 密钥
OPENROUTER_API_KEY:您的 OpenRouter API 密钥,用于访问各种 LLM 服务Python 配置(新增)
PYTHON_PATH:Python 可执行文件的路径(如果有虚拟环境,则设置为虚拟环境中的 Python)PYTHON_VENV_PATH:Python 虚拟环境的路径PYTHON_DETECT_VENV:启用自动检测 Python 虚拟环境新增工具
clear_openrouter_tracking:清除 OpenRouter 跟踪数据并强制更新benchmark_free_models:对 OpenRouter 的免费模型进行性能基准测试analyze_code_task:分析代码任务并建议分解策略visualize_dependencies:创建任务依赖关系的可视化表示retriv_init:初始化并配置 Retriv 以进行代码搜索和索引cancel_job:取消正在运行的任务以防止成本失控route_task:实现结构化的流程,包括用户偏好、成本确认、Retriv 搜索和任务跟踪服务器锁定配置(新增)
LOCK_FILE_CHECK_ACTIVE_PROCESS:验证锁文件中的进程是否仍在运行REMOVE_STALE_LOCK_FILES:自动清理因进程崩溃而遗留的锁文件当与 Cline.Bot 或 Roo Code 集成时,您可以直接传递这些环境变量:
npm start
服务器使用锁文件机制以防止多个实例同时运行。如果您尝试启动服务器时已有其他实例在运行,您将看到有关现有实例的信息,进程将退出。
如果先前的服务器进程崩溃且未正确清理,增强的锁文件机制将自动检测并删除过期的锁文件,允许新的服务器实例正确启动。
服务器集成了 OpenRouter 以访问来自不同提供商的各种免费和付费模型。主要功能包括:
clear_openrouter_tracking 工具以强制刷新模型要使用 OpenRouter 集成:
OPENROUTER_API_KEYclear_openrouter_tracking 工具当前 OpenRouter 集成提供了大约 240 种模型的访问权限,包括来自 Google、Meta、Mistral 和 Microsoft 等提供商的 30 多种免费模型。
新的任务分析系统智能地分解复杂的编码任务以实现最佳处理:
通过 MCP 接口使用代码任务分析的示例:
/use_mcp_tool locallama analyze_code_task {"task": "创建一个 React 组件,从 API 获取数据并在分页表格中显示,具有排序功能"}
这将返回一个结构化的分析结果,包括:
服务器现在包括用户偏好和任务跟踪功能:
用户偏好存储在一个 user-preferences.json 文件中,包括:
执行模式:控制任务的路由方式:
全自动选择:让决策引擎选择最佳选项仅本地模型:始终使用本地模型仅免费 API:优先使用免费 API 模型仅付费 API:始终使用付费 API 模型成本确认阈值:设置在使用付费 API 之前需要确认的成本阈值
Retriv 搜索优先级:启用或禁用优先使用 Retriv 搜索现有代码解决方案
默认目录:配置 Retriv 索引的默认目录
排除模式:指定从 Retriv 索引中排除的模式
服务器现在提供任务跟踪资源:
locallama://jobs/active 查看所有当前活跃的任务locallama://jobs/progress/{jobId} 跟踪特定任务的进度cancel_job 工具取消正在运行的任务要将此 MCP 服务器与 Cline.Bot 结合使用,请将其添加到 Cline MCP 设置中:
{
"mcpServers": {
"locallama": {
"command": "node",
"args": ["/path/to/locallama-mcp"],
"env": {
"LM_STUDIO_ENDPOINT": "http://localhost:1234/v1",
"OLLAMA_ENDPOINT": "http://localhost:11434/api",
"DEFAULT_LOCAL_MODEL": "qwen2.5-coder-3b-instruct",
"TOKEN_THRESHOLD": "1500",
"COST_THRESHOLD": "0.02",
"QUALITY_THRESHOLD": "