使用说明
MCP服务器生成器
一种基于Java的工具,用于从UI配置生成模型上下文协议(MCP)服务器。
特性
- 🎨 基于Web的用户界面 -用于配置MCP服务器的直观界面
- 🛠️ 工具配置 -使用参数定义自定义工具
- 📦 资源支持 -向MCP服务器添加资源
- 📝 代码生成 -自动生成TypeScript MCP服务器
- 👀 实时预览 -在构建之前预览生成的代码
- 🔧 100%开源 -内置Spring Boot、FreeMarker和MCP SDK
技术栈
- 后端:弹簧靴3.2.0
- 前端:HTML5、CSS3、JavaScript
- 模板:FreeMarker
- MCP-SDK:@modelcontextprotocol/sdk(TypeScript)
- 构建工具:Maven
先决条件
- Java 17或更高版本
- Maven 3.6+
- Node.js 18+(用于运行生成的服务器)
快速开始
1.构建应用程序
cd mcp-server-builder
mvn clean package
2.运行应用程序
mvn spring-boot:run
或者直接运行JAR:
java -jar target/mcp-server-builder-1.0.0.jar
3.打开Web用户界面
用法
-
配置您的服务器
- 输入服务器名称和描述
- 添加带有参数的工具
- (可选)添加资源
-
预览您的代码
- 点击“预览代码”查看生成的TypeScript
-
生成服务器
- 点击“生成服务器”
- 将在中创建服务器文件
generated-servers/[your-server-name]/
-
构建和使用生成的服务器
cd generated-servers/[your-server-name] npm install npm run build -
配置Claude桌面版 添加到您的
claude_desktop_config.json:{ "mcpServers": { "your-server-name": { "command": "node", "args": ["/absolute/path/to/generated-servers/your-server-name/build/index.js"] } } }
示例:天气工具
以下是一个配置示例:
工具名称: get_weather
描述:获取某个地点的当前天气
参数:
location(string,必填):城市名称units(字符串,可选):温度单位(摄氏度/华氏度)
实施:
const result = `The weather in ${args.location} is sunny!`;
return result;
API终点
POST /api/servers/generate-生成新的MCP服务器POST /api/servers/preview-预览生成的代码GET /api/servers/health-健康检查
项目结构
mcp-server-builder/
├── src/
│ ├── main/
│ │ ├── java/com/mcpbuilder/
│ │ │ ├── controller/ # REST controllers
│ │ │ ├── model/ # Data models
│ │ │ ├── service/ # Business logic
│ │ │ └── McpServerBuilderApplication.java
│ │ └── resources/
│ │ ├── templates/ # FreeMarker templates
│ │ │ ├── package.json.ftl
│ │ │ ├── server.ts.ftl
│ │ │ └── README.md.ftl
│ │ ├── static/ # Web UI files
│ │ │ ├── index.html
│ │ │ └── app.js
│ │ └── application.properties
├── generated-servers/ # Output directory
├── pom.xml
└── README.md
发展
监视模式
mvn spring-boot:run
为生产而建
mvn clean package -DskipTests
开发者笔记
- Lombok已从代码库中删除,以避免与某些JDK/工具设置的注释处理器兼容性问题。模型类现在包括显式getter和setter。
- 要求:Java 17+,Maven 3.6+。该项目是用
mvn clean package并且可以与一起运行mvn spring-boot:run或java -jar target/mcp-server-builder-1.0.0.jar. - 如果您希望重新启用Lombok,请添加Lombok依赖项并在中配置注释处理
pom.xml或者使用匹配的JDK/工具链;有关详细信息,请参阅项目的问题跟踪器。
贡献
欢迎投稿!请随时提交拉取请求。
支持
有关问题和疑问,请在GitHub上打开问题。
建于❤️ 使用Spring Boot和MCP SDK
重新生成并测试生成的服务器(辅助脚本)
提供了一个方便的脚本,用于为每个生成的服务器安装、构建和运行烟雾测试 generated-servers/.
要运行脚本(需要Node.js和npm):
cd mcp-server-builder
node ./scripts/regenerate_and_test_all.mjs
这将迭代中的所有子文件夹 generated-servers/,跑 npm install 和 npm run build,然后运行每个服务器的 test-client.mjs 吸烟测试并打印总结。
摩纳哥当地供应商(可选)
如果您需要Monaco Editor在本地提供服务(用于离线或企业网络演示),则会提供一个帮助脚本,将Monaco供应商添加到web静态资产中。
要求:本地安装Node.js和npm。
从存储库根目录运行:
node ./scripts/vendor_monaco.mjs
这将使摩纳哥处于 src/main/resources/static/vendor/monaco/min/vs 因此UI将在回退到CDN之前尝试在本地加载它。
将生成的服务器下载为ZIP
UI现在包括 下载ZIP 工具栏中的按钮;它调用后端端点 POST /api/servers/download 其返回所生成服务器的ZIP存档。这需要后端正在运行(端点在中实现) McpServerController).
# Example: generate server and download zip via curl (server running locally)
curl -X POST http://localhost:8080/api/servers/download -H 'Content-Type: application/json' -d @config.json --output myserver.zip
将UI部署到GitHub页面
您可以发布静态UI(前端下 src/main/resources/static)使用随附的GitHub Actions工作流访问GitHub页面。这将复制静态资产并将其发布到 gh-pages 每当您按下时,都会自动分支 main.
步骤:
- 确保您的存储库已推送到GitHub(源代码)。
- 工作流程
.github/workflows/deploy-gh-pages.yml运行推送main并将发布public目录到gh-pages使用内置GITHUB_TOKEN. - 工作流完成后,在您的GitHub存储库中,转到设置->页面,并确保源分支
gh-pages和目录/.
注意事项和警告:
- GitHub Pages仅支持静态托管。这
Download ZIP和Generate ServerUI中的功能调用后端端点(Spring Boot),在纯静态Pages站点上无法工作。 - 要获得完整功能(生成、下载zip),请在服务器(Heroku、Render、AWS、DigitalOcean或VM)上托管后端,并通过更新将UI指向后端URL
API_BASE在src/main/resources/static/app.js或者通过添加一个小型反向代理。
手动部署(备选):
- 建立一个
public/包含静态资产的文件夹(src/main/resources/static)并推动他们gh-pages分支(示例):
# From repository root
git checkout --orphan gh-pages
git --work-tree public add --all
git --work-tree public commit -m "Deploy static site"
git push origin gh-pages --force
# return to main branch
git checkout main
如果你想控制发布的内容,这种手动方法很有用。