{"id":36990740,"url":"https://github.com/hyperpolymath/poly-cloud-mcp","last_synced_at":"2026-01-13T23:39:13.901Z","repository":{"id":329048311,"uuid":"1117860632","full_name":"hyperpolymath/poly-cloud-mcp","owner":"hyperpolymath","description":"Unified MCP server for multi-cloud provider management. Tools for AWS, GCP, Azure, and DigitalOcean.","archived":false,"fork":false,"pushed_at":"2026-01-13T03:09:38.000Z","size":16103,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T19:44:23.240Z","etag":null,"topics":["automation","aws","azure","deno","developer-tools","digitalocean","gcp","hyperpolymath","integration","mcp","mcp-server","model-context-protocol","multi-cloud","my-coolest-projects","orchestration","poly-mcp","rescript","systems"],"latest_commit_sha":null,"homepage":null,"language":"ReScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperpolymath.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-16T23:25:27.000Z","updated_at":"2026-01-10T02:53:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hyperpolymath/poly-cloud-mcp","commit_stats":null,"previous_names":["hyperpolymath/poly-cloud-mcp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/hyperpolymath/poly-cloud-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-cloud-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-cloud-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-cloud-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-cloud-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperpolymath","download_url":"https://codeload.github.com/hyperpolymath/poly-cloud-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fpoly-cloud-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28405304,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T21:51:37.118Z","status":"ssl_error","status_checked_at":"2026-01-13T21:45:14.585Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","aws","azure","deno","developer-tools","digitalocean","gcp","hyperpolymath","integration","mcp","mcp-server","model-context-protocol","multi-cloud","my-coolest-projects","orchestration","poly-mcp","rescript","systems"],"created_at":"2026-01-13T23:39:13.310Z","updated_at":"2026-01-13T23:39:13.894Z","avatar_url":"https://github.com/hyperpolymath.png","language":"ReScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"= poly-cloud-mcp\n\nimage:https://img.shields.io/badge/License-MPL_2.0-blue.svg[MPL-2.0,link=\"https://opensource.org/licenses/MPL-2.0\"]\nimage:https://img.shields.io/badge/Philosophy-Palimpsest-purple.svg[Palimpsest,link=\"https://github.com/hyperpolymath/palimpsest-licence\"]\n\n\n:toc:\n:toc-placement!:\n\nimage:https://img.shields.io/badge/RSR-compliant-gold[RSR Compliant,link=https://github.com/hyperpolymath/rhodium-standard-repositories]\nimage:https://img.shields.io/badge/MCP-server-blue[MCP Server,link=https://github.com/modelcontextprotocol]\n\nUnified MCP server for multi-cloud provider management. Provides Model Context Protocol tools for interacting with AWS, Google Cloud, Azure, and DigitalOcean through their respective CLI tools.\n\ntoc::[]\n\n== Overview\n\npoly-cloud-mcp exposes cloud provider management capabilities through the Model Context Protocol (MCP), enabling AI assistants and other MCP clients to manage cloud resources across multiple providers.\n\n== Adapters\n\n=== AWS (13 tools)\nAmazon Web Services via `aws` CLI:\n\n* `aws_s3_ls` - List S3 buckets/objects\n* `aws_s3_cp` - Copy files to/from S3\n* `aws_ec2_describe_instances` - Describe EC2 instances\n* `aws_ec2_start_instances` - Start EC2 instances\n* `aws_ec2_stop_instances` - Stop EC2 instances\n* `aws_lambda_list` - List Lambda functions\n* `aws_lambda_invoke` - Invoke Lambda functions\n* `aws_iam_list_users` - List IAM users\n* `aws_sts_get_caller_identity` - Get current identity\n* `aws_cloudwatch_get_metrics` - Get CloudWatch metrics\n* `aws_rds_describe_instances` - Describe RDS instances\n* `aws_ecs_list_clusters` - List ECS clusters\n* `aws_ecs_list_services` - List ECS services\n\n=== Google Cloud (12 tools)\nGoogle Cloud Platform via `gcloud` CLI:\n\n* `gcloud_compute_instances_list` - List Compute Engine VMs\n* `gcloud_compute_instances_start` - Start VMs\n* `gcloud_compute_instances_stop` - Stop VMs\n* `gcloud_storage_ls` - List Cloud Storage buckets/objects\n* `gcloud_storage_cp` - Copy files to/from Cloud Storage\n* `gcloud_functions_list` - List Cloud Functions\n* `gcloud_run_services_list` - List Cloud Run services\n* `gcloud_sql_instances_list` - List Cloud SQL instances\n* `gcloud_container_clusters_list` - List GKE clusters\n* `gcloud_projects_list` - List projects\n* `gcloud_config_list` - Show current configuration\n* `gcloud_auth_list` - List authenticated accounts\n\n=== Azure (12 tools)\nMicrosoft Azure via `az` CLI:\n\n* `az_vm_list` - List virtual machines\n* `az_vm_start` - Start VMs\n* `az_vm_stop` - Stop VMs\n* `az_storage_account_list` - List storage accounts\n* `az_storage_blob_list` - List blobs in container\n* `az_webapp_list` - List Web Apps\n* `az_functionapp_list` - List Function Apps\n* `az_aks_list` - List AKS clusters\n* `az_sql_server_list` - List SQL servers\n* `az_group_list` - List resource groups\n* `az_account_show` - Show current account\n* `az_account_list` - List subscriptions\n\n=== DigitalOcean (13 tools)\nDigitalOcean via `doctl` CLI:\n\n* `doctl_droplet_list` - List droplets\n* `doctl_droplet_create` - Create droplets\n* `doctl_droplet_delete` - Delete droplets\n* `doctl_droplet_actions` - Perform droplet actions\n* `doctl_kubernetes_cluster_list` - List K8s clusters\n* `doctl_kubernetes_cluster_kubeconfig` - Get kubeconfig\n* `doctl_database_list` - List managed databases\n* `doctl_spaces_list` - List Spaces\n* `doctl_apps_list` - List App Platform apps\n* `doctl_domain_list` - List domains\n* `doctl_domain_records` - List DNS records\n* `doctl_account_get` - Get account info\n* `doctl_balance_get` - Get account balance\n\n== Runtime Mode\n\n[IMPORTANT]\n====\n**Local-Agent Mode Only** — This MCP server wraps CLI tools (`aws`, `gcloud`, `az`, `doctl`) and requires `--allow-run` permission. It cannot run in Hosted-HTTP mode.\n====\n\n|===\n|Mode |Supported |Notes\n\n|Local-Agent (stdio)\n|✓ Yes\n|Primary mode. Runs locally, executes CLI commands.\n\n|Hosted-HTTP\n|✗ No\n|Cannot wrap CLI tools from a hosted environment.\n|===\n\n== Security Boundary\n\n[WARNING]\n====\nThis MCP server executes external CLI commands using Deno's `--allow-run` permission. The security boundary is your local cloud CLI configuration and credentials.\n====\n\n**What this means:**\n\n* Commands run with your locally configured cloud credentials\n* AWS: Uses `~/.aws/credentials` or `AWS_*` environment variables\n* GCP: Uses `gcloud auth` login or service account\n* Azure: Uses `az login` session\n* DigitalOcean: Uses `doctl auth` or `DIGITALOCEAN_ACCESS_TOKEN`\n* The MCP client (e.g., Claude) can perform any CLI action your credentials allow\n\n**Recommendations:**\n\n1. Use IAM roles with minimal necessary permissions\n2. Consider separate credentials for MCP access\n3. Avoid running with admin/owner-level credentials\n4. Review tool calls before approving in your MCP client\n5. Set billing alerts for your cloud accounts\n\n== Requirements\n\n* https://deno.land/[Deno] runtime (v2.0+)\n* https://aws.amazon.com/cli/[AWS CLI] (optional, for AWS tools)\n* https://cloud.google.com/sdk/gcloud[gcloud CLI] (optional, for GCP tools)\n* https://docs.microsoft.com/en-us/cli/azure/[Azure CLI] (optional, for Azure tools)\n* https://docs.digitalocean.com/reference/doctl/[doctl] (optional, for DigitalOcean tools)\n\n== Installation\n\n[source,bash]\n----\ngit clone https://github.com/hyperpolymath/poly-cloud-mcp\ncd poly-cloud-mcp\n----\n\n== Usage\n\nRun as MCP server (Local-Agent mode):\n\n[source,bash]\n----\ndeno run --allow-run --allow-read --allow-env main.js\n----\n\nOr use the systemd service:\n\n[source,bash]\n----\nsystemctl --user enable poly-cloud-mcp\nsystemctl --user start poly-cloud-mcp\n----\n\n== Smoke Test\n\nVerify the server is working correctly:\n\n[source,bash]\n----\n# 1. Check Deno can run the server\ndeno run --allow-run --allow-read --allow-env main.js \u0026\nSERVER_PID=$!\n\n# 2. Verify at least one CLI is accessible\naws --version || gcloud --version || az --version || doctl version\n\n# 3. Test authentication (pick your provider)\naws sts get-caller-identity  # AWS\ngcloud auth list             # GCP\naz account show              # Azure\ndoctl account get            # DigitalOcean\n\n# 4. Cleanup\nkill $SERVER_PID\n----\n\n**Expected smoke test results:**\n\n|===\n|Check |Expected Result\n\n|Server starts\n|No errors, listens on stdio\n\n|CLI available\n|At least one cloud CLI returns version\n\n|Auth configured\n|CLI shows authenticated identity\n\n|Tool call works\n|Returns cloud resources (if any exist)\n|===\n\n== License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fpoly-cloud-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperpolymath%2Fpoly-cloud-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fpoly-cloud-mcp/lists"}