代码生成工具

AutoMCP是一个基于YAML服务定义自动生成服务器和客户端代码的代码生成工具,适用于模型上下文协议(MCP)。

  • by beaukuhn
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 beaukuhn/automcp

使用说明

AutoMCP

AutoMCP是一个代码生成器 模型上下文协议 它根据YAML服务定义自动创建服务器和客户端代码。

这是一项正在进行的工作。该仓库包含的工件将在完成打包npm、pypl等时被删除。

请参考 MCP代理 了解如何在代理工作流中使用它。

特性

  • 生成MCP兼容的服务器代码
  • 生成客户端库以便于使用服务
  • 创建用于实现工具功能的处理程序存根
  • 在专用目录中按服务组织代码

入门指南

先决条件

  • Node.js 18或更高版本
  • npm或纱线

安装

  1. 克隆此存储库
  2. 安装依赖项:
    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

这将:

  1. 在中创建服务器代码 generated/[service-name]/[service-name]_server.ts
  2. 在中创建客户端代码 generated/[service-name]/[service-name]_client.ts
  3. 在中创建处理程序存根 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解决方案集成
  • 使用提示和资源机制实施
  • 复杂刀具链的增强组合机制

许可证

麻省理工学院