Cover image
Try Now
2025-03-21

基于指定的YAML模式,用于自动化MCP服务器和客户端代码的库

3 years

Works with Finder

1

Github Watches

1

Github Forks

1

Github Stars

AutoMCP

AutoMCP Logo

AutoMCP is a code generator for the Model Context Protocol that automatically creates server and client code based on YAML service definitions.

This is a work in progress. The repo contains artifacts that will be removed when finalized for packaging for npm, pypl, etc.

Please refer to MCP Agent to have an idea of how you could use this in agentic workflows.

Features

  • Generates MCP-compatible server code
  • Generates client libraries for easy service consumption
  • Creates handler stubs for implementing tool functionality
  • Organizes code by service in dedicated directories

Getting Started

Prerequisites

  • Node.js 18 or higher
  • npm or yarn

Installation

  1. Clone this repository
  2. Install dependencies:
    npm install
    

Usage

Defining a Service

Create a YAML file in the services/[service-name]/ directory with the following structure:

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

Generating Code

Run the generator script:

./bin/automcp.sh generate

This will:

  1. Create server code in generated/[service-name]/[service-name]_server.ts
  2. Create client code in generated/[service-name]/[service-name]_client.ts
  3. Create handler stubs in src/custom/[service-name]/[tool-name]Handlers.ts

Implementing Handlers

Edit the generated handler files in src/custom/[service-name]/ to implement your tool functionality.

Using the Generated Clients

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);

Example

See the examples/client_example.ts file for a complete example of using the generated clients.

Testing

Use the test script to verify the functionality of your services:

./bin/test-service.sh [service-name]

Temporary Directory Structure (will be improved for packaging)

.
├── 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

Future Plans

  • Support for multiple programming languages
  • Add custom typing so schemas do not drift from generated code
  • Integration with existing MCP solutions
  • Implement with prompts and resource mechanisms
  • Enhanced composition mechanisms for complex tool chains

License

MIT

相关推荐

  • NiKole Maxwell
  • I craft unique cereal names, stories, and ridiculously cute Cereal Baby images.

  • Bora Yalcin
  • Evaluator for marketplace product descriptions, checks for relevancy and keyword stuffing.

  • Joshua Armstrong
  • Confidential guide on numerology and astrology, based of GG33 Public information

  • https://suefel.com
  • Latest advice and best practices for custom GPT development.

  • Callycode Limited
  • A geek-themed horoscope generator blending Bitcoin prices, tech jargon, and astrological whimsy.

  • Alexandru Strujac
  • Efficient thumbnail creator for YouTube videos

  • Emmet Halm
  • Converts Figma frames into front-end code for various mobile frameworks.

  • Khalid kalib
  • Write professional emails

  • Elijah Ng Shi Yi
  • Advanced software engineer GPT that excels through nailing the basics.

  • Beniyam Berhanu
  • Therapist adept at identifying core issues and offering practical advice with images.

  • https://maiplestudio.com
  • Find Exhibitors, Speakers and more

  • apappascs
  • 发现市场上最全面,最新的MCP服务器集合。该存储库充当集中式枢纽,提供了广泛的开源和专有MCP服务器目录,并提供功能,文档链接和贡献者。

  • ShrimpingIt
  • MCP系列GPIO Expander的基于Micropython I2C的操作,源自ADAFRUIT_MCP230XX

  • OffchainLabs
  • 进行以太坊的实施

  • huahuayu
  • 统一的API网关,用于将多个Etherscan样区块链Explorer API与对AI助手的模型上下文协议(MCP)支持。

  • deemkeen
  • 用电源组合控制您的MBOT2:MQTT+MCP+LLM

    Reviews

    3 (1)
    Avatar
    user_B8EncOrh
    2025-04-15

    I've been using the Remote MCP Server on Cloudflare by juramaia-ai, and it has greatly improved my workflow. The integration is seamless and the performance is outstanding. I appreciate the reliability and security it offers, making remote management very efficient. Highly recommend to anyone looking for a robust server solution!