使用Vercel MCP处理程序和Descope Node SDK的Next.js MCP服务器
引言
这个示例展示了如何使用Vercel构建一个MCP服务器 MCP 处理器/处理器(根据上下文,“Handler”在这里可能指的是负责处理MCP(可能指某种特定任务或数据)的组件或模块,因此“MCP 处理器/处理器”是一个较为通用的翻译,具体含义需结合上下文确定) 使用Descope的Node SDK进行会话验证。服务器提供了一个简单的回显工具,并展示了如何使用Vercel的无服务器函数将Descope认证与模型上下文协议(MCP)集成。
关键组件
- Vercel's(的) MCP处理器(或MCP处理程序)处理MCP协议通信和无服务器函数部署
- Descope Node SDK(中文可译为“Descope节点软件开发工具包”)验证用户会话并提供身份验证上下文
- 回声工具一个简单的示例工具,返回“Hello, world!”消息
部署

您可以使用以下方式连接到服务器 MCP 检测器(或 MCP 检查器,具体翻译可能根据上下文调整) 或任何其他MCP客户端。请务必包含 /api/mcp 连接URL中的路径。
要求
在继续之前,请确保您已具备以下内容:
- (版本20或更高)
- 一个有效的权限缩减(或范围缩减) 项目编号
运行服务器
首先,在(某个地方)添加环境变量 .env 在根目录下的文件:
NEXT_PUBLIC_DESCOPE_PROJECT_ID= # Your Descope project ID
NEXT_PUBLIC_DESCOPE_BASE_URL= # Your Descope base URL (optional, defaults to https://api.descope.com)然后,安装依赖项:
npm i最后,运行服务器:
npm run dev服务器将在端口3000(或您环境变量中指定的端口)上启动。
API 端点
GET/POST /api/[transport]处理传入的MCP协议消息(支持SSE和HTTP传输)
认证
服务器使用Descope的Node SDK进行会话验证 verifyToken 功能:
- 从请求中提取承载令牌
- 使用Descope节点SDK验证会话
- 返回包含用户范围和客户端ID的身份验证上下文
- 所有MCP终端点均需要有效的承载令牌
管理工具的API密钥和OAuth令牌
如果你希望 Descope 管理你的 MCP 的 API 密钥或 OAuth 令牌,你可以使用 Node SDK 中的函数来在用户或租户级别获取出站应用程序令牌:
// Fetch user token with specific scopes
const userToken =
await descopeClient.management.outboundApplication.fetchTokenByScopes(
"my-app-id",
"user-id",
["read", "write"],
{ withRefreshToken: false },
"tenant-id"
);
// Fetch latest user token
const latestUserToken =
await descopeClient.management.outboundApplication.fetchToken(
"my-app-id",
"user-id",
"tenant-id",
{ forceRefresh: false }
);
// Fetch tenant token with specific scopes
const tenantToken =
await descopeClient.management.outboundApplication.fetchTenantTokenByScopes(
"my-app-id",
"tenant-id",
["read", "write"],
{ withRefreshToken: false }
);
// Fetch latest tenant token
const latestTenantToken =
await descopeClient.management.outboundApplication.fetchTenantToken(
"my-app-id",
"tenant-id",
{ forceRefresh: false }
);可用工具
- echo(回声)返回一个简单的“Hello, world!”消息
