MCP Annotated Java Server SDK
使用说明(Markdown 格式)
-
项目简介
- 这是一个基于注解的 MCP(Model Context Protocol)服务器框架,用 Java 实现。通过在资源、工具、提示等组件上使用注解,自动注册到 MCP 服务端,LLM 客户端可以通过统一的协议读取资源、调用工具、获取并执行提示模板。
-
主要功能点
- 注解驱动的资源、工具、提示注册与暴露
- 支持三种服务器模式:STDIO(标准输入输出)、SSE(服务端事件,HTTP)、STREAMABLE(HTTP 流式传输)
- i18n(多语言)支持,组件文本可本地化
- 配置文件驱动:support 融合基础配置与按环境的 profile 配置
- JSON Schema 与结构化内容支持:工具可返回文本与结构化内容
- 反射与缓存机制以提高性能
-
安装步骤
- 使用 Maven 构建并打包项目(提供 Maven Wrapper)
- 将示例主类(如 TestMcpStdioServer)作为入口启动,或将你自己的带有 @McpServerApplication 注解的应用打包成 JAR 使用
- 通过命令行启动示例服务器(详见下一节的服务器配置)
-
服务器配置
- MCP 服务器配置除了 YAML 基础文件外,MCP 客户端还需要一个启动命令及参数来启动服务器。本仓库提供了示例入口 TestMcpStdioServer,作为 STDIO 模式的参考。
- 下面给出一个可直接用于客户端的配置示例(JSON 格式,字段含义在括号内说明;仅供参考,实际使用以你的环境为准): { "serverName": "mcp-server", "command": "java", "args": ["-cp", "<classpath>", "com.github.thought2code.mcp.annotated.test.TestMcpStdioServer"] }
- 说明
- serverName: 服务器在 MCP 客户端中的名称,建议与 YAML 配置中的 name 保持一致
- command: 启动服务器的命令,示例中为 Java 运行为前提
- args: 启动参数,范围可包含 -cp、-jar 等,<classpath> 需替换为实际的类路径,若打包成 JAR 则可改为 ["-jar", "your-app.jar"]
-
基本使用方法
- 构建并打包后,使用客户端加载上述配置后即可启动并连接到服务器
- STDIO 模式的服务端通过标准输入/输出与同一进程或通过管道进行交互
- SSE/STREAMABLE 模式则通过 HTTP 端点提供资源、提示、工具等
- 客户端可通过 MCP 的标准调用方式读取资源、调用工具、获取提示并执行完成等操作
- 详见仓库中的单元测试和示例类(如 TestMcpStdioServer、TestMcpStdioServer.main、TestMcpTools、TestMcpPrompts 等)
-
注意事项
- 生产环境建议使用 STREAMABLE 模式,以获得更稳定的网络传输和可扩展性
- 配置文件(如 mcp-server.yml)以及 profile 配置支持合并,确保必填项正确且非空
- 系统依赖 Java 17+,并使用相应的依赖与打包方式