ecs-FastMCP

secret-deus/ecs-FastMCP

3.2

If you are the rightful owner of ecs-FastMCP and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

ECS MCP (FastMCP Edition) is a read-only inspection server and client implementation using FastMCP for managing ECS instances.

Tools
3
Resources
0
Prompts
0

ECS MCP (FastMCP Edition)

使用 FastMCP 实现的 ECS 只读巡检服务器与客户端。

工具

  • ecs_list_instances
  • ecs_describe_instance_monitor_data
  • ecs_inspect

安装

cd ecs-fastmcp
poetry install

配置变量(仓库根目录 .env)

在仓库根目录创建 .env

ALIBABA_CLOUD_ACCESS_KEY_ID=你的AK
ALIBABA_CLOUD_ACCESS_KEY_SECRET=你的SK
# 可选
ALIBABA_CLOUD_SECURITY_TOKEN=
ALIBABA_CLOUD_ECS_REGION_ID=cn-hangzhou

(已移除模拟数据逻辑,必须配置真实 AK/SK 才能调用。)

说明:程序会优先加载仓库根目录 .env/config.env,并兼容常见变量名自动映射: ALIYUN_ACCESS_KEY_ID/SECRETALICLOUD_ACCESS_KEY_ID/SECRETACCESS_KEY_ID/SECRET 等。 启动后可在 app.log 中看到:

  • Loaded env files: [...](应包含仓库根 .env
  • Env presence -> AK:True SK:True

启动服务端

poetry run serve
# 或
poetry run python start_fastmcp_server.py

默认监听 0.0.0.0:8012,日志输出到仓库根的 app.log,同时保留控制台日志。

运行客户端示例

poetry run ecs-mcp-fastmcp-client
# 或
poetry run python start_fastmcp_client.py

客户端/脚本通过 SSE 连接,默认地址为 http://127.0.0.1:8012/sse。 也可通过环境变量覆盖:ECS_MCP_BASE=http://HOST:PORT/sse

快速对比脚本(Average vs Maximum)

运行脚本对同一实例在 1h 窗口下对比 CPU 统计口径:

poetry run python scripts/compare_cpu.py i-xxxxxxxxxxxxxxxxx
# 或显式指定 SSE 地址
ECS_MCP_BASE=http://127.0.0.1:8012/sse poetry run python scripts/compare_cpu.py i-xxxxxxxxxxxxxxxxx

ecs_describe_instance_monitor_data 还支持参数 statisticAverage|Maximum|Minimum,默认 Average)。

接口参数要点(简)

  • ecs_describe_instance_monitor_data(instance_id, relative_range='1h', period=None, metrics=None, statistic='Average', region_id=None)
    • 返回 summary.cpu_avg/cpu_p95/cpu_max(百分比 0–100,不需要再乘 100)。

常见问题排查

  • 502/连不上:
    • 确认连接的是 /ssecurl -N http://127.0.0.1:8012/sse | head -n 2
    • 端口被占用:lsof -nP -iTCP:8012 -sTCP:LISTEN -t | xargs -r kill
  • AK/SK 未命中:
    • app.log 顶部 Env presence -> AK:False SK:False,检查 .env 变量名或放在仓库根。
  • CPU 与控制台曲线不一致:
    • 控制台是“平均值”口径,脚本可传 statistic='Average';最大值请用 Maximum

参考: FastMCP Python SDK 文档 fastmcp.wiki/zh/python-sdk