Acquia AWS Inventory MCP Server

Welcome to the Acquia AWS Inventory MCP Server

MCP (Model Context Protocol) is a framework designed to enhance the capabilities of Large Language Models (LLMs) by providing them with additional context, data, and tools. MCP servers act as specialized API endpoints that can be called by LLMs during their execution to retrieve real-time information, access structured data, or perform actions that would otherwise be outside their capabilities.

Table of Contents

Features

Available Endpoints

/mcp

The primary endpoint for establishing a connection to interact with the MCP server.

Requires authentication with a Bearer token.

/health

Health check endpoint that returns a status indicating if the server is operational.

Check Health

How to Use

To interact with this server, you need to:

  1. Establish a connection to the /mcp endpoint with a valid Bearer token

API Token (Bearer)

The required API/Bearer token (AWS_INVENTORY_MCP_SERVER_API_TOKEN) is stored in AWS Secret Manager under the path:

service/axn/mcp-servers-token

You'll need to retrieve this token to authenticate your requests to the MCP server.

Claude Desktop Setup

To integrate with Claude Desktop, add the following configuration to your Claude Desktop config file:

{
  "mcpServers": {
  "aws-inventory-mcp-server": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://`remote-server-url`/mcp/",
        "--header",
        "Authorization: Bearer `token`"
      ]
    }
}

Available Tools

EC2 Tools

get_instance_list

Retrieve a comprehensive list of all EC2 instances and their metadata from the database.

Returns instance information including instance_id, instance_type, state, availability_zone, vpc_id, security_groups, public/private IPs, launch_time, and tags.

execute_query

Execute a custom SELECT SQL query against the EC2 metadata table.

Example: SELECT * FROM ec2_metadata WHERE region = 'us-west-2'

Supports WHERE clauses, ORDER BY, GROUP BY, HAVING, LIMIT, and OFFSET.

get_table_schema

Get the schema definition for the ec2_metadata table.

Returns column names, data types, nullability, and default values.

filter_instances

Filter EC2 instances based on specified criteria using exact value matching.

Example filters: {"state": "running", "instance_type": "t3.micro"}

RDS Tools

get_rds_clusters

Retrieve a comprehensive list of all RDS clusters and their metadata from the database.

Returns cluster information including cluster_identifier, engine, engine_version, status, endpoint, port, availability_zones, storage_encrypted, backup_retention_period, and tags.

get_rds_instances

Retrieve a comprehensive list of all RDS instances and their metadata from the database.

Returns instance information including instance_identifier, instance_class, engine, engine_version, status, availability_zone, allocated_storage, storage_type, multi_az, publicly_accessible, and tags.

execute_rds_query

Execute a custom SELECT SQL query against RDS metadata tables (clusters or instances).

Example: SELECT db_cluster_identifier, status FROM rds_metadata WHERE engine = 'aurora-mysql'

Supports targeting either "clusters" (rds_metadata) or "instances" (rds_instances) tables.

get_rds_schema

Get the schema definition for RDS database tables (clusters or instances).

Returns column names, data types, nullability, and default values for either rds_metadata or rds_instances table.

filter_rds_clusters

Filter RDS clusters based on specified criteria using exact value matching.

Example filters: {"status": "available", "engine": "aurora-mysql"}

filter_rds_instances

Filter RDS instances based on specified criteria using exact value matching.

Example filters: {"db_instance_status": "available", "engine": "mysql"}

get_rds_cluster_with_instances

Retrieve RDS cluster information along with all associated instances.

Provides a hierarchical view showing cluster details and all instances that belong to that cluster.

Can target a specific cluster or return all clusters with their instances.

get_all_rds_details

Retrieve comprehensive RDS information including clusters, instances, and their relationships.

Returns a complete overview with summary statistics, clusters with nested instances, and standalone instances.

Example Interactions

EC2 Examples

List all EC2 instances

User: Show me all my EC2 instances.
Claude: I'll get all your EC2 instances from the database.

[Claude uses get_instance_list() tool]

I found the following EC2 instances:
- i-1234567890abcdef0 (t3.micro) - running in us-east-1a
- i-0987654321fedcba0 (m5.large) - stopped in us-west-2b
- i-abcdef1234567890 (t3.small) - running in us-east-1c

Filter EC2 instances by criteria

User: Show me all running t3.micro instances.
Claude: Let me filter your EC2 instances for running t3.micro instances.

[Claude uses filter_instances({"state": "running", "instance_type": "t3.micro"}) tool]

Found 2 running t3.micro instances:
- i-1234567890abcdef0 in us-east-1a
- i-fedcba0987654321 in us-west-2a

RDS Examples

List all RDS clusters

User: Show me all my RDS clusters.
Claude: I'll get all your RDS clusters from the database.

[Claude uses get_rds_clusters() tool]

I found the following RDS clusters:
- my-aurora-cluster (aurora-mysql 8.0) - available
- prod-cluster (aurora-postgresql 13.7) - available
- staging-cluster (aurora-mysql 5.7) - creating

Get cluster with instances

User: Show me the details of my-aurora-cluster with all its instances.
Claude: Let me get the cluster details with all associated instances.

[Claude uses get_rds_cluster_with_instances("my-aurora-cluster") tool]

Cluster: my-aurora-cluster (aurora-mysql 8.0.mysql_aurora.3.02.0)
Status: available
Endpoint: my-aurora-cluster.cluster-xyz.us-east-1.rds.amazonaws.com
Port: 3306

Associated Instances:
- my-aurora-cluster-instance-1 (db.r5.large) - available in us-east-1a
- my-aurora-cluster-instance-2 (db.r5.large) - available in us-east-1b

Get comprehensive RDS overview

User: Give me a complete overview of my RDS infrastructure.
Claude: I'll get a comprehensive view of your entire RDS infrastructure.

[Claude uses get_all_rds_details() tool]

RDS Infrastructure Summary:
- Total Clusters: 3
- Total Instances: 6
- Engines: aurora-mysql (4), aurora-postgresql (2)
- Instance Classes: db.r5.large (4), db.t3.medium (2)

Clusters:
1. my-aurora-cluster (2 instances)
2. prod-cluster (2 instances)  
3. staging-cluster (1 instance)

Standalone Instances:
1. legacy-mysql-db (db.t3.medium)

Database Schema Examples

Get table schema

User: What columns are available in the EC2 metadata table?
Claude: Let me get the schema for the ec2_metadata table.

[Claude uses get_table_schema() tool]

The ec2_metadata table has the following structure:
- instance_id (varchar) - NOT NULL
- instance_type (varchar) - NOT NULL
- state (varchar) - NOT NULL
- availability_zone (varchar) - NOT NULL
- vpc_id (varchar) - NULL
- subnet_id (varchar) - NULL
- security_groups (jsonb) - NULL
- public_ip (varchar) - NULL
- private_ip (varchar) - NOT NULL
- launch_time (timestamp) - NOT NULL
- tags (jsonb) - NULL

Get RDS schema

User: What columns are in the RDS instances table?
Claude: Let me get the schema for the rds_instances table.

[Claude uses get_rds_schema("instances") tool]

The rds_instances table has the following structure:
- db_instance_identifier (varchar) - NOT NULL
- db_instance_class (varchar) - NOT NULL
- engine (varchar) - NOT NULL
- engine_version (varchar) - NULL
- db_instance_status (varchar) - NOT NULL
- availability_zone (varchar) - NULL
- allocated_storage (integer) - NULL
- storage_type (varchar) - NULL
- multi_az (boolean) - NULL
- publicly_accessible (boolean) - NULL
- tags (jsonb) - NULL

Troubleshooting