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),以确保在不同场景下的交互体验。
    • 部署时请确保正确设置网络与端口,以及必要的鉴权与安全机制,以保护资源与工具的访问。

服务器信息