Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

feat(ecs-mcp-server): Add new ECS MCP Server for containerization and deployment#1

Open
karanbokil wants to merge 4 commits into
mainfrom
feature/ecs-mcp-server
Open

feat(ecs-mcp-server): Add new ECS MCP Server for containerization and deployment#1
karanbokil wants to merge 4 commits into
mainfrom
feature/ecs-mcp-server

Conversation

@karanbokil

@karanbokil karanbokil commented Apr 22, 2025

Copy link
Copy Markdown
Owner

Summary

This PR adds a new ECS MCP Server to the AWS MCP Servers repository. The server enables AI assistants to automatically containerize web applications and deploy them to AWS ECS with Fargate and Application Load Balancers.

Changes

The server provides the following MCP tools:

  • containerize_app: Provides best practices for docker/finch/compose wrt ECS Fargate
  • create_ecs_infrastructure: Creates AWS ECS CloudFormation templates and (optionally) deploys CFN stacks, builds the image, and pushes the image
  • get_deployment_status: Monitors deployment status and retrieves ALB URLs
  • delete_ecs_infrastructure: Deletes CFN stacks created from create_ecs_infrastructure

User experience

  • Containerization: Guide how to generate Dockerfiles and Docker Compose files
  • Infrastructure Creation: Creates ECS infrastructure using CloudFormation
  • Deployment: Deploys applications to ECS Fargate with ALB integration
  • Status Monitoring: Tracks deployment status and provides public URLs
  • Vibe Coder Support: Recognizes casual deployment requests like "ship it" or "get this online"

Checklist

If your change doesn't seem to apply, please leave them unchecked.

  • I have reviewed the contributing guidelines
  • I have performed a self-review of this change
  • Changes have been tested
  • Changes are documented

Is this a breaking change? (N)

RFC issue number: aws/containers-roadmap#2580

Checklist:

  • Migration process documented
  • Implement warnings (if it can live side by side)

Acknowledgment

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the project license.

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bandit found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/infrastructure.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/infrastructure.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/templates.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/templates.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/templates.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/infrastructure.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/infrastructure.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/analyze.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/analyze.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/infrastructure.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/analyze.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/analyze.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/containerize.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/api/infrastructure.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Fixed
Comment thread src/ecs-mcp-server/tests/llm_testing/invalid_cfn_template.yaml Fixed
Comment thread src/ecs-mcp-server/tests/unit/test_status_pytest.py Fixed
* feat(ecs-mcp-server): Add new ECS MCP Server for containerization and deployment and troubleshooting

---------

Co-authored-by: Matthew Goodman <matthewgoodman13@outlook.com>
@karanbokil karanbokil force-pushed the feature/ecs-mcp-server branch from 2e75b9a to 8db6e83 Compare May 29, 2025 13:19
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/utils/docker.py Dismissed
Comment on lines +158 to +159
build_result = subprocess.run(
buildx_cmd, capture_output=True, text=True, shell=False, check=False

Check notice

Code scanning / Bandit

subprocess call - check for execution of untrusted input. Note

subprocess call - check for execution of untrusted input.
Comment on lines +182 to +183
build_result = subprocess.run(
build_cmd, capture_output=True, text=True, shell=False, check=False

Check notice

Code scanning / Bandit

subprocess call - check for execution of untrusted input. Note

subprocess call - check for execution of untrusted input.
Comment on lines +199 to +200
push_result = subprocess.run(
push_cmd, capture_output=True, text=True, shell=False, check=False

Check notice

Code scanning / Bandit

subprocess call - check for execution of untrusted input. Note

subprocess call - check for execution of untrusted input.
Comment on lines +233 to +234
verify_result = subprocess.run(
verify_cmd, capture_output=True, text=True, shell=False, check=False

Check notice

Code scanning / Bandit

subprocess call - check for execution of untrusted input. Note

subprocess call - check for execution of untrusted input.
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/templates/ecr_infrastructure.json Dismissed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/templates/ecs_infrastructure.json Dismissed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/templates/ecs_infrastructure.json Dismissed
Comment thread src/ecs-mcp-server/awslabs/ecs_mcp_server/templates/ecs_infrastructure.json Dismissed
karanbokil and others added 3 commits May 29, 2025 10:06
* Serverless MCP server initial commit

* Migrate over more tools from typscript package, add more tests, remove api-level tools

* Updates to readme, tool descriptions

* Remove unused parameters from tools input models

* Add new security flags and clean up code

* Update README with security controls details

* Update configure_domain tool to create certificates and remove unused models.

* Add CODEOWNERS for serverless mcp

* Let boto3 auto-detect region if not provided

* Remove route 53 record set creation from deployWebAppTool

* Update README

* Migrate from pybars to jinja

* Update serverless codeowners

* Update unit tests and add docs page

* Fix pre-commit errors

* Fix bandit errors

* Create uv.lock file

* Fix unit tests

* feat(aws-serverless-mcp-server) : add support for the schema registry

* Mock github calls in serverless template test

* Fix pre-commit issues

* Fix pyright errors

* Fix merge conflict with README

* Update tests after pyright changes

* Remove test for missing param since pyright validates already

* Fix pre-commit issues

* Add more unit tests for utils

* Fix pre-commit issues

* Fix pre-commit

* update docs related to handle bar to jinja conversion

* Add test for update frontend tool

* addres pre-commit errors

* Include examples in event schem input parmeter description

* Disable new line stripping

* Add pre-commit file and increase test coverage for server

* Fix pre-comit issues

* Fix bandit isssues

* Flatten input parameters

* Update README

* Undo changes from README.md

* Revert README back to main

* Fix README

* Fix pre-commmit

* Add user agent to boto3 calls

* Fix build

* Audit secrets

* Remove imports from __init__.py

* Match init file

* Address claude feedback

* remove unused file

* fix: package installation in README

* Set mimetype for s3 upload and return stderr logs for local invoke

---------

Co-authored-by: Brandon Xu <brandoxu@amazon.com>
Co-authored-by: Scott Schreckengaust <scottschreckengaust@users.noreply.github.com>
Co-authored-by: Mohamed MOUNIROU <mmouniro@amazon.com>
Co-authored-by: Laith Al-Saadoon <9553966+theagenticguy@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

This pull request is now marked as stale because it hasn't seen activity for a while. Add a comment or it will be closed soon. If you wish to exclude this issue from being marked as stale, add the "backlog" label.

@github-actions github-actions Bot added the stale label Jun 13, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants