Cloudflare MCP开发实战 - 创建支持OAuth的MCP服务器(简版)
Cloudflare MCP开发实战 - 创建支持OAuth的MCP服务器(简版)
在当今AI应用生态中,MCP(Model Context Protocol)服务器扮演着至关重要的角色,它允许AI客户端通过标准化的接口访问各种工具和服务。而添加用户认证机制,不仅可以保护您的服务资源,还能为不同用户提供个性化的体验。
赛博菩萨 Cloudflare 提供了一组开发工具,以及开发者手册,帮助 MCP 开发者更加轻松地开发并部署 MCP 服务器到云端。现在 Cloudflare 开发工具也对 MCP OAuth做了进一步支持。
本文将带您利用Cloudflare 开发工具,一步步实现一个支持GitHub OAuth认证的MCP服务器。
最终效果预览
完成本教程后,您将获得以下用户体验:
- 当您在Inspector尝试连接MCP服务器,系统会将其重定向到GitHub进行身份验证
- 完成授权后,会自动返回到MCP Inspector
- MCP 服务器可以获取用户的GitHub信息(这也是未来个性化的工具和服务的基础)
开发环境准备
在开始之前,请确保您已安装:
- Node.js
- npm, yarn或pnpm
- Git
第一部分:创建基础MCP服务器
首先,我们需要创建一个基础的Cloudflare MCP服务器项目:
# 使用npx创建项目
npx create cloudflare@latest my-mcp-server-github --template=cloudflare/ai/demos/remote-mcp-server
在创建过程中,系统会询问:
- 是否使用Git进行版本控制?选择
yes - 是否需要部署?选择
no(我们先在本地开发环境运行)
项目创建完成后,进入项目目录并启动开发服务器:
cd my-mcp-server-github
npm run dev
此时,您的MCP服务器已在本地运行,默认端口为8787。
使用MCP Inspector进行测试
MCP Inspector是一个用于测试MCP服务器的工具。运行以下命令启动Inspector:
$ npx @modelcontextprotocol/inspector
现在,访问Inspector http://localhost:517:
- 将Transport Type设置为SSE
- URL设置为
http://localhost:8787/sse - 点击
Connect
此时,您会看到一个基本的授权页面,这是Cloudflare MCP服务器模板自带的简单认证机制。点击Approve后,您将返回Inspector界面。
您可以测试默认提供的add工具,例如设置a=100,b=200,执行后应返回300。
第二部分:添加GitHub OAuth支持
现在,我们将为MCP服务器添加GitHub OAuth认证支持。根据我的实测,按照 https://developers.cloudflare.com/agents/guides/remote-mcp-server/#add-authentication 的步骤创建的 MCP 服务器,无法正常运行并提供服务。因此,大家务必根据我的以下步骤操作。
1. 在GitHub创建OAuth应用
- 登录GitHub,进入Settings > Developer settings > OAuth Apps
- 点击"New OAuth App"
- 填写应用信息:
- Application name: MCP OAuth Demo
- Homepage URL: http://localhost:8787
- Authorization callback URL: http://localhost:8787/callback
创建完成后,您将获得Client ID,点击 Generate a new client secret 获取Client Secret。
2. 配置环境变量
在项目根目录创建.dev.vars文件,添加以下内容:
GITHUB_CLIENT_ID=您的GitHub Client ID
GITHUB_CLIENT_SECRET=您的GitHub Client Secret
3. 修改MCP服务器代码
需要修改以下文件:
src/index.ts- 主入口文件,配置OAuth和MCP服务器src/github-handler.ts- 处理GitHub OAuth流程src/utils.ts- 提供OAuth辅助函数
这些文件的主要功能:
index.ts- 定义MCP服务器和工具,配置OAuth提供者github-handler.ts- 处理OAuth授权和回调流程utils.ts- 提供OAuth辅助函数和UI渲染
4. 安装依赖
我们需要安装Octokit库来与GitHub API交互:
npm install octokit
第三部分:测试OAuth认证流程
现在,重启MCP服务器:
npm run dev
然后重启,并再次打开MCP Inspector,配置:
- Transport Type: SSE
- URL: http://localhost:8787/sse
- 点击Connect
这次,您将被重定向到GitHub进行授权。授权完成后,您将返回到Inspector。
点击"List Tools",您会看到两个工具:
- add - 简单的加法工具
- userInfoOctokit - 获取当前登录用户身份信息的工具
点击userInfoOctokit并点击 Run Tool,您将看到自己的GitHub用户名显示在结果中。
总结与拓展
通过本教程,我们成功实现了一个支持GitHub OAuth认证的MCP服务器。这种认证机制使您的MCP服务能够:
- 验证用户身份,确保只有授权用户才能访问
- 获取用户信息,提供个性化服务
- 根据用户权限提供不同的工具和功能
您可以基于此框架进一步拓展:
- 集成其他OAuth提供商(如Google、Microsoft等)
- 实现自定义权限控制,为不同用户提供不同工具
- 将MCP服务器与您现有的用户系统集成
希望本教程对您有所帮助!如有任何问题,欢迎在评论区留言。
参考资源
相关阅读