返回 MCP 目录
public公开dns本地运行

automcp

AutoMCP是一个基于YAML服务定义自动生成MCP协议兼容的服务器和客户端代码的工具,支持快速实现工具功能并组织服务代码。

article

README

🚀 AutoMCP

AutoMCP 是一款强大的代码生成器,它能够基于 YAML 服务定义,为 模型上下文协议 自动生成服务器和客户端代码。目前该项目仍在持续开发中,仓库里包含一些临时文件,这些文件会在最终版本打包为 npm、pypl 等之前被移除。你可以参考 MCP Agent 了解如何在代理工作流中使用此工具。

🚀 快速开始

先决条件

  • Node.js 18 或更高版本
  • npm 或 yarn

安装

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

这将执行以下操作:

  1. generated/[服务名称]/[服务名称]_server.ts 创建服务器代码
  2. generated/[服务名称]/[服务名称]_client.ts 创建客户端代码
  3. 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

安装步骤

  1. 克隆此仓库
  2. 安装依赖:
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 文件以获取详细信息。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端