mcp-framework

GitHub
909 105 简单 1 次阅读 今天MIT语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

mcp-framework 是一个专为 TypeScript 开发者设计的开源框架,旨在帮助用户优雅、高效地构建符合模型上下文协议(MCP)的服务器。它解决了传统开发中手动配置繁琐、架构不统一以及缺乏类型安全等痛点,让开发者能专注于业务逻辑而非底层基础设施。

该工具非常适合希望扩展 AI 助手能力、构建自定义工具链的后端工程师和全栈开发者。通过 mcp-framework,用户可以利用基于目录的自动发现机制,轻松注册和管理工具、资源及提示词,无需编写大量样板代码。其核心技术亮点包括:原生支持多种传输协议(如 stdio、SSE 和 HTTP Stream),提供完整的 TypeScript 类型安全保障,并内置了针对 SSE 端点的 OAuth 2.1、JWT 等认证方案。此外,它强大的命令行界面(CLI)不仅支持一键创建项目和添加功能模块,还集成了严格的自动化验证流程,确保每个工具的定义清晰、文档完整,从而显著降低出错率并提升协作效率。无论是快速原型开发还是生产级部署,mcp-framework 都能提供坚实可靠的架构支持。

使用场景

某金融科技团队正在开发一个能让 AI 助手实时查询股票行情并生成投资建议的 MCP 服务,以便集成到内部交易终端中。

没有 mcp-framework 时

  • 架构混乱:开发者需手动编写底层通信逻辑(如 stdio 或 SSE),导致工具、资源和提示词的代码分散,难以维护。
  • 类型安全隐患:缺乏统一的 TypeScript 抽象层,输入参数校验依赖手写逻辑,容易因字段缺失或类型错误导致运行时崩溃。
  • 文档不同步:工具的参数描述常与代码实现脱节,AI 模型经常因无法理解模糊的工具定义而调用失败。
  • 部署繁琐:每次新增功能都需重复配置传输协议和认证机制,从构思到上线往往耗时数天。

使用 mcp-framework 后

  • 自动发现架构:利用基于目录的自动加载特性,只需将新工具文件放入指定文件夹,mcp-framework 即可自动识别并注册,无需修改主入口代码。
  • 强类型校验:通过内置的 Zod 模式定义工具参数,mcp-framework 在构建时自动强制要求每个字段包含描述,确保类型安全且文档即时生成。
  • 智能验证机制:执行 mcp validate 或在构建时自动检查,若发现字段缺少描述会立即报错,彻底杜绝了 AI 调用时的“幻觉”式失败。
  • 一键启动:借助 CLI 命令 mcp create 和预置的认证模块(如 JWT/API Key),团队能在几分钟内搭建起支持多种传输协议的生产级服务器。

mcp-framework 通过标准化的架构和自动化验证,将 MCP 服务的开发周期从数天缩短至小时级,同时确保了 AI 交互的准确性与稳定性。

运行环境要求

操作系统
  • macOS
  • Windows
  • Linux
GPU

未说明

内存

未说明

依赖
notes该工具是基于 TypeScript 的框架,需安装 Node.js 和 npm。不支持 Python 环境。支持多种传输协议(stdio, SSE, HTTP Stream)。开发时建议使用 Zod 定义 schema 并强制要求字段描述以通过验证。
python不适用 (基于 Node.js/TypeScript)
mcp-framework
zod
typescript
node
mcp-framework hero image

快速开始

MCP 框架

MCP-Framework 是一个用于以优雅的方式在 TypeScript 中构建模型上下文协议(MCP)服务器的框架。

MCP-Framework 提供开箱即用的架构,支持基于目录的工具、资源和提示的自动发现。您可以使用我们强大的 MCP 抽象来以优雅的方式定义工具、资源或提示。我们的 CLI 使您轻松上手自己的 MCP 服务器。

特性

  • 🛠️ 自动发现并加载工具、资源和提示
  • 多种传输方式支持(stdio、SSE、HTTP 流)
  • 以 TypeScript 为先的开发,具有完全的类型安全性
  • 基于官方 MCP SDK 构建
  • 易于使用的工具、提示和资源基类
  • 为 SSE 端点提供开箱即用的身份验证(OAuth 2.1、JWT、API 密钥)

使用 MCP 框架构建的项目

以下项目和服务是使用 MCP 框架构建的:

  • tip.md

    一个加密货币打赏服务,允许 AI 助手帮助用户直接从聊天界面向内容创作者发送加密货币打赏。该 MCP 服务支持:
    • 检查用户的钱包类型
    • 为用户/代理准备加密货币打赏以完成交易 各种客户端(Cursor、Sage、Claude Desktop)的设置说明可在其 MCP 服务器文档 中找到。

支持我们的工作

以加密货币打赏

在此阅读完整文档

使用 MCP 框架创建仓库

使用 CLI(推荐)

# 全局安装框架
npm install -g mcp-framework

# 创建一个新的 MCP 服务器项目
mcp create my-mcp-server

# 进入您的项目
cd my-mcp-server

# 您的服务器已准备就绪!

CLI 使用方法

该框架提供了一个功能强大的 CLI 来管理您的 MCP 服务器项目:

项目创建

# 创建新项目
mcp create <您的项目名称>

# 使用新的实验性 HTTP 传输方式创建新项目
注意:这会将 CORS 允许的源设置为“*”,如果您需要,请在 index 文件中进行修改。
mcp create <您的项目名称> --http --port 1337 --cors

选项:

--http:使用 HTTP 传输方式代替默认的 stdio

--port <数字>:指定 HTTP 端口(默认:8080)

--cors:启用带有通配符 (*) 访问的 CORS

添加工具

# 添加新工具
mcp add tool price-fetcher

构建与验证

该框架提供了全面的验证,以确保您的工具被正确地记录并正常运行:

# 推荐使用自动验证进行构建
npm run build

# 使用自定义验证设置进行构建
MCP_SKIP_TOOL_VALIDATION=false npm run build  # 强制验证(默认)
MCP_SKIP_TOOL_VALIDATION=true npm run build   # 跳过验证(不推荐)

验证工具

# 验证所有工具是否具有适当的描述(针对 Zod 模式)
mcp validate

此命令会检查所有使用 Zod 模式的工具,确保每个字段都有描述。验证会在构建时自动运行,但您也可以单独运行它:

  • 构建时npm run build 会自动验证工具
  • 单独运行mcp validate 可用于手动验证
  • 开发时:使用 defineSchema() 辅助函数可获得即时反馈
  • 运行时:服务器会在启动时验证工具

验证错误示例:

❌ 工具验证失败:
  ❌ PriceFetcher.js:price_fetcher 中的 symbol 和 currency 字段缺少描述。
  使用 Zod 对象模式时,所有字段都必须有描述。
  请对每个字段使用 .describe() 方法,例如 z.string().describe("字段描述")。

将验证集成到 CI/CD 流程中:

{
  "scripts": {
    "build": "tsc && mcp-build",
    "test": "jest && mcp validate",
    "prepack": "npm run build && mcp validate"
  }
}

添加提示

# 添加新提示
mcp add prompt price-analysis

添加资源

# 添加新资源
mcp add resource market-data

开发工作流

  1. 创建您的项目:

    mcp create my-mcp-server
    cd my-mcp-server
    
  2. 添加工具:

    mcp add tool data-fetcher
    mcp add tool data-processor
    mcp add tool report-generator
    
  3. 定义您的工具模式并进行自动验证:

    // tools/DataFetcher.ts
    import { MCPTool, MCPInput as AddToolInput } from "mcp-framework";
    import { z } from "zod";
    
    const AddToolSchema = z.object({
      a: z.number().describe("要相加的第一个数字"),
      b: z.number().describe("要相加的第二个数字"),
    });
    
    class AddTool extends MCPTool {
      name = "add";
      description = "加法工具描述";
      schema = AddToolSchema;
    
      async execute(input: AddToolInput<this>) {
        const result = input.a + input.b;
        return `结果:${result}`;
      }
    }
    
    export default AddTool;
    
  4. 使用自动验证进行构建:

    npm run build  # 自动验证模式并编译
    
  5. 可选:单独运行验证:

    mcp validate  # 独立检查所有工具
    
  6. 测试您的服务器:

    node dist/index.js  # 服务器会在启动时验证工具
    
  7. 添加到 MCP 客户端(参见下方 Claude Desktop 示例)

实用技巧:

  • 在开发过程中使用 defineSchema() 以获得即时反馈
  • 构建过程会自动捕获缺失的描述
  • 服务器启动时会验证所有工具,然后才接受连接
  • 使用 TypeScript 的自动补全功能配合 MCPInput<this> 以提升开发体验

与 Claude Desktop 配合使用

本地开发

将以下配置添加到您的 Claude Desktop 配置文件中:

MacOS~/Library/Application Support/Claude/claude_desktop_config.json Windows%APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "${projectName}": {
      "command": "node",
      "args":["/绝对路径/to/${projectName}/dist/index.js"]
    }
  }
}

发布后

将以下配置添加到您的 Claude Desktop 配置文件中:

MacOS~/Library/Application Support/Claude/claude_desktop_config.json Windows%APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "${projectName}": {
      "command": "npx",
      "args": ["${projectName}"]
    }
  }
}

构建与测试

  1. 对您的工具进行更改
  2. 运行 npm run build 进行编译
  3. 服务器将在启动时自动加载您的工具

环境变量

该框架支持以下环境变量进行配置:

变量 描述 默认值
MCP_ENABLE_FILE_LOGGING 启用文件日志记录(true/false) false
MCP_LOG_DIRECTORY 日志文件将存储的目录 logs
MCP_DEBUG_CONSOLE 在控制台显示调试级别消息(true/false) false

示例用法:

# 启用文件日志记录
MCP_ENABLE_FILE_LOGGING=true node dist/index.js

# 指定自定义日志目录
MCP_ENABLE_FILE_LOGGING=true MCP_LOG_DIRECTORY=my-logs node dist/index.js

# 在控制台启用调试信息
MCP_DEBUG_CONSOLE=true node dist/index.js

快速入门

定义工具

MCP 框架使用 Zod 模式来定义工具输入,提供类型安全、验证和自动文档:

import { MCPTool, MCPInput } from "mcp-framework";
import { z } from "zod";

const AddToolSchema = z.object({
  a: z.number().describe("要相加的第一个数"),
  b: z.number().describe("要相加的第二个数"),
});

class AddTool extends MCPTool {
  name = "add";
  description = "加法工具描述";
  schema = AddToolSchema;

  async execute(input: MCPInput<this>) {
    const result = input.a + input.b;
    return `结果:${result}`;
  }
}

export default AddTool;

主要优势:

  • 单一事实来源 - 在一处定义类型和验证规则
  • 自动类型推断 - TypeScript 类型从您的模式中推断出来
  • 丰富的验证功能 - 利用 Zod 强大的验证特性
  • 强制性描述 - 框架会强制要求提供文档说明
  • 更好的 IDE 支持 - 完整的自动补全和类型检查
  • 更整洁的代码 - 无需重复定义类型

高级 Zod 模式特性

该框架支持所有 Zod 特性:

import { MCPTool, MCPInput } from "mcp-framework";
import { z } from "zod";

const AdvancedSchema = z.object({
  // 字符串约束和格式
  email: z.string().email().describe("用户电子邮件地址"),
  name: z.string().min(2).max(50).describe("用户姓名"),
  website: z.string().url().optional().describe("可选的网站 URL"),
  
  // 数字约束
  age: z.number().int().positive().max(120).describe("用户年龄"),
  rating: z.number().min(1).max(5).describe("1 到 5 的评分"),
  
  // 数组和对象
  tags: z.array(z.string()).describe("标签列表"),
  metadata: z.object({
    priority: z.enum(['low', 'medium', 'high']).describe("任务优先级"),
    dueDate: z.string().optional().describe("ISO 格式的截止日期")
  }).describe("附加元数据"),
  
  // 默认值
  status: z.string().default('pending').describe("当前状态"),
  
  // 联合类型和枚举
  category: z.union([
    z.literal('personal'),
    z.literal('work'),
    z.literal('other')
  ]).describe("类别类型")
});

class AdvancedTool extends MCPTool {
  name = "advanced_tool";
  description = "演示高级 Zod 特性的工具";
  schema = AdvancedSchema;

  async execute(input: MCPInput<this>) {
    // TypeScript 自动知道所有类型!
    const { email, name, website, age, rating, tags, metadata, status, category } = input;
    
    console.log(input.name.toUpperCase()); // ✅ TypeScript 知道这是有效的
    console.log(input.age.toFixed(2));     // ✅ 可以使用数字方法
    console.log(input.tags.length);       // ✅ 可以使用数组方法
    console.log(input.website?.includes("https")); // ✅ 处理可选字段
    
    return `处理了用户:${name}`;
  }
}

自动类型推断

MCPInput<this> 类型会自动从您的模式中推断出正确的输入类型,从而无需手动定义类型:

class MyTool extends MCPTool {
  schema = z.object({
    name: z.string().describe("用户名"),
    age: z.number().optional().describe("用户年龄"),
    tags: z.array(z.string()).describe("用户标签")
  });

  async execute(input: MCPInput<this>) {
    // TypeScript 自动知道:
    // input.name 是 string
    // input.age 是 number | undefined  
    // input.tags 是 string[]
    
    console.log(input.name.toUpperCase()); // ✅ TypeScript 知道这是有效的
    console.log(input.age?.toFixed(2));    // ✅ 正确处理可选字段
    console.log(input.tags.length);       // ✅ 可以使用数组方法
  }
}

再也不需要重复定义接口或泛型类型参数了!

模式验证与描述

所有模式字段都必须有描述。这确保了您的工具文档齐全,并在 MCP 客户端中提供更好的用户体验。

框架会在多个层面验证描述:

1. 构建时验证(推荐)

npm run build  # 在编译过程中自动验证

2. 开发时验证

使用 defineSchema 辅助函数以获得即时反馈:

import { defineSchema } from "mcp-framework";

// 如果缺少描述,此操作会立即抛出错误
const MySchema = defineSchema({
  name: z.string(),  // ❌ 错误:缺少描述
  age: z.number().describe("用户年龄")  // ✅ 好的
});

3. 独立验证

mcp validate  # 检查所有工具是否具有适当的描述

4. 运行时验证

服务器会在启动时自动验证工具。

若要跳过验证(不推荐):

# 构建时跳过
MCP_SKIP_TOOL_VALIDATION=true npm run build

# 开发时跳过
NODE_ENV=production npm run dev

设置服务器

import { MCPServer } from "mcp-framework";

const server = new MCPServer();

// 或者(互斥!)使用 SSE 传输
const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      port: 8080            // 可选(默认:8080)
    }
  }
});

// 启动服务器
await server.start();

传输配置

stdio 传输(默认)

如果未提供传输配置,将默认使用 stdio 传输:

const server = new MCPServer();
// 或显式指定:
const server = new MCPServer({
  transport: { type: "stdio" }
});

SSE 传输

要使用服务器发送事件(SSE)传输:

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      port: 8080,            // 可选(默认:8080)
      endpoint: "/sse",      // 可选(默认:"/sse")
      messageEndpoint: "/messages", // 可选(默认:"/messages")
      cors: {
        allowOrigin: "*",    // 可选(默认:"*")
        allowMethods: "GET, POST, OPTIONS", // 可选(默认:"GET, POST, OPTIONS")
        allowHeaders: "Content-Type, Authorization, x-api-key", // 可选(默认:"Content-Type, Authorization, x-api-key")
        exposeHeaders: "Content-Type, Authorization, x-api-key", // 可选(默认:"Content-Type, Authorization, x-api-key")
        maxAge: "86400"      // 可选(默认:"86400")
      }
    }
  }
});

HTTP 流传输

要使用 HTTP 流传输:

const server = new MCPServer({
  transport: {
    type: "http-stream",
    options: {
      port: 8080,                // 可选(默认:8080)
      endpoint: "/mcp",          // 可选(默认:"/mcp") 
      responseMode: "batch",     // 可选(默认:"batch"),可为 "batch" 或 "stream"
      batchTimeout: 30000,       // 可选(默认:30000毫秒)——批量响应的超时时间
      maxMessageSize: "4mb",     // 可选(默认:"4mb")——消息的最大大小
      
      // 会话配置
      session: {
        enabled: true,           // 可选(默认:true)
        headerName: "Mcp-Session-Id", // 可选(默认:"Mcp-Session-Id")
        allowClientTermination: true, // 可选(默认:true)
      },
      
      // 流的可恢复性(用于处理丢失的消息)
      resumability: {
        enabled: false,          // 可选(默认:false)
        historyDuration: 300000, // 可选(默认:300000毫秒 = 5分钟)——保留消息历史的时间长度
      },
      
      // CORS 配置
      cors: {
        allowOrigin: "*"         // 其他 CORS 选项使用默认值
      }
    }
  }
});

响应模式

HTTP 流传输支持两种响应模式:

  1. 批量模式(默认):响应会被收集并作为单个 JSON-RPC 响应发送。这适用于典型的请求-响应模式,在大多数情况下效率更高。

  2. 流模式:所有响应都会通过为每个请求打开的持久化 SSE 连接发送。这非常适合长时间运行的操作,或者当服务器需要对单个请求发送多条消息时。

您可以根据具体需求配置响应模式:

// 对于批量模式(默认):
const server = new MCPServer({
  transport: {
    type: "http-stream",
    options: {
      responseMode: "batch"
    }
  }
});

// 对于流模式:
const server = new MCPServer({
  transport: {
    type: "http-stream",
    options: {
      responseMode: "stream"
    }
  }
});

HTTP 流传输特性

  • 会话管理:自动会话跟踪与管理
  • 流的可恢复性:可选支持在连接中断后恢复流
  • 批量处理:支持 JSON-RPC 批量请求/响应
  • 全面的错误处理:提供包含 JSON-RPC 错误码的详细错误响应

身份验证

MCP 框架为 SSE 端点提供了可选的身份验证功能。您可以选择 JWT、API 密钥、OAuth 2.1 身份验证,或实现您自己的自定义身份验证提供程序。

JWT 身份验证

import { MCPServer, JWTAuthProvider } from "mcp-framework";
import { Algorithm } from "jsonwebtoken";

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      auth: {
        provider: new JWTAuthProvider({
          secret: process.env.JWT_SECRET,
          algorithms: ["HS256" as Algorithm], // 可选(默认:["HS256"])
          headerName: "Authorization"         // 可选(默认:"Authorization")
        }),
        endpoints: {
          sse: true,      // 保护 SSE 端点(默认:false)
          messages: true  // 保护消息端点(默认:true)
        }
      }
    }
  }
});

客户端必须在 Authorization 头中包含有效的 JWT 令牌:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

API 密钥身份验证

import { MCPServer, APIKeyAuthProvider } from "mcp-framework";

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      auth: {
        provider: new APIKeyAuthProvider({
          keys: [process.env.API_KEY],
          headerName: "X-API-Key" // 可选(默认:"X-API-Key")
        })
      }
    }
  }
});

客户端必须在 X-API-Key 头中包含有效的 API 密钥:

X-API-Key: your-api-key

OAuth 2.1 身份验证

MCP 框架支持符合 MCP 规范(2025-06-18)的 OAuth 2.1 身份验证,包括受保护资源元数据(RFC 9728)以及使用 JWKS 的正确令牌验证。

OAuth 身份验证同时适用于 SSE 和 HTTP 流传输,并支持两种验证策略:

JWT 验证(推荐用于性能优化)

JWT 验证会从您的授权服务器的 JWKS 端点获取公钥,并在本地验证令牌。由于无需为每个请求都与认证服务器进行往返通信,因此这是最快的选项。

import { MCPServer, OAuthAuthProvider } from "mcp-framework";

const server = new MCPServer({
  transport: {
    type: "http-stream",
    options: {
      port: 8080,
      auth: {
        provider: new OAuthAuthProvider({
          authorizationServers: [
            process.env.OAUTH_AUTHORIZATION_SERVER
          ],
          resource: process.env.OAUTH_RESOURCE,
          validation: {
            type: 'jwt',
            jwksUri: process.env.OAUTH_JWKS_URI,
            audience: process.env.OAUTH_AUDIENCE,
            issuer: process.env.OAUTH_ISSUER,
            algorithms: ['RS256', 'ES256'] // 可选(默认:['RS256', 'ES256'])
          }
        }),
        endpoints: {
          initialize: true,  // 保护会话初始化
          messages: true     // 保护 MCP 消息
        }
      }
    }
  }
});

环境变量:

OAUTH_AUTHORIZATION_SERVER=https://auth.example.com
OAUTH_RESOURCE=https://mcp.example.com
OAUTH_JWKS_URI=https://auth.example.com/.well-known/jwks.json
OAUTH_AUDIENCE=https://mcp.example.com
OAUTH_ISSUER=https://auth.example.com

令牌内省(推荐用于集中控制)

令牌内省通过调用您的授权服务器的内省端点来验证令牌。这提供了集中控制,并在需要实时令牌撤销时非常有用。

import { MCPServer, OAuthAuthProvider } from "mcp-framework";

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      auth: {
        provider: new OAuthAuthProvider({
          authorizationServers: [
            process.env.OAUTH_AUTHORIZATION_SERVER
          ],
          resource: process.env.OAUTH_RESOURCE,
          validation: {
            type: 'introspection',
            audience: process.env.OAUTH_AUDIENCE,
            issuer: process.env.OAUTH_ISSUER,
            introspection: {
              endpoint: process.env.OAUTH_INTROSPECTION_ENDPOINT,
              clientId: process.env.OAUTH_CLIENT_ID,
              clientSecret: process.env.OAUTH_CLIENT_SECRET
            }
          }
        })
      }
    }
  }
});

环境变量:

OAUTH_AUTHORIZATION_SERVER=https://auth.example.com
OAUTH_RESOURCE=https://mcp.example.com
OAUTH_AUDIENCE=https://mcp.example.com
OAUTH_ISSUER=https://auth.example.com
OAUTH_INTROSPECTION_ENDPOINT=https://auth.example.com/oauth/introspect
OAUTH_CLIENT_ID=mcp-server
OAUTH_CLIENT_SECRET=your-client-secret

OAuth 功能

  • RFC 9728 兼容性:自动提供受保护资源元数据端点 /.well-known/oauth-protected-resource
  • RFC 6750 WWW-Authenticate 头部:带有质询头部的正确 OAuth 错误响应
  • JWKS 密钥缓存:公钥缓存时间为 15 分钟(可配置)
  • 令牌内省缓存:内省结果缓存时间为 5 分钟(可配置)
  • 安全性:查询字符串中的令牌将被自动拒绝
  • 声明提取:您可以在工具处理程序中通过 AuthResult 访问访问令牌声明。

常见 OAuth 提供商

OAuth 提供商可与任何符合 RFC 标准的 OAuth 2.1 授权服务器配合使用:

  • Auth0:使用您的 Auth0 租户的 JWKS URI 和颁发者
  • Okta:使用您的 Okta 授权服务器配置
  • AWS Cognito:使用您的 Cognito 用户池的 JWKS 端点
  • Azure AD / Entra ID:使用 Microsoft Entra ID 端点
  • 自定义:任何符合 OAuth 2.1 标准的授权服务器

有关特定提供商的详细设置指南,请参阅 OAuth 设置指南

客户端使用

客户端必须在 Authorization 头部中包含有效的 OAuth 访问令牌:

# 使用 OAuth 令牌发起请求
curl -X POST http://localhost:8080/mcp \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

# 发现 OAuth 配置
curl http://localhost:8080/.well-known/oauth-protected-resource

安全最佳实践

  • 生产环境中始终使用 HTTPS:OAuth 令牌绝不应通过未加密的连接传输
  • 验证受众声明:防止令牌在不同服务之间重复使用
  • 使用短期令牌:降低令牌泄露后的风险
  • 启用令牌内省缓存:在保持安全性的前提下减少授权服务器的负载
  • 监控令牌错误:跟踪身份验证失败尝试以获取安全洞察。

自定义身份验证

您可以通过实现 AuthProvider 接口来实现自己的身份验证提供程序:

import { AuthProvider, AuthResult } from "mcp-framework";
import { IncomingMessage } from "node:http";

class CustomAuthProvider implements AuthProvider {
  async authenticate(req: IncomingMessage): Promise<boolean | AuthResult> {
    // 实现您的自定义身份验证逻辑
    return true;
  }

  getAuthError() {
    return {
      status: 401,
      message: "身份验证失败"
    };
  }
}

文档 MCP 服务器(@mcpframework/docs

您可以从任何 Fumadocs 站点或任何包含 llms.txt 的站点启动一个 MCP 文档服务器——AI 代理将获得搜索、浏览和检索您文档的工具。

快速入门(CLI)

# 构建一个新的文档 MCP 服务器项目
npx create-docs-mcp my-api-docs
cd my-api-docs

# 配置您的文档站点 URL
cp .env.example .env
# 编辑 .env → 设置 DOCS_BASE_URL=https://docs.myapi.com

# 构建并运行
npm run build
npm start

快速入门(程序化)

import { DocsServer, FumadocsRemoteSource } from "@mcpframework/docs";

const source = new FumadocsRemoteSource({
  baseUrl: "https://docs.myapi.com",
});

const server = new DocsServer({
  source,
  name: "my-api-docs",
  version: "1.0.0",
});

server.start();

源适配器

适配器 最适合 搜索
FumadocsRemoteSource Fumadocs 站点 原生 Orama 搜索,备用方案
LlmsTxtSource 包含 llms.txt 的任何站点 本地文本匹配
自定义 DocSource 任何文档后端 您的实现

内置 MCP 工具

工具 描述
search_docs 按关键词或短语搜索文档
get_page 获取页面的完整 Markdown 内容
list_sections 浏览文档的树状结构

添加到您的 MCP 客户端

# Claude 代码
claude mcp add my-api-docs -- node /path/to/my-api-docs/dist/index.js

# 或者使用环境变量
claude mcp add my-api-docs -e DOCS_BASE_URL=https://docs.myapi.com -- node /path/to/my-api-docs/dist/index.js

有关 Claude Desktop / Cursor 的配置和完整文档,请参阅 @mcpframework/docs README

许可证

MIT

版本历史

mcp-framework-v0.2.222026/04/16
mcp-framework-v0.2.212026/04/02
mcp-framework-v0.2.202026/04/02
mcp-framework-v0.2.192026/04/01
mcp-framework-v0.2.182026/02/05
mcp-framework-v0.2.172025/11/21
mcp-framework-v0.2.162025/11/14
mcp-framework-v0.2.152025/06/18
mcp-framework-v0.2.142025/06/16
mcp-framework-v0.2.132025/05/23
mcp-framework-v0.2.122025/05/23
mcp-framework-v0.2.112025/03/30
mcp-framework-v0.2.102025/03/30
mcp-framework-v0.2.92025/03/29
mcp-framework-v0.2.82025/03/28

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架