article
README
🚀 AutoMCP
AutoMCP 是一款强大的代码生成器,它能够基于 YAML 服务定义,为 模型上下文协议 自动生成服务器和客户端代码。目前该项目仍在持续开发中,仓库里包含一些临时文件,这些文件会在最终版本打包为 npm、pypl 等之前被移除。你可以参考 MCP Agent 了解如何在代理工作流中使用此工具。
🚀 快速开始
先决条件
- Node.js 18 或更高版本
- npm 或 yarn
安装
- 克隆此仓库
- 安装依赖:
npm install
使用方法
定义服务
在 services/[服务名称]/ 目录下创建一个 YAML 文件,结构如下:
service:
name: ServiceName
version: 1.0.0
description: 描述你的服务
tools:
- name: toolName
description: 描述工具的作用
parameters:
- name: paramName
type: string
description: 参数描述
returns:
type: string
description: 返回值的描述
生成代码
运行生成器脚本:
./bin/automcp.sh generate
这将执行以下操作:
- 在
generated/[服务名称]/[服务名称]_server.ts创建服务器代码 - 在
generated/[服务名称]/[服务名称]_client.ts创建客户端代码 - 在
src/custom/[服务名称]/[tool-name]Handlers.ts创建处理程序存根
实现处理程序
编辑生成的处理程序文件,位于 src/custom/[服务名称]/,以实现你的工具功能。
使用生成的客户端
import { ServiceNameClient } from "./generated/service-name/service_name_client.js";
async function main() {
const client = new ServiceNameClient();
try {
await client.connect();
// 调用一个工具
const result = await client.toolName({ paramName: "value" });
console.log(result);
} finally {
await client.disconnect();
}
}
main().catch(console.error);
✨ 主要特性
- 自动生成兼容 MCP 的服务器代码
- 生成易于服务消费的客户端库
- 创建实现工具功能的处理程序存根
- 按照服务组织代码,每个服务都有独立目录
💻 使用示例
基础用法
import { ServiceNameClient } from "./generated/service-name/service_name_client.js";
async function main() {
const client = new ServiceNameClient();
try {
await client.connect();
// 调用一个工具
const result = await client.toolName({ paramName: "value" });
console.log(result);
} finally {
await client.disconnect();
}
}
main().catch(console.error);
高级用法
你可以查看 examples/client_example.ts 文件以获取使用生成客户端的完整示例。
📦 安装指南
先决条件
- Node.js 18 或更高版本
- npm 或 yarn
安装步骤
- 克隆此仓库
- 安装依赖:
npm install
📚 详细文档
测试
使用测试脚本来验证服务功能:
./bin/test-service.sh [service-name]
临时目录结构(将改进以便于打包)
.
├── bin/ # 脚本
├── examples/ # 使用示例
├── generated/ # 生成代码
│ ├── service-name/ # 服务特定生成代码
│ │ ├── service_name_server.ts
│ │ └── service_name_client.ts
├── services/ # 服务定义
│ └── service-name/ # 服务名称
│ └── service.yaml # 服务 YAML 文件
└── src/
└── custom/[服务名称]/ # 自定义处理程序
未来计划
- 支持更多服务定义格式(如 JSON、XML)
- 增加对不同语言客户端生成的支持(如 Python、Java)
- 实现更复杂的工具参数验证和错误处理
- 提供图形化界面以便于配置和服务管理
📄 许可证
此项目使用 MIT 许可证,允许自由使用、修改和分发。请查看 LICENSE 文件以获取详细信息。
微信扫一扫