@cloudbase/mcp
@cloudbase/mcp 提供了一系列构建 MCP 的工具。包括
- Cloudbase 函数型云托管 支持。提供了针对函数型云托管 的框架,专注 MCP Server 开发,快速接入部署至函数型云托管
安装
npm i @cloudbase/mcp
使用示例
在函数型云托管上构建 MCP Server
此代码会默认在 /messages 提供 MCP Server 服务。
import { StreamableHTTPMCPServerRunner } from "@cloudbase/mcp/cloudrun";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
const createServer = () => {
const server = new McpServer({
name: "hello-world",
version: "1.0.0",
})
server.registerTool("getUserAge", {
description: "查询用户的年龄",
inputSchema: {
userName: z.string().describe("用户名"),
},
outputSchema: {
age: z.number().describe("年龄"),
},
}, ({userName}) => {
let structuredContent
if (userName === "张三") {
structuredContent = {
age: 18,
};
} else if (userName === "李四") {
structuredContent = {
age: 20,
};
} else {
throw new Error("未找到该用户的年龄");
}
return {
structuredContent,
content: [
{
type: "text",
text: JSON.stringify(structuredContent),
}
]
}
})
return { server };
}
export const main = (event, context) => {
return StreamableHTTPMCPServerRunner.run(event, context,createServer)
}
API Reference
StreamableHTTPMCPServerRunner
在函数型云托管 中运行 MCP Server 的工具类,提供了以下功能:
- 路由判断
- 鉴权
- 自动处理 HTTP 请求/响应
- Streamable HTTP Transport 支持
可以用几行代码在函数型云托管 上运行 MCP Server:
// 函数型云托管
// ...省略 createServer 函数实现
export const main = (event, context) => StreamableHTTPMCPServerRunner.run(event, context, createServer)
上述代码会在 /messages 提供 MCP Server 服务,默认根据从 HTTP Header 中读取的云开发 accessToken 进行拦截,只允许来自 apiKey 和管理员身份的调用。可以传入特定参数,修改默认行为:
// 函数型云托管
// ...省略 createServer 函数实现
const runner = new StreamableHTTPMCPServerRunner(createServer,
{
verifyAccess: false // 控制是否进行鉴权拦截
});
export const main = (event, context) => runner.run(event, context);
导入
import { StreamableHTTPMCPServerRunner } from '@cloudbase/mcp/cloudrun';
static run()
StreamableHTTPMCPServerRunner 上的静态方法,按默认配置在函数型云 托管 上运行 MCP Server。
// 函数型云托管
// ...省略 createServer 函数实现
export const main = (event, context) => StreamableHTTPMCPServerRunner.run(event, context, createServer)
参数
| 名称 | 类型 | 必需 | 描述 |
|---|---|---|---|
| event | 是 | 将函数型云托管 接收的 event 参数传入即可 | |
| context | 是 | 将函数型云托管 接收的 context 参数传入即可 | |
| createServer | 是 | 返回 MCP Server 的实例的函数 |
new()
创建一个 MCPServerRunner 实例,可传入参数控制 run() 方法的行为。
// ...省略 createServer 函数实现
const runner = new MCPServerRunner(createServer,
{
verifyAccess: true // 控制是否进行鉴权拦截
});
参数
| 名称 | 类型 | 必需 | 描述 |
|---|---|---|---|
| createServer | function | 是 | 创建并返回 MCP Server 实例的函数 |
| prop | object | 否 | 控制 MCPServerRunner 的行为 |
| prop.verifyAccess | boolean | 否 | 控制是否进行鉴权拦截,若为 true,则只允许来自 apiKey 和管理员身份的调用 |
| prop.sessionIdGenerator | () => string | 否 | sessionId 生成函数,若传入则会建立有状态的服务 |
| prop.sessionTimeout | number | 否 | sessionId 过期时间(ms),此参数仅在有状态的服务中生效 |
run()
根据 MCPServerRunner 实例上的参数配置在函数型云托管 上运行 MCP Server。
// 函数型云托管
// ...省略创建 MCP Server 实例过程
const runner = new MCPServerRunner(createServer,
{
verifyAccess: true // 控制是否进行鉴权拦截
});
export const main = (event, context) => runner.run(event, context);
参数
| 名称 | 类型 | 必需 | 描述 |
|---|---|---|---|
| event | 是 | 将函数型云托管 接收的 event 参数传入即可 | |
| context | 是 | 将函数型云托管 接收的 context 参数传入即可 |
MCPServerRunner
在函数型云托管 中运行 MCP Server 的工具类,提供了以下功能:
- 路由判断
- 鉴权
- 自动处理 HTTP 请求/响应
- SSE Transport 支持
可以用几行代码在函数型云托管 上运行 MCP Server:
// 函数型云托管
// ...省略 createServer 函数实现
export const main = (event, context) => MCPServerRunner.run(event, context, createServer)
上述代码会在 /messages 提供 MCP Server 服务,默认根据从 HTTP Header 中读取的云开发 accessToken 进行拦截,只允许来自 apiKey 和管理员身份的调用。可以传入特定参数,修改默认行为:
// 函数型云托管
// ...省略 createServer 函数实现
const runner = new MCPServerRunner(createServer,
{
verifyAccess: false // 控制是否进行鉴权拦截
});
export const main = (event, context) => runner.run(event, context);
导入
import { MCPServerRunner } from '@cloudbase/mcp/cloudrun';
static run()
MCPServerRunner 上的静态方法,按默认配置在函数型云托管 上运行 MCP Server。
// 函数型云托管
// ...省略 createServer 函数实现
export const main = (event, context) => MCPServerRunner.run(event, context, createServer)
参数
| 名称 | 类型 | 必需 | 描述 |
|---|---|---|---|
| event | 是 | 将函数型云托管 接收的 event 参数传入即可 | |
| context | 是 | 将函数型云托管 接收的 context 参数传入即可 | |
| createServer | 是 | 返回 MCP Server 的实例的函数 |
new()
创建一个 MCPServerRunner 实例,可传入参数控制 run() 方法的行为。
// ...省略 createServer 函数实现
const runner = new MCPServerRunner(createServer,
{
verifyAccess: true // 控制是否进行鉴权拦截
});