mcpField
M
MCP Joke Server with Authentication

MCP Joke Server with Authentication

本地服务
github.com/flowsoft-org开发工具067 周前更新

关于 MCP Joke Server with Authentication

MCP Joke Server with Authentication 是使用 FastAPI 和 FastMCP 构建带身份验证 MCP 服务的示例,面向学习服务器认证配置的开发者。示例演示通过 Microsoft Entra ID 的 OAuth2 Bearer 令牌保护端点。

主要功能

  1. 01使用 FastAPI 和 FastMCP 构建服务
  2. 02通过 OAuth2 Bearer 令牌认证
  3. 03配置 Microsoft Entra ID
  4. 04验证受保护端点

适用场景

  1. 01学习 MCP 服务的身份验证实现
  2. 02为端点配置 Entra ID 令牌验证
  3. 03在 VS Code GitHub Copilot Agent mode 中运行服务

MCP 相关

该项目示范使用 Microsoft Entra ID OAuth2 Bearer 令牌保护 MCP 服务,并说明如何将其配置到 GitHub Copilot Agent mode。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP 身份验证示例 🚀

此仓库包含使用 FastAPI 和 FastMCP 构建带身份验证的 Model Context Protocol(MCP)服务的示例代码。

运行服务 🖥️

  1. 在 VS Code 中打开此文件夹 2.(如果使用 devcontainer)按提示点击“Reopen in Container”
  2. 安装依赖项:
    pip install -r requirements.txt
    
  3. 启动服务:
    python server.py
    

服务将在 http://localhost:8000 上启动

使用 Microsoft Entra ID(Azure AD)进行身份验证 🔐

此示例演示如何使用 Microsoft Entra ID(Azure AD)提供的 OAuth2 Bearer 令牌保护 MCP 服务。

所需的 Entra ID 应用设置 🛠️
  1. 通过 Azure Portal 在 Microsoft Entra ID(Azure AD)中注册应用。
  2. 公开 API:
    • 在应用注册中,转到“Expose an API”。
    • 设置应用程序 ID URI(例如,api://<APPUUID>)。
    • 添加一个作用域(例如,mcp.tools)。
  3. 配置身份验证:
    • 如有需要,为客户端添加重定向 URI。
  4. 获取应用的以下值:
    • 租户 ID
    • 应用程序(客户端)ID
    • 应用程序 ID URI
    • 作用域名称
更新代码和资源元数据 ✏️
  • 更新 server.py 中的 BearerAuthProvider:

    • 将 <ENTRATENANTID> 替换为 Entra 租户 ID。
    • 将 <APPUUID> 替换为应用程序(客户端)ID 或应用程序 ID URI。
    • 设置正确的 jwks_uri、issuer、audience 和 required_scopes。

    示例:

    auth = BearerAuthProvider(
        jwks_uri="https://login.microsoftonline.com/<ENTRATENANTID>/discovery/v2.0/keys",
        issuer="https://sts.windows.net/<ENTRATENANTID>/",
        algorithm="RS256",
        audience="api://<APPUUID>",
        required_scopes=["mcp.tools"]
    )
    
  • 更新 oauth-protected-resource.json:

    • 确保此文件与应用的元数据一致,包括资源 ID、作用域和颁发者。
示例:oauth-protected-resource.json 📄
{
  "resource": "api://<APPUUID>",
  "issuer": "https://sts.windows.net/<ENTRATENANTID>/",
  "scopes": ["mcp.tools"]
}

将占位符替换为实际值。

GitHub Copilot Agent 模式 🤖

此 MCP 服务也可在 VS Code 的 GitHub Copilot Agent 模式下使用。启用方法如下:

  1. 确保服务正在运行。
  2. 使用 mcp.json 文件为 GitHub Copilot 配置 MCP 服务。
  3. 根据 mcp.json 配置启动服务。

测试 🧪

你可以使用 curl 测试受保护的端点:

curl -H "Authorization: Bearer <token>" http://localhost:8000/mcp

如果未提供令牌或令牌无效,你将收到 401 Unauthorized 响应。

许可证 📜

请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。