Amazon VPC Lattice MCP Server
# 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. Note that installing [github-mcp-server](https://github.com/github/github-mcp-server) is also strongly recommended to assist with development prompts.
1. Clone the repository:
```bash
git clone https://github.com/awslabs/amazon-vpc-lattice-mcp-server.git
cd amazon-vpc-lattice-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the server:
```bash
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`):
```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
```typescript
use_mcp_tool({
server_name: "amazon-vpc-lattice",
tool_name: "list_sources",
arguments: {}
})
```
### Get Source Prompts
```typescript
use_mcp_tool({
server_name: "amazon-vpc-lattice",
tool_name: "get_source_prompts",
arguments: {
source_name: "AWS Documentation"
}
})
```
### List Amazon VPC Lattice Prompts
```typescript
use_mcp_tool({
server_name: "amazon-vpc-lattice",
tool_name: "list_amazon_vpc_lattice_prompts",
arguments: {}
})
```
### Get Amazon VPC Lattice Prompt Details
```typescript
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:
```typescript
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:
```typescript
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:
```typescript
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:
```typescript
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`:
```typescript
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`:
```typescript
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)
TDQS
Scored across 5 tools
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.
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.
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.
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.