谷歌云资产清单-MCP服务器
该项目提供了一个用Go编写的基本模型上下文协议(MCP)服务器。它公开了Google Cloud Asset Inventory API作为一种工具,允许语言模型和其他兼容MCP的客户端在指定的Google Cloud项目中列出云资产。
此服务器设计为由MCP客户端作为本地子进程运行,通过标准输入和标准输出进行通信(stdio).
先决条件
在开始之前,请确保已安装并配置以下内容:
- 去:Go编程语言的最新版本(建议使用1.21或更高版本)。您可以从以下网址下载 Go官方网站.
- 谷歌云SDK:你一定有
gcloud命令行工具已安装并经过身份验证。服务器使用应用程序默认凭据进行授权,通过使用SDK登录最容易配置。
运行以下命令进行身份验证:
gcloud auth application-default login- 已启用的API:确保 云资产API 已为您要查询的Google Cloud项目启用。您可以在Google Cloud控制台中管理API。
入门指南
首先,检索项目所需的Go包依赖关系。在项目目录中打开终端并运行:
go mod tidy如何构建服务器
您可以将服务器编译为单个可执行文件。构建过程将根据您的目标操作系统略有不同。
标准构建(适用于您当前的操作系统)
要为当前的操作系统和体系结构构建可执行文件,请运行以下命令。这将创建一个名为 mcp-asset-server (或 mcp-asset-server.exe 在Windows上)的项目目录中。
go build -o mcp-asset-server .交叉编译(为其他操作系统构建)
Go使为与您正在开发的操作系统不同的操作系统构建可执行文件变得简单。这是通过设置 GOOS (目标操作系统)和 GOARCH (目标架构)环境变量。
为Linux构建(amd64)
从macOS或Windows,您可以使用以下命令构建Linux二进制文件:
GOOS=linux GOARCH=amd64 go build -o mcp-asset-server-linux .为macOS构建(amd64/Apple Silicon)
- 对于基于Intel的Mac(amd64):
GOOS=darwin GOARCH=amd64 go build -o mcp-asset-server-macos-amd64 .- 对于苹果硅Mac(M1/M2/M3,arm64):
GOOS=darwin GOARCH=arm64 go build -o mcp-asset-server-macos-arm64 .为Windows(amd64)构建
构建一个Windows可执行文件(它将具有 .exe 后缀),使用以下命令:
GOOS=windows GOARCH=amd64 go build -o mcp-asset-server.exe .使用Python ADK
此MCP服务器的主要用途是由代理作为工具集加载,例如使用 google-adk Python库。代理将管理服务器的生命周期,将其作为子流程运行,并通过 stdio.
首先,确保你有 google-adk 已安装库:
pip install google-adk接下来,您可以在Python中定义一个使用您编译的二进制文件的代理。在这个例子中 MCPToolset 已配置为运行macOS arm64 二元的。
示例 .env 文件:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=PASTE_YOUR_ACTUAL_API_KEY_HERE示例 requirements.txt:
google-adk>=1.3.0示例 _init_.py:
from . import agent示例 agent.py:
from google.adk import Agent
from google.adk.tools.mcp_tool import MCPToolset
from google.adk.tools.mcp_tool.mcp_toolset import StdioServerParameters
root_agent = Agent(
model="gemini-2.5-pro-preview-06-05",
name="root_agent",
description="An assist to find content available in Asset Inventory.",
instruction="Answer user questions to the best of your knowledge and provide relevant content from Asset Inventory.",
tools=[
MCPToolset(
connection_params=StdioServerParameters(
command="./asset-inventory-mcp/mcp-asset-server-macos-arm64",
args=["stdio"],
),
),
],
)
if __name__ == "__main__":
# The agent will automatically start the MCP server subprocess.
# The agent now has access to the `list_gcp_assets` tool.
print(root_agent.chat("Hi, can you list the GCS buckets in the 'your-gcp-project-id' project?"))
运作原理
- 构建二进制文件:按照“如何构建”一节中的描述,为您的特定操作系统和架构编译Go服务器。
- 更新路径:在Python脚本中,更改
command内部价值StdioServerParameters指向您刚才构建的二进制文件的正确路径。 - 运行代理:当你执行Python脚本时
google-adkframework会自动启动中指定的Go程序command路径。 - 沟通:代理通过以下方式与服务器通信
stdio,发现list_gcp_assets工具,现在可以使用它来满足用户请求。
