mcpField
C
cloud-tools

cloud-tools

本地服务
github.com/munhq云与基础设施04 周前更新

关于 cloud-tools

cloud-tools 是以 Rust 编写的 MCP 服务和 HTTP API,可查询 AWS、GCP、Cloudflare 和 OVH 的云支出、资源清单、浪费及承诺项。它从运行环境读取凭据,并仅执行只读查询。

主要功能

  1. 01查询成本及跨云支出
  2. 02查询受支持云平台的资源清单
  3. 03分析 AWS 和 GCP 资源浪费
  4. 04生成承诺项与建议报告
  5. 05检查访问状态和结果覆盖范围

适用场景

  1. 01查看多个云平台的支出
  2. 02识别闲置或规格过大的资源
  3. 03检查云平台访问权限及结果是否不完整
  4. 04查看承诺项和 GCP 建议

MCP 相关

通过 stdio 或可流式传输的 HTTP 提供八种只读工具,供 Agent 查询受支持的云平台。凭据保留在服务的运行环境中,不会放入工具调用。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"munhq-cloud-tools": {
"command": "npx",
"args": [
"-y",
"@munhq/cloud-tools"
],
"env": {
"CLOUD_TOOLS_MODE": "<CLOUD_TOOLS_MODE>"
}
}
}
}
启动命令npx -y @munhq/cloud-tools
需要配置的环境变量
CLOUD_TOOLS_MODEmcp for an MCP client over stdio, http for the REST API. Defaults to mcp, which is what every MCP client wants.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@munhq/cloud-tools0.2.0

工具

还没有获取到工具列表

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

详细介绍

cloud-tools

MCP 注册中心 Smithery Glama

在 Cursor 中安装 在 VS Code 中安装

使用 Rust 进行多云成本、资产清单和浪费分析——作为 MCP 服务提供,让 AI Agent 可以直接查询支出和浪费;其他功能则通过 HTTP API 提供。

它会报告支出和浪费情况:闲置实例、规格过大的节点、上一代硬件、未关联资源,以及未使用的承诺。

八种工具,一种形式

每种工具都只接受 cloud 及其所需的其他参数。工具调用中绝不会出现凭据——服务会从自身环境中读取凭据,因此 Agent 无须处理密钥,也无须获知密钥。

{ "cloud": "aws" }
{ "cloud": "gcp" }

从 check_access 开始。它不接受任何参数,不会连接任何云,并会报告此服务能够访问哪些云,以及无法访问的云缺少什么配置。

工具AWSGCPCloudflareOVH
check_access报告全部四种云的配置
get_costs是需要计费表是是
compare_costs是需要计费表——
get_inventory—是是是
get_waste是是——
get_commitments是是——
get_recommendations—是——
get_cross_cloud_summary此服务能够访问的所有云

横线不表示悄无声息地返回空结果。例如,工具会回答 waste analysis is not implemented for ovh; supported: aws, gcp,这样 Agent 就不会误把功能缺失当成账目正常。

正确解读零值

get_waste 和 get_inventory 会返回一个 coverage 字段和一个 errors 列表。 总计为零有两种截然不同的含义:

coverage含义
complete没有浪费。
PARTIAL — N API call(s) failed…无法读取账户中的部分内容。

部分结果不代表状况良好。

配置服务

凭据从运行 cloud-tools 的机器环境中读取。不会存储任何内容,所有调用均为只读。

AWS

按以下顺序解析,采用第一个匹配项:

  1. AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY
  2. ~/.aws/credentials,使用 AWS_PROFILE 指定的配置文件,否则使用 [default]
  3. ECS 任务角色
  4. EC2 实例角色

不会直接读取仅限 SSO 的配置文件。请先导出: aws configure export-credentials --profile <name> --format env。

若要扫描其他账户,请传入要代入的角色。角色 ARN 不是密钥,因此可以作为参数传入:

{ "cloud": "aws", "target": { "role_arn": "arn:aws:iam::…:role/ReadOnly" } }

如果每次调用都应代入同一角色,可通过 CLOUD_TOOLS_AWS_ROLE_ARN 和 CLOUD_TOOLS_AWS_EXTERNAL_ID 设置默认值。

get_waste 会读取 EC2 实例、卷、快照、AMI、弹性 IP、密钥对和预留实例;RDS;S3;Lambda;DynamoDB;ECS;ElastiCache;负载均衡器;NAT 网关;未设置保留期的 CloudWatch 日志组;以及 Compute Optimizer。闲置和规格过大的判断依据是 CloudWatch CPU 序列,因此是测量得出的,而非猜测。

GCP

应用默认凭据——只需运行 gcloud auth application-default login——或设置 GOOGLE_APPLICATION_CREDENTIALS,使其指向服务账号文件。

变量用途
CLOUD_TOOLS_GCP_PROJECTS要查询的项目 ID,以逗号分隔
CLOUD_TOOLS_GCP_BILLING_TABLEBigQuery 账单导出表,格式为 project.dataset.table

也可以在每次调用时通过 target.project_ids 选择项目,这样一个 Agent 就能扫描多个项目。

billing_table 很重要。Google 没有发布按服务划分的支出 API,因此实际成本需从 BigQuery 账单导出中获取。没有该表时,get_costs 会回退到 Budgets API,并将结果标记为 "source": "budgets",同时注明这些是预算金额,而非支出。compare_costs 则必须使用该表。

Cloudflare
CLOUDFLARE_API_TOKEN     a token with read access to account resources
CLOUDFLARE_ACCOUNT_ID
OVH
OVH_APPLICATION_KEY
OVH_APPLICATION_SECRET
OVH_CONSUMER_KEY
OVH_ENDPOINT             ovh-eu (default), ovh-us or ovh-ca

安装

尚未发布。 最新的标签是 v0.1.0,该版本发布的 .tar.gz 归档使用旧的资源名称,而且 npm 上没有 @munhq/cloud-tools。以下三个命令会在标记 v0.2.0 后立即生效。在此之前,请从源代码构建:cargo build --release。

作为 MCP 服务
claude mcp add cloud-tools -- npx -y @munhq/cloud-tools

适用于任何读取 JSON 配置的工具——Claude Desktop、Cursor、Windsurf、Zed、Cline:

{ "mcpServers": { "cloud-tools": { "command": "npx", "args": ["-y", "@munhq/cloud-tools"] } } }

npm 包只是一个轻量包装器,因为该服务是编译后的二进制文件,而非 JavaScript。安装时,它会解析适用于你平台的发布资源,根据已发布的 SHA256SUMS 验证文件,将其缓存到 ~/.cache/cloud-tools/bin/,然后执行。

作为二进制文件

Linux、macOS 和 Windows 的预编译二进制文件支持 x86_64 和 arm64,并附在每个发布版本中。下面的脚本会下载适用于你机器的版本,并根据 SHA256SUMS 校验:

curl -sSL https://raw.githubusercontent.com/munhq/cloud-tools/main/install.sh | bash

或者直接获取单个资源:

curl -fsSLO https://github.com/munhq/cloud-tools/releases/latest/download/cloud-tools-x86_64-linux
chmod +x cloud-tools-x86_64-linux
作为容器
docker run -i --rm \
  -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_REGION \
  munhq/cloud-tools

运行

构建为库(cloud_tools),并提供可选的二进制文件。两个功能标志默认均已启用:

  • mcp — 通过 rmcp 提供基于 stdio 和可流式 HTTP 的 MCP 服务
  • http — 通过 axum 提供 HTTP API
cargo build --release
./target/release/cloud-tools            # MCP server on stdio

作为 MCP 服务时,它可以接入任何支持 MCP 的 Agent。Agent 会直接调用上述工具,并根据结果进行推理。

如果要嵌入使用,请依赖该库并关闭二进制功能:

cloud-tools = { git = "https://github.com/munhq/cloud-tools", default-features = false }

状态

已可正常运行,并已用于 AWS、GCP、Cloudflare 和 OVH 的实际账号。浪费分析目前仅支持 AWS 和 GCP——Cloudflare 和 OVH 完全没有相关分析,而不只是规则较少;get_waste 会明确说明这一点,而不是返回空列表。AWS 目前还没有资源清单工具,不过其底层的资源列表调用已经实现。欢迎贡献代码,扩展对其他提供商的支持。

隐私政策

cloud-tools 不会收集任何信息。没有遥测、没有分析,也不会以任何形式主动向外发送数据——这一点已通过源码中唯一的主机得到验证:云服务提供商的 API,以及 npm 包装器用于下载适用于你平台的二进制文件的 github.com。

收集的信息。 什么也不收集。无需账户、无需注册,也不收集标识符。

处理的信息及处理位置。 你提供的凭据仅用于对你自己的云服务提供商发起请求,并在该次调用期间保存在内存中。服务运行在你的机器上,因此不会向 munhq 或任何第三方发送信息。响应只会返回给发起请求的 MCP 客户端,不会发送到其他地方。

存储和保留。 不会向磁盘写入任何内容,也不会保留任何信息。唯一的例外是 npm 包装器,它会将下载的二进制文件缓存在 ~/.cache/cloud-tools/bin/ 下,避免每次运行时都重新下载。该缓存中存放的是程序,而不是你的数据或凭据。

日志记录。 诊断信息会输出到 stderr,由你的 MCP 客户端捕获。绝不会记录凭据。错误消息会引用提供商自己的响应,其中可能包含项目名称、账户 ID 或资源名称——这些信息与工具被要求报告的信息相同。

与第三方共享。 不会共享。唯一的网络目的地是你所提供凭据对应的云服务提供商 API: AWS(*.amazonaws.com)、Google Cloud(*.googleapis.com)、Cloudflare (api.cloudflare.com)和 OVH(*.api.ovh.com、api.us.ovhcloud.com)。

权限。 所有工具只需只读权限即可。全部八个工具均声明了 readOnlyHint: true,且此服务中的任何内容都不会创建、修改或删除云资源。

联系方式。 [email protected]。本政策的权威版本位于 https://munhq.com/privacy/cloud-tools。

许可证

Apache-2.0。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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