Ollama MCP 服务端实现
使用说明(Markdown 格式)
-
项目简介
- 该项目实现了一个基于 MCP 的服务端,用于向 LLM 客户端提供上下文信息、资源访问、工具注册/执行,以及提示模板的渲染与管理,支持多种传输方式,具备会话管理与能力声明能力。核心组件包含工具注册与执行、MCP 请求处理、以及对 Ollama 与其他外部服务的集成。
-
主要功能点
- MCP 核心能力
- 通过 MCP 协议接收并处理 JSON-RPC 风格的请求,返回标准化的 JSON-RPC 响应。
- 向客户端提供工具注册、执行、以及资源/提示相关的能力。
- 资源、工具与提示
- 资源管理:提供数据访问能力,管理可用的资源集合。
- 工具注册与执行:支持多种内置和外部工具,LLM 可以通过工具调用实现外部功能。
- 提示模板与渲染:支持用于不同交互模式的 Prompt 渲染和自定义化。
- 集成与扩展
- 与 Ollama、Playwright(浏览器自动化)、GitHub API 等工具的集成,提供多领域能力。
- MCP Gateway 功能,支持跨多服务器编排与协作。
- 传输与安全
- 通过 Stdio、SSE、WebSocket 等传输方案与客户端通信,具备会话管理与安全审计能力。
- 服务器端实现
- 核心服务器实现包含工具注册、请求路由、健康检查、服务器状态,以及对外部工具/服务的调用封装。
- MCP 核心能力
-
安装与运行步骤
- 环境准备
- 需要具备 Python 3.12 及以上版本(代码中使用的依赖以源码结构为主,实际环境请根据 docs/CI/CD 说明安装依赖)。
- 获取代码
- 克隆仓库到本地或服务器上。
- 启动服务器
- 通过命令行启动 MCP 服务器(以 stdio 传输为例):
- 命令示例(需根据实际部署环境调整路径与入口模块): { "server_name": "mcp-devops-server", "command": ["python", "-m", "ollama_mcp_server.server.mcp_server"], "args": [] }
- 客户端连接时需要使用包含 server_name、command、args 的配置(以 JSON 形式提供给客户端),具体示例如上所示的配置字段。
- 通过命令行启动 MCP 服务器(以 stdio 传输为例):
- 运行测试与验证
- 项目内含若干单元测试,可覆盖配置、工具注册、服务器健康、端到端工具执行等场景。生产环境请先在受控环境中验证再接入生产。
- 环境准备
-
服务器配置(给 MCP 客户端的连接信息,JSON 形式,含 server name、command、args 等)
- 说明
- MCP 客户端需要的是连接信息,用以从 MCP 服务器建立连接并调用能力。下面给出一个配置示例,包含服务器名称、启动命令及参数。请将该配置交由客户端在建立连接时读取并使用。
- 配置示例(JSON) { "server_name": "mcp-devops-server", "command": ["python", "-m", "ollama_mcp_server.server.mcp_server"], "args": [] }
- 注释
- server_name:服务器的唯一名称,用于识别与管控多服务器环境。
- command:启动服务器的命令(在没有打包成可执行镜像时,通常以 Python 模块运行方式提供入口)。
- args:启动命令的附加参数列表,当前示例为空,实际可根据部署需求添加。
- 说明
- MCP 客户端不需要读取代码实现细节,仅需要上述连接信息来建立 JSON-RPC 风格的请求-响应通道。
- 说明
-
基本使用方法
- 部署后,客户端可通过 MCP 协议向服务器发起请求,进行以下操作:
- 列出可用工具、注册/调用工具
- 读取或写入资源
- 请求并渲染 Prompt 模板
- 在开发与运维场景中,可以通过网格化部署实现多实例协同,并借助 MCP Gateway 实现跨服务器编排。
- 部署后,客户端可通过 MCP 协议向服务器发起请求,进行以下操作:
-
兼容性与扩展
- 服务器设计面向扩展,支持新增工具、资源类型与传输协议。
- 集成了多种外部平台的工具,与 Ollama 等模型服务保持兼容,便于在 LLM 应用中提供上下文与能力服务。