
easy-mcp

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