模型上下文协议服务器

一个结合Anthropic兼容的模型上下文协议服务器与Ollama/Gemma大语言模型的混合架构,用于推理和上下文管理。

  • by jorgesandoval
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jorgesandoval/simple-mcp-server

使用说明

具有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)规范:

  1. JSON-RPC 2.0协议:所有通信均使用标准JSON-RPC 2.0格式,确保与其他MCP客户端和服务器的兼容性。

  2. 协议初始化:正确执行 /initialize 端点具有适当的协议版本协商(2024-03-26)和客户端功能声明。

  3. 工具接口:完全实现了带有所有必需注释的工具调用协议:

    • readOnlyHint:指示工具是否修改状态
    • destructiveHint:标记潜在的破坏性操作
    • idempotentHint:标记可以安全重试的操作
  4. 资源管理:实现用于公开具有适当URI和MIME类型的会话历史的资源协议。

  5. 提示模板:提供符合MCP规范的标准提示模板,用于常见操作。

  6. 错误处理:按照协议中的规定,使用标准化的错误代码和消息实现正确的错误响应。

  7. 安全:遵循MCP规范中关于身份验证和授权的安全建议。

  8. 版本控制:正确处理协议版本控制以确保前向兼容性。

我们的实现旨在与任何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

安装脚本将:

  1. 检查Docker安装
  2. 检查Ollama的安装情况,必要时拉出Gemma型号
  3. 构建并启动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许可证获得许可-有关详细信息,请参阅许可证文件。