与Ollama通信的模型上下文协议(MCP)服务器
此MCP服务器实现了本地Ollama LLM实例与MCP兼容应用程序之间的无缝集成,并提供了高级任务分解、评估和工作流管理功能。
主要功能:
服务器实现了以下资源:
每个资源都设置了适当的元数据和MIME类型,以确保与最佳LLM的有效对话。
在MCP服务器中,提示词和工具密切相关但具有不同的角色。
每个工具都需要一个对应的模式(提示词),这使得LLM的思维能力和实际系统功能能够有效协同。
服务器提供了一些特殊的提示词:
decompose-task - 将复杂任务分解为易于管理的子任务
evaluate-result - 根据指定标准分析任务结果
服务器实现了一些强大的工具:
add-task
name (字符串), description (字符串)priority (数字), deadline (字符串), tags (数组)decompose-task
task_id (字符串), granularity (字符串:"high"|"medium"|"low")max_subtasks (数字)decompose-task提示词evaluate-result
result_id (字符串), criteria (对象)detailed (布尔值)evaluate-result提示词run-model
model (字符串), prompt (字符串)temperature (数字), max_tokens (数字)服务器提供更详细且结构化的错误消息,使客户端应用程序能够更有效地处理错误。错误响应示例如下:
{
"error": {
"message": "未找到任务:task-123",
"status_code": 404,
"details": {
"提供的ID": "task-123"
}
}
}
这些设置可以在 config.py 中进行调整:
# 性能相关设置
cache_size: int = 100 # 缓存中保存的最大条目数
max_connections: int = 10 # 最大同时连接数
max_connections_per_host: int = 10 # 每个主机的最大连接数
request_timeout: int = 60 # 请求超时(秒)
Ollama-MCP-Server 提供了一种灵活的功能,可以通过多种方式指定Ollama模型。
模型按照以下优先级指定:
model 参数)env 部分OLLAMA_DEFAULT_MODEL)llama3)当在Claude Desktop等客户端中使用时,可以使用MCP配置文件来指定模型:
{
"mcpServers": {
"ollama-MCP-server": {
"command": "python",
"args": [
"-m",
"ollama_mcp_server"
],
"env": [
{"model": "llama3:latest"}
]
}
}
}
启动服务器时,会检查已设置的模型是否存在。如果找不到模型,则会输出警告日志。此外,run-model工具可以返回可用模型列表,因此用户可以选择有效的模型。
如果指定的模型不存在或发生通信错误,将提供详细的错误消息。错误消息中包含可用模型列表,因此用户可以快速解决问题。
项目包含全面的测试套件:
要运行测试,请执行:
# 运行所有测试
python -m unittest discover
# 运行特定测试
python -m unittest tests.test_integration
OLLAMA_HOST=http://localhost:11434
DEFAULT_MODEL=llama3
LOG_LEVEL=info
确认Ollama已安装并且正在使用推荐的模型运行:
# 安装Ollama(如果尚未安装)
curl -fsSL https://ollama.com/install.sh | sh
# 下载推荐模型
ollama pull llama3
ollama pull mistral
ollama pull qwen2
pip install ollama-mcp-server
路径: ~/Library/Application\ Support/Claude/claude_desktop_config.json
路径: %APPDATA%/Claude/claude_desktop_config.json
"mcpServers": {
"ollama-MCP-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/ollama-MCP-server",
"run",
"ollama-MCP-server"
],
"ENV":["model":"deepseek:r14B"]
}
}
</details>
<details>
<summary>公开服务器设置</summary>
"mcpServers": {
"ollama-MCP-server": {
"command": "uvx",
"args": [
"ollama-MCP-server"
]
}
}
</details>
将复杂任务分解为可管理的子任务:
result = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "decompose-task",
"arguments": {
"task_id": "task://123",
"granularity": "medium",
"max_subtasks": 5
}
})
根据特定标准评估结果:
evaluation = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "evaluate-result",
"arguments": {
"result_id": "result://456",
"criteria": {
"accuracy": 0.4,
"completeness": 0.3,
"clarity": 0.3
},
"detailed": true
}
})
直接对Ollama模型执行查询:
response = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "run-model",
"arguments": {
"model": "llama3",
"prompt": "用简单的语言解释量子计算",
"temperature": 0.7
}
})
git clone https://github.com/yourusername/ollama-MCP-server.git
cd ollama-MCP-server
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
uv sync --dev --all-extras
项目包含一些方便的开发脚本:
./run_server.sh
选项:
--debug: 以调试模式运行(日志级别:DEBUG)--log=LEVEL: 指定日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)./run_tests.sh
选项:
--unit: 仅运行单元测试--integration: 仅运行集成测试--all: 运行所有测试(默认)--verbose: 显示详细测试输出准备打包以进行分发:
uv sync
uv build
这将在dist/目录中生成源代码和轮子的分发包。
uv publish
注意:需要设置PyPI认证信息,可通过环境变量或命令标志:
--token 或 UV_PUBLISH_TOKEN--username/UV_PUBLISH_USERNAME 和 --password/UV_PUBLISH_PASSWORD由于MCP服务器是通过标准I/O运行的,因此调试可能会比较困难。为了获得最佳的调试体验,强烈建议使用MCP Inspector。
要使用npm启动MCP Inspector,请执行以下命令:
npx @modelcontextprotocol/inspector uv --directory /path/to/ollama-MCP-server run ollama-mcp-server
启动时,Inspector会在浏览器中显示一个URL,您可以访问该URL开始调试。
欢迎贡献!请随意提交拉取请求。
git checkout -b feature/amazing-feature)git commit -m '添加一些惊人的功能')git push origin feature/amazing-feature)本项目在MIT许可证下发布 - 详情请参阅LICENSE文件。