使用说明
具有Ollama集成的人类模型上下文协议(MCP)服务器
一种混合架构,将Anthropic兼容的模型上下文协议(MCP)服务器与Ollama/Gemma LLM相结合,用于推理。此实现遵循官方 模型上下文协议规范 同时使用开源模型。
概述
该项目实现了一个符合官方MCP规范的Anthropic兼容MCP服务器,以及处理客户端和Ollama的Gemma模型之间通信的中间件。
建筑
┌───────────┐ ┌──────────────┐ ┌────────────────────────┐
│ Client │────▶│ Middleware │────▶│ Anthropic MCP Server │
│ │◀────│ │◀────│ (Claude MCP Protocol) │
└───────────┘ └──────┬───────┘ └────────────────────────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌────────────────────┐
│ Ollama │ │ SQLite Database │
│ (Gemma3:4b) │ │ (Context Storage) │
└─────────────┘ └────────────────────┘
组件
- MCP服务器:在端口3000上实现Anthropic MCP协议
- 中间件:处理客户与Ollama之间的沟通
- 没有:运行Gemma3:4b模型进行推理
- 数据库:用于存储对话上下文的SQLite数据库
特性
-
MCP协议特性:
- 工具:用于上下文管理
- 资源:公开对话历史记录
- 提示:标准提示模板
-
模型支撑:
- 通过Claude Desktop或其他MCP客户端与Claude型号一起使用
- 与支持模型上下文协议的任何客户端兼容
MCP协议合规性
此实现严格遵守Anthropic发布的官方模型上下文协议(MCP)规范:
-
JSON-RPC 2.0协议:所有通信均使用标准JSON-RPC 2.0格式,确保与其他MCP客户端和服务器的兼容性。
-
协议初始化:正确执行
/initialize端点具有适当的协议版本协商(2024-03-26)和客户端功能声明。 -
工具接口:完全实现了带有所有必需注释的工具调用协议:
readOnlyHint:指示工具是否修改状态destructiveHint:标记潜在的破坏性操作idempotentHint:标记可以安全重试的操作
-
资源管理:实现用于公开具有适当URI和MIME类型的会话历史的资源协议。
-
提示模板:提供符合MCP规范的标准提示模板,用于常见操作。
-
错误处理:按照协议中的规定,使用标准化的错误代码和消息实现正确的错误响应。
-
安全:遵循MCP规范中关于身份验证和授权的安全建议。
-
版本控制:正确处理协议版本控制以确保前向兼容性。
我们的实现旨在与任何MCP客户端完全兼容,包括Claude Desktop、VS Code扩展和其他符合官方规范的工具。
API终点
MCP服务器(端口3000)
MCP服务器实现了官方的MCP协议端点:
- 工具:
/tools/list,/tools/call - 资源:
/resources/list,/resources/read - 提示:
/prompts/list,/prompts/get - 核心:
/initialize
中间件(端口8080)
POST /infer:在MCP服务器中存储上下文的同时,向Ollama/Gemma发送用户消息GET /health:检查中间件及其连接的运行状况
需求
- Python 3.10+
- Docker和Docker Compose
- 安装了Gemma3:4b型号的Ollama
安装
使用安装脚本
chmod +x setup.sh
./setup.sh
安装脚本将:
- 检查Docker安装
- 检查Ollama的安装情况,必要时拉出Gemma型号
- 构建并启动Docker容器
手动设置
# Clone the repository
git clone <repository-url>
cd simple-mcp-server
# Make sure Ollama is running with Gemma model
ollama pull gemma3:4b
# Build and run with Docker
docker-compose build
docker-compose up -d
用法示例
Ollama/Gemma使用中间件
您可以通过中间件与系统交互,中间件将使用Ollama/Gemma进行推理,同时将对话上下文存储在MCP服务器中:
# Start a new conversation
curl -X POST http://localhost:8080/infer \
-H "Content-Type: application/json" \
-d '{"session_id": "user123", "content": "Hello, how are you today?"}'
# Continue the conversation with the same session ID
curl -X POST http://localhost:8080/infer \
-H "Content-Type: application/json" \
-d '{"session_id": "user123", "content": "What's the capital of France?"}'
直接使用MCP服务器
端口3000上的MCP服务器可以与任何MCP客户端一起使用,例如:
- 克劳德桌面应用程序
- VS代码GitHub副本
- 光标
- 还有许多其他工具列在 MCP客户端页面
Docker配置
该项目使用Docker来容器化两个主要组件:
- MCP服务器容器:在端口3000上提供Anthropic MCP协议
- 中间件容器:连接到Ollama,在端口8080上进行Gemma模型推理
测试
要测试您的安装:
# Run the included test script
python test_system.py
# Or use the shell script
./test.sh
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。