使用说明
受控MCP示例-空气质量服务器
我构建这个是为了说明治理 我可以通过Apigee在任何可以通过HTTP访问的MCP服务器上应用。
此仓库包含:
-
一个用python实现的MCP服务器示例,使用 FastMCP框架 杰洛温服务器提供空气质量 位置的传感器读数。服务器不执行任何授权 检查。
-
一个示例Apigee API代理,作为该服务器的门面,提供 授权检查和401 WWW身份验证拦截。
免责声明
这个例子不是谷歌的官方产品,也不是 谷歌官方产品。
萤幕录影
这个屏幕 走过整个过程。
使用它
你可以自己做。
要设置此项,您需要一个适用于Cloud Run的GCP项目和一个Apigee 例子您需要正确的角色和权限:
- 创建服务帐户,
- 将服务部署到Cloud Run,
- 在Secret Manager中创建和管理机密
- 并导入+部署Apigee代理。
安装脚本使用apigeecli和gcloud之类的东西。
先决条件
-
您需要获得TomTom和Open Air的证书(API密钥) 通过访问提供优质服务:
- https://developer.tomtom.com/
- https://docs.openaq.org/
-
您需要设置一个OpenID Connect IDP,并配置一个新的 客户端ID和密码对。具体步骤因情况而异 您的IDP。要设置Auth0,您可以尝试 这些步骤.
此示例适用于任何符合OIDC的IDP,但我没有 每个IDP的具体步骤。
-
如果您想使用Gemini CLI作为MCP客户端,您还需要Gemini的API密钥。得到一个在https://ai.studio
您也可以将VSCode用作MCP客户端、MCP检查器或其他客户端。 我没有使用这些选项的说明。
服务和代理配置步骤
-
使用文本编辑器,打开 env-sample.txt 文件, 并修改它以使用您的设置。
关于这些设置:
设置 描述 CLOUDRUN_PROJECT_ID将运行示例MCP服务器的GCP项目的ID。 CLOUDRUN_REGION该地区(例如 us-west1)用于Cloud Run服务APIGEE_PROJECT_ID托管Apigee的GCP项目。这可以与Cloud Run项目相同,但并非必须如此 APIGEE_ENVApigee环境。 APIGEE_HOSTApigee中定义的DNS主机名,将允许调用代理 OIDC_SERVER#OIDC服务器的基础。请参阅下面的评论。 TOMTOM_API_KEYTomTom的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. -
打开终端窗口。 来源 您刚刚保存的修改后的文件,将所有这些设置放入您的环境中。
source .env -
为Cloud Run服务创建服务帐户。
./1-create-service-account-for-mcp-server.sh -
将秘密提供给秘密经理。这些包括 TomTom和OpenAQ密钥。
./2-provision-secrets.sh -
将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": [] }
-
-
如果您还没有,请安装
apigeecli./8-install-apigeecli.sh -
导入并部署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和密码 在运行时。
-
讨论
这只是一个例子。它说明了基础知识。也许你会想 根据你的目的扩展这个想法。以下是一些想法:
-
多个MCP虽然此示例显示单个API代理作为 单个MCP服务器的外观,在一般情况下,公司将有很多 MCP服务器。使用通配符基路径和简单的查找表 使用单个API代理作为大量MCP服务器的门面。
-
API产品检查.通过在API中包含VerifyAPIKey策略 代理,您还可以检查客户端对特定API的授权 产品。
-
基于用户的授权检查.通过在策略中包含ServiceCallout 决策点(类似于OPA),您可以包含细粒度的动态 Apigee代理中的授权检查。
许可证
这种材料是 版权所有©2025谷歌有限责任公司. 并根据 Apache 2.0许可证.
支持
这个例子是开源软件。如果 你需要帮助,你可以试试问 谷歌云社区论坛 献给Apigee 没有服务级别 保证对发布到该网站的询问做出回应。