# server2mcp **Repository Path**: TheEterna/server2mcp ## Basic Information - **Project Name**: server2mcp - **Description**: 这是一个革命性的MCP插件,具有出色的可插拔和封装功能。只需几行配置,它就可以很容易地集成到您的Spring引导web程序中,并为其提供MCP功能,优良的继承了spring系列框架强大的工程化能力,让javaSdk成为mcp开发首选 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3 - **Created**: 2025-04-16 - **Last Updated**: 2025-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Server2MCP [English](README.md) ## 这绝对是一个革命性的想法!!! 这是一个用于自动化集成 MCP (Model Control Protocol) 服务的 Spring Boot Starter。 # 设计思路 - 对Tool注册提供二级Filter, 因为对工具(几乎等同于方法)定义宽泛, 基本不需要专有注解即可注册出一个工具, 这必须提供更细粒度的过滤方式, 比如在一个类中, 我只想注册post接口的接口为工具. 但Resource等等更像是一种范式化的资源只是通过方法的方式表示和注册, 所以直接使用@McpResource等对应注解进行注册即可 # ✨功能特性 - 自动配置 MCP 服务,类似mybatis-plus于mybatis的关系,无侵入,纯增强 - 支持一切mcp的javaSdk原生功能,提供工具注册和回调机制等等 - 支持自定义 工具注册,通过@ToolScan注解 - 支持自定义 资源注册,通过@ResourceScan注解 - 支持自定义 提示词注册,通过@PromptScan注解 - 用户可自定义Parser,而无关责任链实现,完成独特接口注解的属性解析 - 拥有javadoc,swagger2,swagger3,springmvc(只负责部分解析逻辑),jackson 以及springai原生的tool 解析器 # ️🌟最新特性 - 对标最新mcp-sdk版本 0.11的快照版本, 自定义注解来体验最新特性, McpTool - McpTool 完全隔离springai的Tool环境, 实现独属于Mcp的Tool体系, 方法自动注入exchange, 轻松完成mcp客户端交互 - 暂未支持springai的配置类mineType, 融合在McpTool的注解属性中 # 👀未完善点 已经具有较为成熟的解析逻辑,目前主流解析逻辑已经较为完善,如果有我没考虑到的,欢迎踊跃交流,后续将会提供强有力的自定义扩展功能,用户可以通过简单的配置类等方式,来完成自定义注释注解的解析。 # 🎯快速开始    因为还没有推到中心仓库,可以把源码下载下来之后,在 server2mcp-starter-webmvc 文件夹下 进行 mvn clean install 后进行依赖引用 ## 添加依赖 com.ai.plug server2mcp-starter-webmvc 1.1.0-SNAPSHOT 然后在配置文件中添加配置: ```yaml plugin: mcp: enabled: true parser: param: JAVADOC, TOOL, SPRINGMVC, JACKSON, SWAGGER2, SWAGGER3 # 可不填 ,默认注册除JAVADOC之外的解析器 des: JAVADOC, TOOL, JACKSON, SWAGGER3, SWAGGER2 # 可不填 ,默认注册除JAVADOC之外的解析器 scope: interface # 有两种配置,custom和interface,默认interface,会预先注册controller下的接口为工具;custom 则不会预先注册工具 ```     以上就是该项目启动的最基本配置,它包含了所有的原生配置如spring.ai.mcp.server.name等等,interface配置它默认会将你的所有启动类路径下的所有controller注册为mcp接口,如果接口方法或类上有@Deprecated注解将不会注册。 ## 注意:JAVADOC解析器     javadoc的解析逻辑本质上就是通过解析源码文件,而上线之后java代码是以字节码 class文件的形式存在,所以javadoc就无法使用,但是javadoc的注解方式在开发者中间还是比较流行的,所以不能够完全舍弃。现给出解决方案,要使用javadoc方式的解析器,必须将源码打包到资源目录里,如果你使用maven,需要加一段打包配置,如下所示: ```xml org.apache.maven.plugins maven-resources-plugin copy-java-sources prepare-package copy-resources ${project.build.outputDirectory} src/main/java **/*.java ``` # 📚原理     可以理解为把接口开放给ai,所以这些接口和普通接口一样,只是可以通过ai调用,相关知识文档:[Model Context Protocol (MCP) :: Spring AI Reference ](https://docs.spring.io/spring-ai/reference/api/mcp/mcp-overview.html) 和 [Introduction - Model Context Protocol](https://modelcontextprotocol.io/introduction) # 💕最佳实践     拥有了该框架,你不必再去从0-1重新建造一个mcp服务应用,也不必高耦合的复制代码添加@Tool注解,或者在源代码上添加mcp功能,你只需要根据一个配置类添加自定义的@ToolScan注解,就可以轻松的完成mcp接口的注册,如果遇到mcp的SDK 改版怎么办,这不用担心,核心内容由我维护,且使用方式不变     1. 你可以轻松的去构建一个多智能体应用,只需要多个你自定义的ai对话接口,然后只需要在客户端进行相应的mcp接口调用即可轻松完成。     2. 可以为你的管理系统,快速接入ai对话调用,高自定义性,你无需关注任何ai领域细节,只需要关注你最擅长的领域web及前端,就可以完成炫酷的效果     3. 可以配合cursor这种简易的mcp客户端,轻松的完成接口调试 # 📄 版权声明/开源协议     根据 [Apache 2.0 许可证](https://www.apache.org/licenses/LICENSE-2.0.html)发布的代码