关于 Eco Router
Eco Router 是用于选择低碳 AWS、Google Cloud 和 Azure 区域的 MCP 服务。它按电网排放强度及可选的估算延迟排序,默认使用年度平均数据,也可通过 Electricity Maps 令牌获取实时数据。
主要功能
- 01按电网碳强度排列区域
- 02平衡碳排放与估算延迟
- 03按云服务商、国家和限制筛选
- 04查找低碳作业启动时段
- 05列出区域及其电网分区
- 06年度均值与可选实时数据
适用场景
- 01为云工作负载选择区域
- 02在国家和延迟限制内部署工作负载
- 03将灵活批处理安排在低碳时段
MCP 相关
MCP 服务提供区域排序、基于预测查找低碳启动时段,以及列出区域与对应电网分区的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| country | string | 否 | 仅返回此国家(ISO 3166-1 alpha-2,例如 "DE")或组(EU、EEA)中的区域。默认值:全部。 |
| provider | enum | 否 | 仅返回此云服务商的区域:"aws"、"gcp"(Google Cloud)或 "azure"。默认:全部。aws | gcp | azure |
详细介绍
Eco Router MCP
一个 MCP 服务,可帮助 AI Agent 为工作负载选择碳排放量最低的云区域。
同一项 GPU 任务产生的 CO₂ 排放量,可能会因数据中心所用电网不同而相差数倍。Eco Router 将 AWS、Google Cloud 和 Azure 区域映射到它们所用的电网,因此 Agent 可以询问:
“我应该在哪里运行这项训练任务?数据必须保留在欧盟境内,延迟应低于 150 ms。”
并获得按排名排列的候选区域列表及其背后的理由。
碳排放量数据是基于位置的电网平均值。它们描述的是为各个区域供电的电网,而不是云服务提供商购买的可再生能源,因此同一电网中的区域会得到相同的数值。请参阅这些数字代表什么。
安装
需要 Node.js 22 或更高版本。
Claude Code
claude mcp add eco-router -- npx -y eco-router-mcp
Claude Desktop(claude_desktop_config.json)
{
"mcpServers": {
"eco-router": {
"command": "npx",
"args": ["-y", "eco-router-mcp"],
"env": { "ELECTRICITY_MAPS_API_TOKEN": "optional" }
}
}
}
实时电网数据(可选)
Eco Router 默认使用年度平均值(美国按电网、加拿大按省、其他地区按国家/地区计算),无需任何配置即可使用。如需小时级的电网数据,请设置 ELECTRICITY_MAPS_API_TOKEN,使用你自己的 Electricity Maps API 令牌。你的套餐未覆盖的区域会自动回退到年度平均值。
你使用实时数据须遵守自己的 Electricity Maps 套餐及其条款。截至本文撰写时,Electricity Maps 为学术和个人非商业用途提供免费访问权限,并为商业评估提供 14 天试用。商业用途需要购买付费许可。Eco Router 不提供或共享任何令牌。
工具
| 工具 | 功能 |
|---|---|
rank_regions | 按电网碳强度对区域进行排名,也可以根据 origin 的预计延迟进行权衡。支持 providers、countries、maxLatencyMs、maxCarbonIntensity、carbonWeight、energyKwh 和 limit。 |
find_clean_window | 对于时间灵活的批处理任务,在未来 72 小时内为每个电网区域查找碳强度预测值最低的开始时间,并计算与立即开始相比可节省的排放量。需要具有预测数据访问权限的 ELECTRICITY_MAPS_API_TOKEN。 |
list_regions | 列出云区域及其供电所用的电网区域。可按 provider(aws、gcp、azure)或 country 筛选。 |
countries 接受 ISO 3166-1 alpha-2 代码,以及 EU 和 EEA 两个分组。
rank_regions 的请求示例:
{
"countries": ["EU"],
"origin": { "lat": 50.11, "lon": 8.68 },
"maxLatencyMs": 40,
"energyKwh": 500
}
为一项需要在两天内完成的 6 小时任务调用 find_clean_window 的请求示例:
{
"countries": ["DE", "FR", "SE"],
"durationHours": 6,
"withinHours": 48,
"energyKwh": 500,
"timezone": "Australia/Brisbane"
}
评分方式、数据来源及其局限性详见 docs/methodology.md。
区域与电网的映射方式,以及依赖假设的映射,记录在 docs/regions.md。
路线图
- 基于 stdio 的 MCP 服务骨架
- 完整的 AWS、Google Cloud 和 Azure 区域数据集及其来源
- 碳数据:默认使用已发布的年度平均值;也可使用可选的 Electricity Maps API 令牌获取实时数据
-
rank_regions:按碳强度和预计延迟为区域排名,并支持允许的国家/地区或碳排放上限等硬性限制 - 无需令牌即可获取美国电网级年度数据(EPA eGRID)
- 无需令牌即可获取加拿大省级年度数据(国家清单报告)
- 澳大利亚电网级年度数据
- 时间调整:使用碳排放预测建议运行时间
- 发布到 npm 和 MCP Registry
开发
npm install
npm test # unit tests, no network needed
npm run typecheck
npm run build # compiles to dist/
npm run dev # runs the server over stdio from source
npm run update:baseline # refreshes national averages from Ember
npm run update:egrid # refreshes US grid averages from EPA eGRID
npm run update:canada # refreshes Canadian provincial averages
数据来源
- 年度碳强度:Ember,年度电力数据, 采用 CC BY 4.0 许可。
- 美国电网发电结构:美国环保署 eGRID(公有领域), 使用 Ember 的美国排放因子转换为生命周期排放。
- 加拿大各省发电结构:加拿大环境与气候变化部, 国家清单报告,附录 7, 使用 Ember 的加拿大排放因子转换为生命周期排放。包含根据 加拿大开放政府许可授权的信息。
- 实时碳强度(可选):来源:ElectricityMaps.com, 使用你自己的 API 令牌,并遵守所选套餐的条款。
- 区域列表:AWS、Google Cloud 和 Azure 官方文档。请参阅 docs/regions.md。
贡献
特别欢迎修正区域数据。请参阅 CONTRIBUTING.md 了解如何开始。
致谢
Eco Router 最初是一个黑客马拉松项目。感谢最初的团队提供本项目采用的评分设计:Chris (@chrislee021225)、Joli (@L-Joli)、 Bob (@Loic0927)、Irene Tsai (@YunTong09) 和 Steven Su (@stevensu04)。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。