Amazon VPC Lattice MCP Server logo

Amazon VPC Lattice MCP Server

by awslabs

A Model Context Protocol (MCP) server for source listing, providing tools for accessing and managing AWS VPC Lattice resources and related documentation.

View on GitHub

Last updated: N/A

Amazon VPC Lattice MCP Server

A Model Context Protocol (MCP) server for source listing, providing tools for accessing and managing AWS VPC Lattice resources and related documentation.

Features

The server provides five main tools:

  1. list_sources: Lists all available sources with their URLs and sample prompts
  2. get_source_prompts: Gets sample prompts for a specific source
  3. list_amazon_vpc_lattice_prompts: Lists all available prompt templates
  4. get_amazon_vpc_lattice_prompts: Gets details of a specific prompt template
  5. vpc_lattice_cli: Execute AWS CLI VPC Lattice commands for managing VPC Lattice resources

Installation

This project is built with TypeScript and uses ES modules.

  1. Clone the repository:
git clone https://github.com/awslabs/amazon-vpc-lattice-mcp-server.git
cd amazon-vpc-lattice-mcp-server
  1. Install dependencies:
npm install
  1. Build the server:
npm run build

The build script will compile the TypeScript code and set the appropriate executable permissions.

Configuration

Add the server to your MCP settings file (located at ~/Library/Application Support/Code/User/globalStorage/asbx.amzn-cline/settings/cline_mcp_settings.json):

{
  "mcpServers": {
    "amazon-vpc-lattice": {
      "command": "node",
      "args": ["/path/to/amazon-vpc-lattice-mcp-server/build/index.js"],
      "disabled": false,
      "autoApprove": [],
      "env": {}
    }
  }
}

Usage

Once configured, you can use the MCP tools in your conversations. Note that you should use list_amazon_vpc_lattice_prompts to discover available prompts as these are not automatically discoverable like tools.

List Sources

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "list_sources",
  arguments: {}
})

Get Source Prompts

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "get_source_prompts",
  arguments: {
    source_name: "AWS Documentation"
  }
})

List Amazon VPC Lattice Prompts

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "list_amazon_vpc_lattice_prompts",
  arguments: {}
})

Get Amazon VPC Lattice Prompt Details

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "get_amazon_vpc_lattice_prompts",
  arguments: {
    prompt_name: "setup_eks_controller"
  }
})

VPC Lattice CLI

The vpc_lattice_cli tool provides a programmatic interface to AWS VPC Lattice operations through the AWS CLI.

Features
  • Supports all major VPC Lattice CLI operations
  • Accepts command arguments as JavaScript objects
  • Automatically converts camelCase parameters to CLI-style kebab-case
  • Handles boolean flags, arrays, and complex values
  • Supports AWS profiles and region configuration
  • Returns parsed JSON responses
Available Commands
  • Service Network: create-service-network, delete-service-network, get-service-network, list-service-networks, update-service-network
  • Service: create-service, delete-service, get-service, list-services, update-service
  • Listener: create-listener, delete-listener, get-listener, list-listeners, update-listener
  • Rule: create-rule, delete-rule, get-rule, list-rules, update-rule
  • Target Group: create-target-group, delete-target-group, get-target-group, list-target-groups, update-target-group
  • Target Management: register-targets, deregister-targets, list-targets
  • Resource Tags: list-tags-for-resource, tag-resource, untag-resource
Examples

List service networks:

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "vpc_lattice_cli",
  arguments: {
    command: "list-service-networks",
    region: "us-west-2"
  }
})

Create a service network:

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "vpc_lattice_cli",
  arguments: {
    command: "create-service-network",
    args: {
      name: "my-network",
      authType: "NONE"
    }
  }
})

Create a service with tags:

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "vpc_lattice_cli",
  arguments: {
    command: "create-service",
    args: {
      name: "my-service",
      serviceNetworkIdentifier: "sn-12345",
      tags: [
        { key: "Environment", value: "Production" }
      ]
    }
  }
})

Create a target group:

use_mcp_tool({
  server_name: "amazon-vpc-lattice",
  tool_name: "vpc_lattice_cli",
  arguments: {
    command: "create-target-group",
    args: {
      name: "my-target-group",
      type: "INSTANCE",
      config: {
        port: 80,
        protocol: "HTTP",
        healthCheck: {
          enabled: true,
          protocol: "HTTP",
          path: "/health"
        }
      }
    }
  }
})

Available Sources

The server includes these sources:

  1. AWS Documentation (docs.aws.amazon.com)

    • Key features queries
    • Configuration guidance
    • Best practices
  2. AWS Gateway API Controller for VPC Lattice (aws/aws-application-networking-k8s)

    • Feature support queries
    • Issue tracking
  3. Kubernetes Gateway API (gateway-api.sigs.k8s.io)

    • Error resolution
    • Best practices guidance

Development

Project Structure

The project is organized as follows:

  • src/index.ts: Main server setup and initialization
  • src/tools.ts: Tool definitions and handlers
  • src/data/: Data files
    • prompts.ts: Prompt templates and parameters
    • sources.ts: Source definitions and their prompts
  • package.json: Project configuration and dependencies
  • tsconfig.json: TypeScript configuration
  • .gitignore: Git ignore rules
  • build/: Compiled JavaScript output

Adding New Sources

To add new sources, modify the sources array in src/data/sources.ts:

export const sources = [
  {
    name: 'Your Source',
    url: 'https://your-source-url.com',
    prompts: [
      'Sample prompt 1 {placeholder}',
      'Sample prompt 2 {placeholder}'
    ]
  }
  // ... existing sources
];

Adding New Prompts

To add new prompt templates, modify the prompts array in src/data/prompts.ts:

export const prompts = [
  {
    name: 'Your Prompt Template',
    description: 'Description of what the prompt does',
    template: 'Your prompt template with {parameter} placeholders',
    parameters: ['parameter']
  }
  // ... existing prompts
];

Scripts

  • npm run build: Build the server and set executable permissions
  • npm run watch: Watch mode for development
  • npm test: Run tests (currently not implemented)