项目简介

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: 允许定义根目录,为资源访问提供基础路径。

安装步骤:

  1. 确保你的项目中已安装 Bun 包管理器。如果未安装,请访问 https://bun.sh/ 了解安装方法。
  2. 在你的项目目录中,运行以下命令安装 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"'。

基本使用方法:

  1. 创建 EasyMCP 实例: 在你的入口文件 (例如 'index.ts') 中,导入 'EasyMCP' 类并创建一个实例,指定服务器名称和版本。

    import EasyMCP from "easy-mcp";
    
    const mcp = EasyMCP.create("my-mcp-server", {
      version: "0.1.0",
    });
  2. 定义 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" });
  3. 启动服务器: 调用 'mcp.serve()' 方法启动 MCP 服务器。

    mcp.serve().catch(console.error);
  4. 运行服务器: 在项目根目录下,使用 Bun 运行你的入口文件,例如:

    bun index.ts

    或者,如果你的 'package.json' 中配置了启动脚本,可以使用 'bun start' 或其他自定义命令。

  5. 连接 MCP 客户端: 配置你的 MCP 客户端,使用上面生成的 'server_config.json' 连接到 easy-mcp 服务器。

更多信息:

  • 请参考仓库中的 'README.md' 和 'examples' 目录,了解更详细的使用方法和示例代码。
  • 装饰器 API 仍处于实验阶段,可能存在不稳定性和变更。

信息

分类

开发者工具