Skip to main content

A Python class that generates MCP server for any AWS service which has boto3 client

Project description

AWS Service MCP Generator

A Python library that automatically generates MCP servers for any AWS service that has a boto3 client.

Installation

You can install the package using either pip or uv:

Using pip

pip install aws_service_mcp_generator

Using uv

uv add aws_service_mcp_generator

For development installation:

# Clone the repository
git clone https://github.com/kenliao94/aws_service_mcp_generator.git
cd aws_service_mcp_generator

# Create and activate a virtual environment (optional but recommended)
uv venv --python 3.10
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install the package in development mode
uv pip install -e .

Usage

The AWS Service MCP Generator allows you to quickly create MCP servers for any AWS service. Here's how to use it:

Basic Usage

from mcp.server.fastmcp import FastMCP
from aws_service_mcp_generator.generator import AWSToolGenerator


# Initialize FastMCP server
mcp = FastMCP()

# Create a generator for an AWS service
sns_generator = AWSToolGenerator(
    service_name="sns",
    service_display_name="Simple Notification Service",
    mcp=mcp
)

# Generate MCP tools for all operations
sns_generator.generate()

# Start the MCP server
mcp.run()

Advanced Configuration

You can customize the behavior of specific operations:

from mcp.server.fastmcp import FastMCP
from aws_service_mcp_generator.generator import AWSToolGenerator

mcp = FastMCP()

# Configure specific operations
tool_configuration = {
    "list_topics": {
        "documentation_override": "List all SNS topics in the specified region"
    },
    "create_topic": {
        "validator": lambda mcp, client, kwargs: (
            True if kwargs.get("Name") else (False, "Topic name is required")
        )
    },
    "delete_topic": {
        "ignore": True  # Skip this operation
    },
    "publish": {
        # Complete override of the function behavior
        "func_override": lambda mcp, boto3_client_getter, operation: mcp.tool(description="Enhanced SNS publish with additional logging")(
            async def publish_with_logging(message: str, topic_arn: str, region: str = "us-east-1"):
                """Publish a message to an SNS topic with additional logging"""
                try:
                    client = boto3_client_getter(region)
                    print(f"Publishing message to {topic_arn} in {region}")
                    response = client(operation)(Message=message, TopicArn=topic_arn)
                    print(f"Successfully published message with ID: {response.get('MessageId')}")
                    return {
                        "success": True,
                        "message_id": response.get("MessageId"),
                        "timestamp": str(response.get("Timestamp", ""))
                    }
                except Exception as e:
                    print(f"Error publishing message: {str(e)}")
                    return {"error": str(e)}
        )
    }
}

# Create generator with custom configuration
sns_generator = AWSToolGenerator(
    service_name="sns",
    service_display_name="Simple Notification Service",
    mcp=mcp,
    tool_configuration=tool_configuration
)

sns_generator.generate()
mcp.run()

Contributing

Contributions are welcome! Here's how you can contribute to this project:

  1. Fork the Repository

    • Fork the repository on GitHub
  2. Clone Your Fork

    git clone https://github.com/your-username/aws_service_mcp_generator.git
    cd aws_service_mcp_generator
    
  3. Set Up Development Environment

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    pip install -e .
    uv add --dev pyright ruff
    
  4. Create a Branch

    git checkout -b feature/your-feature-name
    
  5. Make Your Changes

    • Implement your feature or bug fix
    • Add or update tests as necessary
    • Update documentation if needed
  6. Run Tests

    pytest
    
  7. Run Linters

    ruff check .
    
  8. Commit Your Changes

    git commit -m "Add feature: your feature description"
    
  9. Push to Your Fork

    git push origin feature/your-feature-name
    
  10. Submit a Pull Request

    • Go to the original repository on GitHub
    • Click "New Pull Request"
    • Select your fork and branch
    • Fill in the PR template with details about your changes

Code Style

This project follows these coding standards:

  • Line length: 99 characters
  • Quote style: Single quotes
  • Python version: 3.10+
  • Use type hints

Running Tests

pytest

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aws_service_mcp_generator-2.0.1.tar.gz (56.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aws_service_mcp_generator-2.0.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file aws_service_mcp_generator-2.0.1.tar.gz.

File metadata

File hashes

Hashes for aws_service_mcp_generator-2.0.1.tar.gz
Algorithm Hash digest
SHA256 4ef12f85f7f693268aaae21aab90261b2c077b64e0f84ffc6319e15b9ec9bb8d
MD5 169386a3cf2bdf2bfa144e4d9c2d3e10
BLAKE2b-256 7b7b687d2aff537beec4248b99118f5b997c06d60899bef017266061a186c288

See more details on using hashes here.

Provenance

The following attestation bundles were made for aws_service_mcp_generator-2.0.1.tar.gz:

Publisher: python-publish.yml on kenliao94/aws_service_mcp_generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aws_service_mcp_generator-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for aws_service_mcp_generator-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5fe9bfe298aaf2112294674e814bd6344c2525815c8bcbca0810ac50a8506fc6
MD5 0178e0283f0e2d1e7b2189172f60168f
BLAKE2b-256 50fab77ac3cff6e679a9320217414e4e6a6a0ff82e43f1bbcf3e6416bc438712

See more details on using hashes here.

Provenance

The following attestation bundles were made for aws_service_mcp_generator-2.0.1-py3-none-any.whl:

Publisher: python-publish.yml on kenliao94/aws_service_mcp_generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page