基本能力
产品定位
EasyMCP 旨在简化 MCP 服务器的创建过程,特别适合需要快速开发和部署 MCP 服务的 TypeScript 开发者。
核心功能
- 简单 Express 风格 API:提供类似 ExpressJS 的高层 API,用于定义工具、提示、资源和根目录。
- 实验性装饰器 API:自动推断工具、提示和资源的参数,减少样板代码。
- 上下文对象:通过上下文对象访问 MCP 功能,如日志记录和进度报告。
- 优秀的类型安全:提升开发体验,减少运行时错误。
适用场景
- 快速构建 MCP 服务器原型。
- 需要高度类型安全的 MCP 服务开发。
- 希望通过装饰器简化代码的项目。
工具列表
- Tool:定义工具,可以接受参数并返回结果。
- Resource:定义资源或资源模板。
- Prompt:定义提示,用于生成动态内容。
- Root:定义根目录,用于组织资源。
常见问题解答
- Beta 限制:目前不支持 MCP 采样、SSE 和资源更新通知。
- 装饰器 API 稳定性:实验性功能,可能存在未发现的错误或未来变更。
使用教程
使用依赖
安装 EasyMCP 前,请确保已安装 Bun 运行时环境。
安装教程
在项目目录中运行以下命令安装 EasyMCP:
bash
bun install
调试方式
安装完成后,可以通过以下命令启动示例服务器进行调试:
bash
bun start:decorators
或
bash
bun start:express
Express-Like API 示例
```typescript
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 示例
```typescript
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" });
```