使用说明
AutoMCP
AutoMCP是一个代码生成器 模型上下文协议 它根据YAML服务定义自动创建服务器和客户端代码。
这是一项正在进行的工作。该仓库包含的工件将在完成打包npm、pypl等时被删除。
请参考 MCP代理 了解如何在代理工作流中使用它。
特性
- 生成MCP兼容的服务器代码
- 生成客户端库以便于使用服务
- 创建用于实现工具功能的处理程序存根
- 在专用目录中按服务组织代码
入门指南
先决条件
- Node.js 18或更高版本
- npm或纱线
安装
- 克隆此存储库
- 安装依赖项:
npm install
用法
定义服务
在中创建一个YAML文件 services/[service-name]/ 目录具有以下结构:
service:
name: ServiceName
version: 1.0.0
description: Description of your service
tools:
- name: toolName
description: Description of what the tool does
parameters:
- name: paramName
type: string
description: Description of the parameter
returns:
type: string
description: Description of what the tool returns
生成代码
运行生成器脚本:
./bin/automcp.sh generate
这将:
- 在中创建服务器代码
generated/[service-name]/[service-name]_server.ts - 在中创建客户端代码
generated/[service-name]/[service-name]_client.ts - 在中创建处理程序存根
src/custom/[service-name]/[tool-name]Handlers.ts
实现处理程序
在中编辑生成的处理程序文件 src/custom/[service-name]/ 实现您的工具功能。
使用生成的客户端
import { ServiceNameClient } from "./generated/service-name/service_name_client.js";
async function main() {
const client = new ServiceNameClient();
try {
await client.connect();
// Call a tool
const result = await client.toolName({ paramName: "value" });
console.log(result);
} finally {
await client.disconnect();
}
}
main().catch(console.error);
示例
请参阅 examples/client_example.ts 文件中显示了使用生成的客户端的完整示例。
测试
使用测试脚本验证服务的功能:
./bin/test-service.sh [service-name]
临时目录结构(将改进打包)
.
├── bin/ # Scripts
├── examples/ # Example usage
├── generated/ # Generated code
│ ├── service-name/ # Service-specific generated code
│ │ ├── service_name_server.ts
│ │ └── service_name_client.ts
├── services/ # Service definitions
│ └── service-name/ # Service-specific YAML files
├── src/ # Source code
│ ├── custom/ # Custom handler implementations
│ │ └── service-name/ # Service-specific handlers
│ │ └── toolHandlers.ts
│ └── generator.ts # Code generator
└── templates/ # Code templates
├── client.ts.ejs # Client template
└── server.ts.ejs # Server template
未来计划
- 支持多种编程语言
- 添加自定义类型,这样模式就不会偏离生成的代码
- 与现有MCP解决方案集成
- 使用提示和资源机制实施
- 复杂刀具链的增强组合机制
许可证
麻省理工学院