基础设施成本MCP服务器
MCP服务器,允许Claude与Infracost交互,以进行Terraform成本估算和云治理。与Claude Desktop和Claude Code配合使用。
它做什么
- 生成Terraform配置的成本明细
- 比较不同配置或分支之间的成本
- 在Infrascost Cloud中创建和管理标记策略
- 设置成本护栏,阻止昂贵的公关
- 将成本评论发布到GitHub/GitLab/Azure/Bitbucket PR
- 上传资源分类的自定义属性
- 访问预定义的使用YAML文件进行成本估算
先决条件
安装
git clone infracost_mcp
cd infracost_mcp
npm install
npm run build配置
创建一个 .env 项目根目录中的文件:
INFRACOST_SERVICE_TOKEN=ics_v1_your_token_here
INFRACOST_ORG=your_org_slug从获取您的服务令牌 基础设施成本云仪表板 在“组织设置”>“API令牌”下。
用法
使用克劳德代码
回购包括 .mcp.json 和 .claude/agents/ 因此,它开箱即用——只需在Claude Code中打开项目,Infrascost工具即可使用。
使用克劳德桌面
添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json - 视窗:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"infracost": {
"command": "node",
"args": ["/absolute/path/to/infracost_mcp/dist/index.js"],
"env": {
"INFRACOST_SERVICE_TOKEN": "ics_v1_your_token"
}
}
}
}更新配置后重新启动Claude Desktop。
例子
自然语言查询
问克劳德这样的问题:
成本估算:
- “我的Terraform in./基础设施的每月费用是多少?”
- “以表格形式显示./terraform/prod的成本明细”
- “生成HTML成本报告并将其保存到report.HTML”
- “将infrascost.json中的成本估算上传到Infrascost Cloud”
成本比较:
- “比较./stating和./prod配置之间的成本”
- “如果我从t3.medium切换到t3.blarge,成本差异是多少?”
- “显示当前分支机构和主分支机构之间的成本变化”
标记策略:
- “创建需要环境和所有者标记的标记策略”
- “列出我所在组织的所有标记策略”
- 添加一个标记策略,只允许“dev”、“staging”、“prod”作为环境标记
- “更新标记策略,使其也需要CostCenter标记”
成本护栏:
- “设置护栏,阻止每月增加200美元以上的PR”
- “创建一个护栏,当基础设施总成本超过每月1万美元时发出警告”
- “我的生产回购成本增加超过25%的区块PR”
- “列出所有活动护栏”
拉取请求集成:
- “将infracost.json中的成本估算发布到所有者/仓库中的GitHub PR#123”
- “在当前GitLab合并请求中添加成本注释”
JSON示例
生成成本明细:
{
"path": "./terraform/prod",
"format": "json",
"outFile": "cost-estimate.json"
}比较配置:
{
"path": "./terraform/current",
"compareTo": "./terraform/baseline",
"format": "diff"
}创建标记策略:
{
"name": "Required tags policy",
"prComment": true,
"blockPr": true,
"tags": [
{
"key": "Environment",
"mandatory": true,
"valueType": "LIST",
"allowedValues": ["dev", "staging", "prod"]
},
{
"key": "Owner",
"mandatory": true,
"valueType": "REGEX",
"allowedRegex": "^[a-z]+\\.[a-z]+@company\\.com$"
}
]
}创建成本护栏:
{
"name": "Production cost limit",
"scope": {
"type": "REPO",
"repositories": ["myorg/prod-infrastructure"]
},
"increasePercentThreshold": 10,
"totalThreshold": 50000,
"blockPullRequest": true,
"commentOnPullRequest": true
}看 docs/EXAMPLES.md 查看更详细的示例。
可用工具
CLI工具(需要Infrascost CLI)
infracost_breakdown-生成Terraform基础设施的成本明细infracost_diff-显示两种配置之间的成本差异infracost_output-合并并格式化Infrascost JSON文件infracost_upload-将成本估算上传到Infrascost Cloudinfracost_comment-发布成本评论以拉取请求
云API工具(需要服务令牌)
标记策略:
infracost_cloud_list_tagging_policies-列出所有标记策略infracost_cloud_get_tagging_policy-获取特定的标记策略infracost_cloud_create_tagging_policy-创建新的标记策略infracost_cloud_update_tagging_policy-更新现有标记策略infracost_cloud_delete_tagging_policy-删除标记策略
护栏:
infracost_cloud_list_guardrails-列出所有护栏infracost_cloud_get_guardrail-获得特定的护栏infracost_cloud_create_guardrail-创建成本护栏infracost_cloud_update_guardrail-更新现有护栏infracost_cloud_delete_guardrail-删除护栏
自定义属性:
infracost_cloud_upload_custom_properties-通过CSV上传自定义属性值
MCP资源
服务器提供预定义的Infracost使用YAML文件作为MCP资源:
infracost://usage/small-开发环境的小使用默认值(每月5美元)infracost://usage/medium-临时环境的中等使用默认值(每月10美元)infracost://usage/large-生产环境的大使用默认值(每月20美元)infracost://usage/example-显示如何自定义使用值的示例模板
这些资源可用于了解基础设施成本使用文件,或作为创建自定义使用配置的模板。Claude可以直接访问这些资源,以帮助您根据实际使用模式进行成本估算。
项目结构
src/-TypeScript源代码dist/-编译的JavaScript输出(由创建npm run build)resources/-预定义的基础架构使用YAML文件docs/-其他文件和示例.claude/-Claude Code代理配置
发展
npm run build # Compile TypeScript
npm run watch # Watch mode for development
npm start # Run the MCP server故障排除
CLI工具不工作:
- 验证是否安装了Infrascost CLI:
infracost --version - 确保
INFRACOST_SERVICE_TOKEN设置正确
云API错误:
- 检查您的服务令牌是否具有必要的权限
- 验证组织结构块是否正确
服务器未连接:
- 确保路径
dist/index.js在MCP配置中是绝对的 - 更改配置后重新启动Claude Desktop
- 检查一下
npm run build已成功完成
未找到资源:
- 跑
terraform init首先在您的Terraform目录中 - 验证您的Terraform文件的路径是否正确
资源
许可证
麻省理工学院
