返回博客2025年3月27日

Cloudflare MCP开发实战 - 创建支持OAuth的MCP服务器(简版)

MCPCloudflareOAuthGitHub开发教程

Cloudflare MCP开发实战 - 创建支持OAuth的MCP服务器(简版)

在当今AI应用生态中,MCP(Model Context Protocol)服务器扮演着至关重要的角色,它允许AI客户端通过标准化的接口访问各种工具和服务。而添加用户认证机制,不仅可以保护您的服务资源,还能为不同用户提供个性化的体验。

赛博菩萨 Cloudflare 提供了一组开发工具,以及开发者手册,帮助 MCP 开发者更加轻松地开发并部署 MCP 服务器到云端。现在 Cloudflare 开发工具也对 MCP OAuth做了进一步支持。

本文将带您利用Cloudflare 开发工具,一步步实现一个支持GitHub OAuth认证的MCP服务器。

最终效果预览

完成本教程后,您将获得以下用户体验:

  1. 当您在Inspector尝试连接MCP服务器,系统会将其重定向到GitHub进行身份验证
  2. 完成授权后,会自动返回到MCP Inspector
  3. 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

  1. 将Transport Type设置为SSE
  2. URL设置为http://localhost:8787/sse
  3. 点击 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应用

  1. 登录GitHub,进入Settings > Developer settings > OAuth Apps
  2. 点击"New OAuth App"
  3. 填写应用信息:

创建完成后,您将获得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服务器代码

需要修改以下文件:

  1. src/index.ts - 主入口文件,配置OAuth和MCP服务器
  2. src/github-handler.ts - 处理GitHub OAuth流程
  3. 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,配置:

这次,您将被重定向到GitHub进行授权。授权完成后,您将返回到Inspector。

点击"List Tools",您会看到两个工具:

  1. add - 简单的加法工具
  2. userInfoOctokit - 获取当前登录用户身份信息的工具

点击userInfoOctokit并点击 Run Tool,您将看到自己的GitHub用户名显示在结果中。

总结与拓展

通过本教程,我们成功实现了一个支持GitHub OAuth认证的MCP服务器。这种认证机制使您的MCP服务能够:

  1. 验证用户身份,确保只有授权用户才能访问
  2. 获取用户信息,提供个性化服务
  3. 根据用户权限提供不同的工具和功能

您可以基于此框架进一步拓展:

  • 集成其他OAuth提供商(如Google、Microsoft等)
  • 实现自定义权限控制,为不同用户提供不同工具
  • 将MCP服务器与您现有的用户系统集成

希望本教程对您有所帮助!如有任何问题,欢迎在评论区留言。

参考资源


相关阅读

准备开始了吗?

先简单说明目标,我会给出最合适的沟通方式。