项目简介
easy-mcp 是一个基于 TypeScript 构建的 Model Context Protocol (MCP) 服务器框架,它提供了一套简洁的 API 和实验性的装饰器 API,用于快速搭建 MCP 服务器。该框架隐藏了底层复杂性,让开发者能够专注于定义资源 (Resources)、工具 (Tools) 和 Prompt 模板 (Prompts),从而轻松为 LLM 应用提供上下文服务。
主要功能点:
- 资源 (Resources) 管理: 支持定义和托管各种类型的资源,允许客户端通过 URI 访问数据。
- 工具 (Tools) 注册与执行: 允许注册外部功能为工具,并可通过 MCP 客户端调用执行。工具可以访问上下文信息,如日志记录和进度报告。
- Prompt 模板 (Prompts) 定义: 支持创建可配置的 Prompt 模板,以便客户端根据需求获取定制化的 Prompt。
- 灵活的 API: 提供类似 Express.js 的简洁 API 和实验性的装饰器 API,简化开发流程。
- 类型安全: 使用 TypeScript 开发,提供出色的类型安全性,减少运行时错误。
- 上下文对象 (Context Object): 工具函数可以访问上下文对象,从而利用 MCP 服务器提供的日志记录、进度报告等功能。
- 支持 Roots: 允许定义根目录,为资源访问提供基础路径。
安装步骤:
- 确保你的项目中已安装 Bun 包管理器。如果未安装,请访问 https://bun.sh/ 了解安装方法。
- 在你的项目目录中,运行以下命令安装 easy-mcp:
bun install easy-mcp
服务器配置:
MCP 客户端需要以下 JSON 格式的配置信息来连接 easy-mcp 服务器。你需要将以下配置信息填入 MCP 客户端的 server configuration 中。
{ "server name": "easy-mcp-server", // MCP 服务器的名称,可以自定义 "command": "bun", // 启动服务器的命令,这里使用 bun "args": [ // 启动命令的参数 "index.ts" // 指向 easy-mcp 服务器入口文件,这里假设为 index.ts,如果使用示例代码,则需要根据示例文件路径修改,例如 "examples/example-express.ts" ] }
注意:
- 'command' 和 'args' 需要根据你的实际环境和 easy-mcp 服务器的入口文件路径进行调整。
- 如果你的入口文件不是 'index.ts',请将 '"args"' 中的 '"index.ts"' 替换为你的入口文件路径。
- 如果使用示例代码,例如 'examples/example-express.ts',则 '"args"' 应配置为 '"examples/example-express.ts"'。
基本使用方法:
-
创建 EasyMCP 实例: 在你的入口文件 (例如 'index.ts') 中,导入 'EasyMCP' 类并创建一个实例,指定服务器名称和版本。
import EasyMCP from "easy-mcp"; const mcp = EasyMCP.create("my-mcp-server", { version: "0.1.0", }); -
定义 Resources, Tools, Prompts, Roots: 使用 'mcp.resource()', 'mcp.template()', 'mcp.tool()', 'mcp.prompt()', 'mcp.root()' 方法或装饰器 API (例如 '@Resource', '@Tool', '@Prompt', '@Root') 定义你的 MCP 服务器的功能。
示例 (Express-like API):
mcp.resource({ uri: "dir://desktop", fn: async () => { return "file://desktop/file1.txt"; }, }); mcp.tool({ name: "greet", fn: async ({ name }) => { return 'Hello, ${name}!'; }, });示例 (装饰器 API):
import { Resource, Tool, Prompt, Root } from "easy-mcp/lib/experimental/decorators"; @Root("/my-sample-dir/photos") class MyMCP extends EasyMCP { @Resource("greeting/{name}") getGreeting(name: string) { return 'Hello, ${name}!'; } @Tool() greet(name: string) { return 'Hello, ${name}!'; } @Prompt() greetingPrompt(name: string) { return 'Generate a greeting for ${name}.'; } } const mcp = new MyMCP({ version: "1.0.0" }); -
启动服务器: 调用 'mcp.serve()' 方法启动 MCP 服务器。
mcp.serve().catch(console.error); -
运行服务器: 在项目根目录下,使用 Bun 运行你的入口文件,例如:
bun index.ts或者,如果你的 'package.json' 中配置了启动脚本,可以使用 'bun start' 或其他自定义命令。
-
连接 MCP 客户端: 配置你的 MCP 客户端,使用上面生成的 'server_config.json' 连接到 easy-mcp 服务器。
更多信息:
- 请参考仓库中的 'README.md' 和 'examples' 目录,了解更详细的使用方法和示例代码。
- 装饰器 API 仍处于实验阶段,可能存在不稳定性和变更。
信息
分类
开发者工具