Forge MCP 服务器实现
使用说明(Markdown 格式)
- 项目简介
- Forge MCP 服务器是一组基于 Forge 平台的后端服务,用来向 LLM 客户端提供结构化的上下文信息、可注册与执行的工具、以及可渲染的提示模板。服务器遵循 Model Context Protocol(MCP)的设计,提供资源、工具、提示等能力的标准化访问入口,并通过 JSON-RPC 等协议与前端/LLM 客户端进行通信。
- 主要功能点
- 资源管理:提供对“资源”的托管、读取与访问数据能力,用于向 LLM 客户端提供所需数据。
- 工具注册与执行:注册一组可被 LLM 调用的工具,支持通过统一接口执行外部功能。
- Prompt 模板定义与渲染:支持按需渲染与管理提示模板,帮助 LLM 客户端在对话中获取上下文信息。
- 会话与能力声明:维护会话状态、模型能力声明,支持多模型与动态上下文切换。
- 与客户端的通信协议:通过 JSON-RPC 进行请求/响应,支持多传输协议(如 STDIO、SSE、WebSocket),实现流式和非流式交互。
- 安全与扩展性:设计可扩展的插件/工具体系,便于接入新的模型提供商、工具或资源源。
- 安装步骤
- 克隆代码并进入项目目录(示例性步骤,具体路径以实际仓库结构为准)。
- 构建后端服务(使用 Gradle 构建或按仓库提供的构建方式生成可执行产物)。
- 可选择性使用 Docker 进行快速部署:在 infrastructure/docker 目录下配置并执行 docker compose 启动。
- 启动后端 MCP 服务(按仓库中定义的端口暴露,例如 8081/8082 等,具体端口以实际部署为准)。
- 启动 MCP 客户端(LLM/前端)并指向对应 MCP 服务器的 API 端点。
- 服务器配置(MCP 客户端需要的最小信息)
配置示例(JSON,供 MCP 客户端读取并连接服务器):
{
"serverName": "forge-knowledge-mcp",
"command": "java",
"args": [
"-jar",
"forge-knowledge-mcp/build/libs/forge-knowledge-mcp.jar",
"--server.port=8081"
],
"description": "Knowledge MCP 服务实例,提供知识库资源与相关工具"
},
{
"serverName": "forge-database-mcp",
"command": "java",
"args": [
"-jar",
"forge-database-mcp/build/libs/forge-database-mcp.jar",
"--server.port=8082"
],
"description": "Database MCP 服务实例,提供数据访问相关能力"
},
{
"serverName": "forge-service-graph-mcp",
"command": "java",
"args": [
"-jar",
"forge-service-graph-mcp/build/libs/forge-service-graph-mcp.jar",
"--server.port=8083"
],
"description": "Service Graph MCP 服务实例,提供服务拓扑上下文"
}
注释:
- serverName: 服务器在 MCP 客户端侧的标识名称,需与实际部署保持一致。
- command/args: 启动服务器的命令及参数,包含必要的执行参数和端口设置(若后端服务使用不同的启动方式,请调整相应字段)。
- 以上示例基于仓库中存在的 MCP 服务模块及 Spring Boot/Gradle 构建的常见打包方式,实际部署时请以构建产物的实际名称和可用端口为准。
- 基本使用方法
- 运行与连接
- 在同一个网络环境下,确保 MCP 服务器对外暴露的端口可访问。
- 使用 MCP 客户端连接指定的 MCP 服务器地址,例如 http://<host>:8081/api/mcp/tools 读取可用工具,/api/mcp/resources 获取资源列表,/api/mcp/tools/call 调用工具。
- 常用操作
- 列出可用工具:通过 MCP 客户端的 listTools 等调用,获取工具名称和输入模式。
- 调用工具:通过 callTool 指定工具名称和参数,获取执行结果(文本/图片/资源等内容)。
- 读取资源:listResources、readResource 等接口获取资源内容。
- 获取与渲染 Prompt:通过接口获取提示模板并在对话中渲染上下文。
- 部署与扩展
- 可以将 Knowledge、Database、Service Graph 等 MCP 服务独立部署,形成多服务器集群。
- 客户端可通过 MCP 公共库统一访问不同服务器的能力,便于扩展新工具与资源。
- 运行与连接
- 基本使用注意事项
- MCP 客户端与服务器之间通过标准 JSON-RPC 风格的请求/响应通信,尽量保持请求格式与返回结构的一致性。
- 服务器端需要实现会话管理、能力声明,以及对不同传输协议的支持(如 STDIO/SSE/WebSocket),以确保在不同场景下的交互体验。
- 部署时请确保正确设置网络与端口,以及必要的鉴权与安全机制,以保护资源与工具的访问。