MCP (Model Context Protocol)
MCP (Model Context Protocol) 是由 Anthropic 开发的开放标准协议,用于将 AI 模型与外部数据源和工具安全连接。它允许 AI 应用程序与各种服务进行语义集成,为 AI 模型提供了获取实时信息、执行操作和访问资源的标准化方式。
Midway 提供了对 MCP 的完整支持和封装,能够简单快速地创建 MCP 服务器。本章节演示了如何在 Midway 体系下,提供 MCP 服务的方法。
Midway 当前采用了最新的 MCP SDK 进行开发,并提供了装饰器和框架集成,用于快速发布 MCP 服务。
相关信息:
提供服务
描述 | |
---|---|
可用于标准项目 | ✅ |
可用于 Serverless | ❌ |
可用于一体化 | ✅ |
包含独立主框架 | ✅ |
包含独立日志 | ✅ |
传输类型支持
传输类型 | 描述 | 支持状态 |
---|---|---|
stdio | 标准输入输出传输,适用于 CLI 应用 | ✅ |
stream-http | HTTP 流传输,推荐的现代传输方式 | ✅ |
sse | 服务器发送事件传输(已弃用,向下兼容) | ✅ |
安装依赖
在现有项目中安装 MCP 的依赖。
$ npm i @midwayjs/mcp@4 --save
$ npm i @modelcontextprotocol/sdk zod --save
注意
⚠️ Zod 版本兼容性重要提示
MCP SDK (@modelcontextprotocol/sdk
) 当前使用 Zod v3.x 版本。为确保兼容性,您的项目必须使用 Zod 3.x 版本,不要使用 Zod v4.x 或更高版本,否则会导致类型兼容性问题。
推荐安装特定版本:
$ npm i zod@^3.24.1 --save
如果使用 sse
或 stream-http
传输类型,还需要安装 HTTP 框架组件(选择其中一个):
# Express 框架
$ npm i @midwayjs/express@4 --save
# 或者 Koa 框架
$ npm i @midwayjs/koa@4 --save
# 或者 Egg.js 框架
$ npm i @midwayjs/web@4 --save
或者在 package.json
中增加如下依赖后,重新安装。
{
"dependencies": {
"@midwayjs/mcp": "^4.0.0",
"@modelcontextprotocol/sdk": "^1.19.0",
"zod": "^3.24.1",
"@midwayjs/express": "^4.0.0"
}
}
提示
如果使用 sse
或 stream-http
传输类型,您需要选择并安装一个 HTTP 框架:
@midwayjs/express
- Express 框架@midwayjs/koa
- Koa 框架@midwayjs/web
- Egg.js 框架
如果只使用 stdio
传输类型,则不需要安装 HTTP 框架组件。
开启组件
在 src/configuration.ts
中导入 MCP 组件:
import { Configuration } from '@midwayjs/core';
import * as mcp from '@midwayjs/mcp';
// 如果使用 sse/stream-http 传输类型,需要导入 HTTP 框架
import * as express from '@midwayjs/express';
@Configuration({
imports: [
express, // HTTP 框架(sse/stream-http 传输类型需要)
mcp // 导入 MCP 组件
],
// ...
})
export class MainConfiguration {}
信息
传输类型依赖说明:
stdio
传输:只需要导入@midwayjs/mcp
sse
或stream-http
传输:需要同时导入 HTTP 框架组件(如@midwayjs/express
)