OSGi.fx MCP 服务端
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个基于 MCP 的服务器端,核心职责是通过统一的 JSON-RPC 形式向客户端提供上下文信息与功能。它通过 JSON-RPC 2.0 处理请求和响应,提供工具注册/执行、资源数据访问,以及向客户端广播通知的能力,支持通过 SSE、Stdio、WebSocket 等传输通道与客户端通信。
-
主要功能点
- MCP 协议核心处理:实现 initialize、tools/list、tools/call 等 MCP 请求/响应流程,以及错误处理与通知机制。
- 工具注册与执行:通过 McpServerProvider 将 McpTool 服务注册到 MCP 服务端,客户端可查询工具列表并调用具体工具执行。
- 资源与数据访问:提供数据访问能力,便于 LLM 客户端获取资源或配置信息(通过 MCP 数据提供者暴露的数据接口)。
- 通知与广播:通过 HTTP SSE 形式向客户端广播工具列表变更等通知;同时支持将通知发送给已连接的 MCP 客户端。
- 多传输通道支持:实现基于 SSE 的服务器推送与其他传输方式的集成能力,提升与客户端的交互效率。
- 安全与集成:在服务器端实现与 Agent/Reactor 的集成,支持工具执行结果的标准化封装和错误统一处理。
-
安装步骤
- 构建与打包:在包含该 MCP 服务器组件的多模块仓库中,使用标准 Java 构建工具(如 Maven/Gradle)进行构建,生成可部署的应用或容器镜像。
- 部署运行环境:将 MCP 服务器部署到支持的运行时环境(如带 OSGi 的应用容器),确保 MCP 服务端所在进程具备对外暴露端点的能力。
- 启动与配置:在部署环境中按需求启动 MCP 服务器(通常通过容器启动命令或应用启动脚本),确保 /mcp 路径对外可访问。
- 客户端连接配置:MCP 客户端需要配置连接信息(见下方“服务器配置 JSON”示例),以便通过指定命令与参数启动并连接到 MCP 服务器。
-
服务器配置(MCP 客户端如何连接服务器的配置,JSON 格式,包含 serverName、command、args 等) 说明:MCP 客户端需要提供与服务器建立连接所需的最小信息。下面的配置示例基于仓库实现的功能特征给出可用的字段说明,实际值需结合你部署的环境来填写。该配置不属于代码,而是用于 MCP 客户端在启动时读取的连接信息。
-
serverName: "OSGi.fx MCP Server"
- 描述:服务器在标识列表中的名称,用于区分和管理多服务器场景。
-
command: 启动 MCP 服务器的命令路径或可执行条目(示例:指向启动服务器的脚本/可执行文件)。
- 描述:客户端将使用此命令来启动 MCP 服务器进程。
-
args: 启动命令的参数数组
- 描述:包括传输方式、端口、认证选项等参数。具体参数由部署环境决定,但常见场景包括:
- 传输通道配置(如 http/sse、stdio、websocket 等)
- 服务器监听端口
- 认证或密钥相关设置(如开启加密、令牌等)
- 日志与调试选项
- 描述:包括传输方式、端口、认证选项等参数。具体参数由部署环境决定,但常见场景包括:
-
注释示例(以文字描述形式给出,非代码块)
- serverName: "OSGi.fx MCP Server"
- command: "/path/to/start-mcp-server.sh" 或 "java -jar mcp-server.jar"
- args: ["--transport=sse","--port=8080","--enable-auth=false"]
- 注:实际参数需参考部署环境和 MCP_SERVER 的配置文档,确保客户端能够正确启动并连接到服务器。
-
-
基本使用方法
- 启动服务器后,客户端通过 JSON-RPC 调用进行交互:
- 发送初始化握手,获取协议版本、能力清单以及服务器信息。
- 请求工具列表(tools/list),了解可用工具及其输入结构。
- 通过 tools/call 调用具体工具,传入所需的参数。
- 若服务器配置了 SSE 通知,客户端应监听服务器推送的通知(如 tools/list_changed)。
- 使用日志与错误信息进行调试,服务器具备统一的错误封装与响应格式。
- 启动服务器后,客户端通过 JSON-RPC 调用进行交互:
-
重要说明
- MCP 客户端与 MCP 服务器的连接要在正确的传输通道上进行,OSGi.fx 的 MCP 服务端实现支持多种传输协议,具体通道要在启动时配置并确保端点可达。
- MCP 服务端的工具实现分散在 com.osgifx.console.mcp.tool 包下,开发者可以通过实现 McpTool 接口并通过 McpServerProvider 注册工具来扩展服务器功能。