空气质量数据服务

一个通过Apigee代理提供治理功能的空气质量传感器数据服务,支持OpenID Connect身份验证和授权检查。

  • by DinoChiesa
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 DinoChiesa/Apigee-Authorization-Air-Quality-MCP

使用说明

受控MCP示例-空气质量服务器

我构建这个是为了说明治理 我可以通过Apigee在任何可以通过HTTP访问的MCP服务器上应用。

此仓库包含:

  • 一个用python实现的MCP服务器示例,使用 FastMCP框架 杰洛温服务器提供空气质量 位置的传感器读数。服务器不执行任何授权 检查。

  • 一个示例Apigee API代理,作为该服务器的门面,提供 授权检查和401 WWW身份验证拦截。

免责声明

这个例子不是谷歌的官方产品,也不是 谷歌官方产品。

萤幕录影

这个屏幕 走过整个过程。

使用它

你可以自己做。

要设置此项,您需要一个适用于Cloud Run的GCP项目和一个Apigee 例子您需要正确的角色和权限:

  • 创建服务帐户,
  • 将服务部署到Cloud Run,
  • 在Secret Manager中创建和管理机密
  • 并导入+部署Apigee代理。

安装脚本使用apigeecli和gcloud之类的东西。

先决条件

  1. 您需要获得TomTom和Open Air的证书(API密钥) 通过访问提供优质服务:

    • https://developer.tomtom.com/
    • https://docs.openaq.org/
  2. 您需要设置一个OpenID Connect IDP,并配置一个新的 客户端ID和密码对。具体步骤因情况而异 您的IDP。要设置Auth0,您可以尝试 这些步骤.

    此示例适用于任何符合OIDC的IDP,但我没有 每个IDP的具体步骤。

  3. 如果您想使用Gemini CLI作为MCP客户端,您还需要Gemini的API密钥。得到一个在https://ai.studio

    您也可以将VSCode用作MCP客户端、MCP检查器或其他客户端。 我没有使用这些选项的说明。

服务和代理配置步骤

  1. 使用文本编辑器,打开 env-sample.txt 文件, 并修改它以使用您的设置。

    关于这些设置:

    设置 描述
    CLOUDRUN_PROJECT_ID 将运行示例MCP服务器的GCP项目的ID。
    CLOUDRUN_REGION 该地区(例如 us-west1)用于Cloud Run服务
    APIGEE_PROJECT_ID 托管Apigee的GCP项目。这可以与Cloud Run项目相同,但并非必须如此
    APIGEE_ENV Apigee环境。
    APIGEE_HOST Apigee中定义的DNS主机名,将允许调用代理
    OIDC_SERVER #OIDC服务器的基础。请参阅下面的评论。
    TOMTOM_API_KEY TomTom的API密钥,您可以从中免费获得https://developer.tomtom.com/
    OPENAQ_API_KEY 用于Open AQ的API密钥,您可以从中免费获得https://docs.openaq.org/
    CLOUDRUN_SERVICE_NAME 云运行服务的名称。
    CLOUDRUN_SHORT_SA 云运行服务使用的服务帐户的名称。

    与OIDC服务器相关:此示例使用OAuth2和授权码授权。它要求 OpenID连接身份提供者,如Auth0、Entra ID或ForgeRock等。 对于Auth0租户,其值类似于https://dev-RANDOM-CHARS-HERE.us.auth0.com/ .

    无论你使用什么,它都应该符合IETF RFC 8414;MCP客户端将调用

      GET ${OIDC_SERVER}/.well-known/oauth-authorization-server
    

    …以发现授权和令牌端点。这些通常是 /authorize 和 /token ,但并非总是如此。

    在获得所有这些设置后,将修改保存到一个文件中,可能命名为 .env.

  2. 打开终端窗口。 来源 您刚刚保存的修改后的文件,将所有这些设置放入您的环境中。

    source .env
    
  3. 为Cloud Run服务创建服务帐户。

    ./1-create-service-account-for-mcp-server.sh
    
  4. 将秘密提供给秘密经理。这些包括 TomTom和OpenAQ密钥。

    ./2-provision-secrets.sh
    
  5. 将MCP服务器部署到云端运行

    ./3-deploy-mcp-to-cloud-run.sh
    

    现在,您应该能够与MCP服务器进行交互 在部署脚本发出的端点处。

    • 您可以使用 MCP检查员 为了做到这一点。

    • 或者,使用 Gemini CLI,打开 或创建文件 ~/.gemini/settings.json 并提供此 配置:

      {
        "mcpServers": {
          "air-quality": {
            "httpUrl": "https://air-quality-1923-999999222.us-west1.run.app/mcp"
          }
        }
        ....
      }
      

      将URL替换为Cloud Run服务中的URL。然后,开始 Gemini CLI,您应该能够与MCP服务器进行交互。

    • 您还可以将VSCode用作MCP客户端。在这种情况下,请将此用于MCP配置:

      {
        "servers": {
          "air-quality": {
            "url": "https://air-quality-1923-999999222.us-west1.run.app/mcp"
            "type": "http"
          }
        },
      
        "inputs": []
      }
      
  6. 如果您还没有,请安装 apigeecli

    ./8-install-apigeecli.sh
    
  7. 导入并部署Apigee代理:

    ./9-import-and-deploy-apigee-proxy.sh
    

    此时,如果将Apigee代理配置为MCP端点 并使用您的MCP客户端(Gemini CLI、VSCode、MCP检查器等), 您应该在适当的时候看到OpenID Connect登录。

    • 要使用Gemini CLI执行此操作,请修改 ~/.gemini/settings.json 文件到 提供此配置:

      {
        "mcpServers": {
          "air-quality-oauth": {
            "httpUrl": "https://apigee.endpoint.for.you/air-quality-oauth/mcp",
            "timeout": 4400,
            "oauth": {
              "enabled": true,
              "clientId": "OPENID_CLIENT_ID",
              "clientSecret": "OPENID_CLIENT_SECRET",
              "audiences": ["air-quality-oauth"]
            }
          }
        }
        ....
      }
      

      将URL替换为Apigee代理中的URL,并使用相应的 OpenID IDP中的客户端ID和密码。然后,重新启动Gemini CLI并键入 /mcp auth air-quality-oauth,然后你会看到引援,然后你 将能够与服务交互。

    • 如果您将VSCode用作MCP客户端,请停止并重新启动VSCode,以及何时 启动MCP服务器,您将看到登录体验。对于VScode你 不需要修改mcp.json文件,但是 你需要交互式 提供客户端ID和密码 在运行时。

讨论

这只是一个例子。它说明了基础知识。也许你会想 根据你的目的扩展这个想法。以下是一些想法:

  1. 多个MCP虽然此示例显示单个API代理作为 单个MCP服务器的外观,在一般情况下,公司将有很多 MCP服务器。使用通配符基路径和简单的查找表 使用单个API代理作为大量MCP服务器的门面。

  2. API产品检查.通过在API中包含VerifyAPIKey策略 代理,您还可以检查客户端对特定API的授权 产品。

  3. 基于用户的授权检查.通过在策略中包含ServiceCallout 决策点(类似于OPA),您可以包含细粒度的动态 Apigee代理中的授权检查。

许可证

这种材料是 版权所有©2025谷歌有限责任公司. 并根据 Apache 2.0许可证.

支持

这个例子是开源软件。如果 你需要帮助,你可以试试问 谷歌云社区论坛 献给Apigee 没有服务级别 保证对发布到该网站的询问做出回应。