easy-mcp

easy-mcp

site icon
2025.01.20 119
TypeScriptMCP 服务器TypeScript 工具开发效率
EasyMCP 是一个用于在 TypeScript 中创建 Model Context Protocol (MCP) 服务器的简化工具。它通过简单的声明隐藏了底层的管道、格式化和其他样板定义,使开发者能够快速启动和运行 MCP 服务器。EasyMCP 提供了两种 API:一种是类似 Express 的 API,另一种是实验性的装饰器 API,后者能够自动推断工具、提示和资源的参数,无需定义输入模式。
View on GitHub

Overview

基本能力

产品定位

EasyMCP 旨在简化 MCP 服务器的创建过程,特别适合需要快速开发和部署 MCP 服务的 TypeScript 开发者。

核心功能

  • 简单 Express 风格 API:提供类似 ExpressJS 的高层 API,用于定义工具、提示、资源和根目录。
  • 实验性装饰器 API:自动推断工具、提示和资源的参数,减少样板代码。
  • 上下文对象:通过上下文对象访问 MCP 功能,如日志记录和进度报告。
  • 优秀的类型安全:提升开发体验,减少运行时错误。

适用场景

  • 快速构建 MCP 服务器原型。
  • 需要高度类型安全的 MCP 服务开发。
  • 希望通过装饰器简化代码的项目。

工具列表

  • Tool:定义工具,可以接受参数并返回结果。
  • Resource:定义资源或资源模板。
  • Prompt:定义提示,用于生成动态内容。
  • Root:定义根目录,用于组织资源。

常见问题解答

  • Beta 限制:目前不支持 MCP 采样、SSE 和资源更新通知。
  • 装饰器 API 稳定性:实验性功能,可能存在未发现的错误或未来变更。

使用教程

使用依赖

安装 EasyMCP 前,请确保已安装 Bun 运行时环境。

安装教程

在项目目录中运行以下命令安装 EasyMCP:

bun install

调试方式

安装完成后,可以通过以下命令启动示例服务器进行调试:

bun start:decorators

bun start:express

Express-Like API 示例

import EasyMCP from "easy-mcp";

const mcp = EasyMCP.create("my-mcp-server", {
  version: "0.1.0",
});

mcp.tool({
  name: "greet",
  description: "Greets a person",
  inputs: [
    {
      name: "name",
      type: "string",
      description: "The name to greet",
      required: true,
    },
  ],
  fn: async ({ name }) => {
    return `Hello, ${name}!`;
  },
});

mcp.serve().catch(console.error);

装饰器 API 示例

import EasyMCP from "./lib/EasyMCP";
import { Tool, Resource, Prompt } from "./lib/experimental/decorators";

class MyMCP extends EasyMCP {
  @Resource("greeting/{name}")
  getGreeting(name: string) {
    return `Hello, ${name}!`;
  }

  @Prompt()
  greetingPrompt(name: string) {
    return `Generate a greeting for ${name}.`;
  }

  @Tool()
  greet(name: string, optionalContextFromServer: Context) {
    optionalContextFromServer.info(`Greeting ${name}`);
    return `Hello, ${name}!`;
  }
}

const mcp = new MyMCP({ version: "1.0.0" });

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。