Skip to main content
Glama
rlymbur

Amazon VPC Lattice MCP Server

by rlymbur

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

Related MCP server: Log Analyzer with MCP

Installation

This project is built with TypeScript and uses ES modules. Note that installing github-mcp-server is also strongly recommended to assist with development prompts.

  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)

Available Tools

5 tools
get_amazon_vpc_lattice_promptsC

Get details of a specific prompt template

ParametersJSON Schema
NameRequiredDescriptionDefault
prompt_nameYesName of the prompt template to get

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool does ('Get details') without mentioning any behavioral traits such as permissions needed, rate limits, error handling, or what 'details' include. This is insufficient for a tool with no annotation coverage, as it leaves key operational aspects undefined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and efficiently communicates the core function, earning its place without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It does not explain what 'details' are returned, how errors are handled, or any behavioral context. For a tool that retrieves specific data, this leaves significant gaps in understanding its full operation and output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'prompt_name' clearly documented as 'Name of the prompt template to get'. The description does not add any additional meaning beyond this, such as format examples or constraints. Given the high schema coverage, a baseline score of 3 is appropriate as the schema adequately handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get details of a specific prompt template', which includes a specific verb ('Get') and resource ('prompt template'). However, it does not explicitly distinguish this from sibling tools like 'get_source_prompts' or 'list_amazon_vpc_lattice_prompts', which likely involve similar resources but different scopes or operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools, prerequisites, or specific contexts for usage, leaving the agent to infer based on the tool name alone. This lack of explicit when-to-use or when-not-to-use information reduces clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_source_promptsB

Get sample prompts for a specific source

ParametersJSON Schema
NameRequiredDescriptionDefault
source_nameYesName of the source to get prompts for

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe behavioral traits such as whether it's read-only, if it requires authentication, rate limits, error handling, or what format the 'sample prompts' are returned in. This leaves significant gaps for a tool that likely retrieves data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage guidelines, behavioral traits, and output format, which are important for effective tool invocation in a broader context with sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'source_name' clearly documented in the schema. The description adds minimal value beyond the schema by implying the parameter is used to identify a source, but it doesn't provide additional context like valid source names or examples. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get sample prompts') and the target resource ('for a specific source'), which provides a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'get_amazon_vpc_lattice_prompts' or 'list_sources', which appear to be related to similar domains but have different scopes or functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_sources' (which might list sources before selecting one) or 'get_amazon_vpc_lattice_prompts' (which seems source-specific), leaving the agent to infer usage context without explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_amazon_vpc_lattice_promptsB

List all available prompt templates

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'List all available prompt templates' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns paginated results, or details the format of the output. For a tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, no annotations, and no output schema, the description is minimally adequate but lacks completeness. It doesn't explain what 'prompt templates' are, how they're structured, or what the output looks like, which could hinder an agent's ability to use this tool effectively in context with siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not adding unnecessary information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('all available prompt templates'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'get_amazon_vpc_lattice_prompts' or 'get_source_prompts', which likely retrieve specific prompts rather than listing all templates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools like 'get_amazon_vpc_lattice_prompts' (which might retrieve specific prompts) or 'list_sources' (which might list different resources), leaving the agent without context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sourcesB

List all available sources with their URLs and sample prompts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool lists sources with URLs and sample prompts, which implies a read-only operation, but doesn't specify if this requires authentication, how data is returned (e.g., pagination, format), or any rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence: 'List all available sources with their URLs and sample prompts.' It is front-loaded with the core action and includes no unnecessary words, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there are no parameters and no output schema, the description provides a clear purpose but lacks details on behavioral aspects like authentication, return format, or error handling. For a simple list tool, this might be adequate, but without annotations or output schema, it doesn't fully prepare an agent for invocation, leaving room for improvement in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, meaning there are no parameters to document. The description doesn't need to add parameter details, so it appropriately focuses on the tool's purpose. A baseline of 4 is applied since no parameters exist, and the description doesn't attempt to explain non-existent inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List all available sources with their URLs and sample prompts.' It specifies the verb ('List'), resource ('available sources'), and what information is included ('URLs and sample prompts'). However, it doesn't explicitly distinguish this from sibling tools like 'get_source_prompts' or 'list_amazon_vpc_lattice_prompts', which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_source_prompts' and 'list_amazon_vpc_lattice_prompts' available, there is no indication of when this tool is appropriate, what prerequisites might be needed, or any exclusions for its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vpc_lattice_cliC

Execute AWS CLI VPC Lattice commands

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoCommand arguments as key-value pairs
commandYesThe VPC Lattice subcommand to execute (e.g., create-service-network, list-service-networks)
profileNoAWS CLI profile to usedefault
regionNoAWS regionus-east-1

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'execute' which implies mutation, but doesn't disclose behavioral traits like which commands are destructive (e.g., delete-*), authentication needs, error handling, or output format. This is a significant gap for a CLI tool with potentially destructive operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, clearly stating the tool's function without unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, no annotations, no output schema, and a wide range of commands including destructive ones), the description is incomplete. It lacks context on safety, output, error cases, or how to interpret results, making it inadequate for effective tool use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no meaning beyond the schema—it doesn't explain parameter relationships, command-argument mappings, or usage examples. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Execute AWS CLI VPC Lattice commands' states the action (execute) and target (AWS CLI VPC Lattice commands), but is vague about what VPC Lattice is and doesn't differentiate from sibling tools like get_amazon_vpc_lattice_prompts or list_amazon_vpc_lattice_prompts. It provides a basic purpose but lacks specificity about the resource domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools, prerequisites like AWS credentials, or typical use cases. Usage is implied only through the command enum in the schema, not in the description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedget_amazon_vpc_lattice_prompts
    • First observedget_source_prompts
    • First observedlist_amazon_vpc_lattice_prompts
    • First observedlist_sources
    • First observedvpc_lattice_cli

TDQS

C2.9/5.0

Scored across 5 tools

Disambiguation3/5

The tools have some overlap but descriptions help clarify distinctions. 'get_amazon_vpc_lattice_prompts' and 'get_source_prompts' both retrieve prompts but target different entities (templates vs. sources), while 'list_amazon_vpc_lattice_prompts' and 'list_sources' similarly list different items. The 'vpc_lattice_cli' tool stands apart for CLI execution, but the prompt-related tools could cause mild confusion without careful reading.

Naming Consistency4/5

The naming is mostly consistent with a verb_noun pattern, using 'get_' and 'list_' prefixes clearly. However, 'vpc_lattice_cli' deviates by omitting a verb and using a compound noun, breaking the pattern. The other four tools follow a predictable convention, making this a minor inconsistency.

Tool Count3/5

With 5 tools, the count is borderline for the server's purpose of managing Amazon VPC Lattice prompts and sources. It feels slightly thin, as it covers listing and getting prompts/sources and CLI execution, but might lack operations like creating, updating, or deleting prompts, which could limit functionality. The scope is reasonable but not fully fleshed out.

Completeness2/5

There are significant gaps in the tool surface for managing Amazon VPC Lattice prompts. The server only provides read operations (get and list) for prompts and sources, along with CLI execution, but lacks create, update, or delete tools. This incomplete CRUD coverage will likely cause agent failures when full lifecycle management is needed, as agents cannot modify or add new prompts or sources.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server that provides AI assistants access to AWS CloudWatch Logs, enabling browsing, searching, summarizing, and correlating logs across multiple AWS services.
    167
    Apache 2.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Serves as a Model Context Protocol server that provides tools to look up Amazon Leadership Principles and access video transcripts for integration with Amazon Q CLI.
    -
  • A
    license
    D
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs to explore and interact with API specifications by providing tools for loading, browsing, and getting detailed information about API endpoints.
    4
    15
    14
    ISC