返回市场
企业级MCP

企业级MCP

作者:joeymeere11 星标更新:2025-03-09

项目介绍

eMCP

<div> <img src="https://badgen.net/badge/version/1.0.1/orange"> <a href="https://www.npmjs.com/package/emcp" target="_blank"> <img src="https://img.shields.io/npm/v/emcp"> </a> </div> <br>

eMCP 是 LiteMCP 的一个分支,增加了内置的身份验证处理和自定义中间件支持等功能。

功能

此工具旨在作为类似 LiteMCP 工具的近乎直接替换。因此,所有新增的功能目前都是可选的。

  • 所有现有的 LiteMCP 功能
  • 内置身份验证处理器
  • 支持自定义分层中间件

快速开始

通过 Bun 或 NPM 安装:

npm i emcp
# 或者使用 Bun(推荐)
bun add emcp

基本用法

(可选)运行示例:

bun run example:basic
bun run example:auth
bun run example:middleware
bun run example:advanced
const server = new eMCP("mcp-server-with-auth", "1.0.0", {
  authenticationHandler: async (request) => {
    // 在这里实现你的自定义认证逻辑
    return true;
  },
});

// 对这个工具或任何其他资源或提示的请求
// 都需要由处理器管理的身份验证
server.addTool({
  name: "add",
  description: "加两个数",
  parameters: z.object({
    a: z.number(),
    b: z.number(),
  }),
  execute: async (args) => {
    server.logger.debug("正在加两个数", args);
    return args.a + args.b;
  },
});

自定义中间件

const server = new eMCP("mcp-server-with-middleware", "1.0.0", {
  authenticationHandler: async (request) => {
    // 在这里实现你的自定义认证逻辑
    return true;
  },
});

// 这会计算整个请求到响应周期的时间,包括中间件
server.use(async (request, next) => {
  const startTime = Date.now();
  server.logger.debug("请求开始", { method: request.method });

  // 等待所有内部中间件和处理器完成
  const response = await next();

  const endTime = Date.now();
  server.logger.debug("请求完成", {
    method: request.method,
    duration: `${endTime - startTime}ms`,
  });

  return response;
});

中间件是如何工作的

eMCP 中的中间件按照注册顺序运行。一旦每个中间件处理器都执行了其 next() 块,则标准的 MCP 处理程序将发生。当服务器完成处理后,中间件处理器的顺序将反向运行,对于 next() 块之后的代码也是如此。

简单来说,它看起来像这样:

<---- 接收到请求 ----
1. 中间件 1
2. 中间件 2
<---- 预处理完成 ---->
4. 服务器处理器
<---- 后处理开始 ---->
5. 中间件 2
6. 中间件 1
---- 发送响应 ---->

如果你熟悉像 Hono 这样的框架,那么这对你来说应该很熟悉。

路线图

  • 人体工程学 MCP<->MCP 通信
  • 集成到框架中

为什么?

因为我想要这样做