cloud-engineer-mcp

cloud-engineer-mcp

Fans out agent requests to AWS, Azure, and GCP MCP servers, using a local sentence transformer to surface only the 15 tools relevant to the current task, reducing context bloat.

Category
访问服务器

README

<div align="center">

cloud-engineer-mcp

One MCP endpoint for AWS, Azure, and GCP — without context bloat.

CI Python License: AGPL-3.0 MCP

</div>

cloud-engineer-mcp is a Model Context Protocol gateway. It fans your agent's requests out to the official AWS, Azure, and Google Cloud MCP servers, then uses a local sentence-transformer to return only the handful of tools relevant to the current task — typically 15 out of 600–900.

Stop drowning your agent in cloud tools. Surface the 15 it actually needs.

The problem

Plug the official AWS, Azure, and GCP MCP servers into Cursor or Claude Desktop and your agent sees ~800 tool definitions every turn. That's 10–15K tokens of context burned before the user has typed anything, worse tool-selection accuracy, and noticeable latency on every tools/list call.

What this does

  • Auto-discovers every AWS profile in ~/.aws/config, every Azure subscription via az account list, and every GCP project via gcloud projects list.
  • Starts one subprocess per account against the official cloud MCP servers (awslabs.ccapi-mcp-server, @azure/mcp, @google-cloud/gcloud-mcp).
  • Indexes every tool description with a local all-MiniLM-L6-v2 model (22M params, ~80MB on disk, ~5ms per query, no API calls).
  • Returns the top-K tools for the current conversation via a set_context tool. Pin recently-used backends so workflows stay coherent.
  • Speaks both transports: stdio for IDEs (Cursor, VS Code, Claude Desktop) and Streamable HTTP for remote/team deployments.

<!-- demo.gif -->

Try it in 60 seconds (no cloud credentials needed)

git clone https://github.com/cloud-engineer-mcp/cloud-engineer-mcp.git
cd cloud-engineer-mcp
uv sync
uv run cloud-engineer-mcp demo

The demo subcommand boots a self-contained gateway against bundled mock backends. No AWS/Azure/GCP setup required. It's the same code path the real gateway uses — useful for evaluating the project, integrating into CI, or rehearsing a conference demo.

Use it for real

Authenticate any cloud CLIs you'd like the gateway to discover (you only need the ones you use):

aws sso login --profile <profile>      # or aws configure
az login
gcloud auth login && gcloud config set project <project>

Then install (see Installation below) and register with your IDE:

uv run cloud-engineer-mcp install-backends     # pre-download AWS/Azure/GCP MCP packages (optional but recommended)
uv run cloud-engineer-mcp cursor-install       # or claude-desktop-install

Restart Cursor. Ask it "deploy an S3 bucket with versioning" and watch tools/list surface only the relevant S3 tools from your AWS profile — even though the gateway is indexing tools across all three clouds.

How tool selection works

  1. The agent calls set_context("I need to deploy an S3 bucket with versioning").
  2. The gateway encodes the context with the local sentence-transformer.
  3. On the next tools/list it computes cosine similarity against every backend tool description and returns the top-K.
  4. When the agent calls a tool from backend B, every tool in B gets a score boost (a "pin") that decays over the next few turns — so workflows that need 3–4 related tools stay coherent.
  5. Embeddings are cached to disk between restarts (.cloud-engineer-mcp/embeddings_cache.npz).

No LLM calls. No re-indexing. ~5ms p99 per selection.

Architecture

   MCP Clients (Cursor, VS Code, Claude Desktop, HTTP)
                            │
                            ▼
   ┌─────────────────────────────────────────────────┐
   │  cloud-engineer-mcp gateway                     │
   │   ├─ Tool selector  (local embeddings)          │
   │   ├─ Tool registry  (namespaced: aws__create)   │
   │   ├─ Session state  (context + pinning)         │
   │   └─ Backend manager (subprocess lifecycle)     │
   └─────────────────────────────────────────────────┘
       │              │              │           │
       ▼              ▼              ▼           ▼
   AWS MCP        Azure MCP      GCP MCP    your backends
   (per profile)  (per sub)      (per proj) (config.yml)

More in docs/ARCHITECTURE.md.

Stability

cloud-engineer-mcp is beta. The stdio transport is production-grade and stable. The HTTP transport, demo subcommand, and metrics format may change in 1.x. Selector behavior (top-K, pinning) is tunable but the public interface (set_context, namespaced tool names) is stable. See CHANGELOG.md for breaking changes.

Installation

Note: cloud-engineer-mcp is not yet published to PyPI. Install from source as shown below.

From source

Install uv if you don't have it, then:

git clone https://github.com/cloud-engineer-mcp/cloud-engineer-mcp.git
cd cloud-engineer-mcp
uv sync                   # add --extra dev if you plan to contribute

uv sync creates a managed virtualenv in .venv and installs the project. Prefix commands with uv run (e.g. uv run cloud-engineer-mcp demo) or activate the venv with source .venv/bin/activate.

Prerequisites

  • Python 3.12+
  • uv — used to install and run the gateway (and provides uvx for AWS backends)
  • For AWS backends: the aws CLI v2
  • For Azure backends: Node.js 20+ and the az CLI
  • For GCP backends: Node.js 20+ and the gcloud CLI

You only need the tools for clouds you plan to use. The gateway gracefully skips providers whose CLI is missing.

Configuration

Copy the example and adjust:

cp config.example.yml config.yml
$EDITOR config.yml

Key settings:

Setting Default Description
selector.top_k 15 Max tools returned per tools/list
selector.model_name all-MiniLM-L6-v2 Sentence-transformer model
selector.min_similarity 0.15 Floor cosine similarity for inclusion
selector.cache_embeddings true Persist embeddings between restarts
discovery.{aws,azure,gcp}.enabled true Per-provider auto-discovery
server.transports.http.host 127.0.0.1 HTTP bind address (leave loopback by default)
server.transports.http.port 8080 HTTP port
rate_limit.requests_per_minute 100 Per-IP token bucket

See config.example.yml and docs/FAQ.md for the full reference.

CLI

Prefix each command with uv run (shown below), or activate the venv (source .venv/bin/activate) and drop the prefix.

uv run cloud-engineer-mcp demo                 # mock backends, no cloud setup
uv run cloud-engineer-mcp serve --transport stdio
uv run cloud-engineer-mcp serve --transport http
uv run cloud-engineer-mcp serve --transport both
uv run cloud-engineer-mcp check                # validate config
uv run cloud-engineer-mcp discover             # preview auto-discovered accounts
uv run cloud-engineer-mcp list-tools           # list every tool exposed
uv run cloud-engineer-mcp install-backends     # pre-download AWS/Azure/GCP MCP packages
uv run cloud-engineer-mcp cursor-install       # register in .cursor/mcp.json

IDE integration

Cursor / VS Code

uv run cloud-engineer-mcp cursor-install

Or manually drop into .cursor/mcp.json (template: examples/cursor-config.json):

{
  "mcpServers": {
    "cloud-engineer-mcp": {
      "command": "cloud-engineer-mcp",
      "args": ["serve", "--config", "/abs/path/to/config.yml", "--transport", "stdio"]
    }
  }
}

Claude Desktop

See examples/claude-desktop-config.json.

Remote HTTP

{
  "mcpServers": {
    "cloud-engineer-mcp": {
      "url": "https://your-gateway.example.com/mcp",
      "transport": "streamable-http",
      "headers": { "Authorization": "Bearer <your-token>" }
    }
  }
}

Always set CLOUD_ENGINEER_MCP_AUTH_TOKEN and put the gateway behind TLS when exposing HTTP off localhost. The gateway holds delegated cloud credentials; treat it like the keys to your cloud account because that's effectively what it is. See SECURITY.md.

Docker

docker compose up -d

The compose file mounts ~/.aws, ~/.azure, and ~/.config/gcloud read-only. The container binds to 127.0.0.1 by default; export with explicit auth and TLS.

Observability

  • /livez — process up (always 200).
  • /readyz — at least one backend READY and embedding model loaded.
  • /metrics — JSON or Prometheus text format via Accept header.
  • Structured JSON logs to stderr (set logging.format: console for dev).

See docs/ARCHITECTURE.md for log fields and metric names.

Why AGPL-3.0?

cloud-engineer-mcp is licensed under AGPL-3.0-or-later. If you deploy it as a network service, the network-use clause applies: improvements and modifications you ship should be made available under the same license. We chose AGPL deliberately so the project remains a healthy open commons and forks benefit everyone. Internal use, agent integration, and use behind an authenticated boundary are all fine. If AGPL doesn't fit your needs, get in touch via discussions.

Contributing

We welcome contributions. See CONTRIBUTING.md. Good first issues are tagged good first issue.

Security

Report vulnerabilities privately per SECURITY.md. Please do not open public issues for security-sensitive problems.

License

AGPL-3.0-or-later © cloud-engineer-mcp contributors.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选