A Model Context Protocol (MCP) server for interacting with Kong Konnect APIs, allowing AI assistants to query and analyze Kong Gateway configurations, traffic, and analytics.
mcp.mp4
- Overview
- Project Structure
- Installation
- Configuration
- Available Tools
- Usage with Claude
- Example Workflows
- Development
- Troubleshooting
This project provides a Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with Kong Konnect's API Gateway. It offers a set of tools to query analytics data, inspect configuration details, and manage control planes through natural language conversation.
Key features:
- Query API request analytics with customizable filters
- List and inspect gateway services, routes, consumers, and plugins
- Manage control planes and control plane groups
- Integration with Claude and other MCP-compatible AI assistants
Konnect MCP is a work in progress and we will be adding additional functionality and improvements with each release.
src/
├── index.ts # Main entry point
├── api.ts # Kong API client
├── tools.ts # Tool definitions
├── parameters.ts # Zod schemas for tool parameters
├── prompts.ts # Detailed tool documentation
├── operations/
│ ├── analytics.ts # API request analytics operations
│ ├── configuration.ts # Services, routes, consumers, plugins
│ └── controlPlanes.ts # Control plane management
└── types.ts # Common type definitions
- Node.js 20 or higher
- A Kong Konnect account with API access
- A client with MCP capabilities (e.g. Claude Desktop, Cursor, etc...)
# Clone the repository
git clone https://github.com/Kong/mcp-konnect.git
cd mcp-konnect
# Install dependencies
npm install
# Build the project
npm run build
Set the following environment variables to configure the MCP server:
# Required: Your Kong Konnect API key
export KONNECT_ACCESS_TOKEN=kpat_api_key_here
# Optional: The API region to use (defaults to US)
# Possible values: US, EU, AU, ME, IN
export KONNECT_REGION=us
The server provides tools organized in three categories:
Query and analyze Kong API Gateway requests with customizable filters.
Inputs:
- timeRange: Time range for data retrieval (15M, 1H, 6H, 12H, 24H, 7D)
- statusCodes: Filter by specific HTTP status codes
- excludeStatusCodes: Exclude specific HTTP status codes
- httpMethods: Filter by HTTP methods
- consumerIds: Filter by consumer IDs
- serviceIds: Filter by service IDs
- routeIds: Filter by route IDs
- maxResults: Maximum number of results to return
Analyze API requests made by a specific consumer.
Inputs:
- consumerId: ID of the consumer to analyze
- timeRange: Time range for data retrieval
- successOnly: Show only successful (2xx) requests
- failureOnly: Show only failed (non-2xx) requests
- maxResults: Maximum number of results to return
List all services associated with a control plane.
Inputs:
- controlPlaneId: ID of the control plane
- size: Number of services to return
- offset: Pagination offset token
List all routes associated with a control plane.
Inputs:
- controlPlaneId: ID of the control plane
- size: Number of routes to return
- offset: Pagination offset token
List all consumers associated with a control plane.
Inputs:
- controlPlaneId: ID of the control plane
- size: Number of consumers to return
- offset: Pagination offset token
List all plugins associated with a control plane.
Inputs:
- controlPlaneId: ID of the control plane
- size: Number of plugins to return
- offset: Pagination offset token
List all control planes in your organization.
Inputs:
- pageSize: Number of control planes per page
- pageNumber: Page number to retrieve
- filterName: Filter control planes by name
- filterClusterType: Filter by cluster type
- filterCloudGateway: Filter by cloud gateway capability
- labels: Filter by labels
- sort: Sort field and direction
Get detailed information about a specific control plane.
Inputs:
- controlPlaneId: ID of the control plane to retrieve
List all control planes that are members of a specific group.
Inputs:
- groupId: Control plane group ID
- pageSize: Number of members to return per page
- pageAfter: Cursor for pagination
Check if a control plane is a member of any group.
Inputs:
- controlPlaneId: Control plane ID to check
To use this MCP server with Claude for Desktop:
-
Install Claude for Desktop
-
Create or edit the Claude Desktop configuration file:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- MacOS:
-
Add the following configuration:
{
"mcpServers": {
"kong-konnect": {
"command": "node",
"args": [
"/absolute/path/to/mcp-konnect/build/index.js"
],
"env": {
"KONNECT_ACCESS_TOKEN": "kpat_api_key_here",
"KONNECT_REGION": "us"
}
}
}
}
- Restart Claude for Desktop
- The Kong Konnect tools will now be available for Claude to use
-
First, list all control planes:
Please list all control planes in my Kong Konnect organization.
-
Then, list services for a specific control plane:
List all services for control plane [CONTROL_PLANE_NAME/ID].
-
Query API requests for a specific service:
Show me all API requests for service [SERVICE_NAME/ID] in the last hour that had 5xx status codes.
-
List consumers for a control plane:
List all consumers for control plane [CONTROL_PLANE_NAME/ID].
-
Analyze requests for a specific consumer:
Show me all requests made by consumer [CONSUMER_NAME/ID] in the last 24 hours.
-
Check for common errors or patterns:
What are the most common errors experienced by this consumer?
- Define the parameters in
parameters.ts
- Add documentation in
prompts.ts
- Create the operation logic in the appropriate file in
operations/
- Register the tool in
tools.ts
- Handle the tool execution in
index.ts
Connection Errors
- Verify your API key is valid and has the necessary permissions
- Check that the API region is correctly specified
- Ensure your network can connect to the Kong Konnect API
Authentication Errors
- Regenerate your API key in the Kong Konnect portal
- Check that environment variables are correctly set
Data Not Found
- Verify the IDs used in requests are correct
- Check that the resources exist in the specified control plane
- Ensure time ranges are valid for analytics queries
Built by Kong. Inspired by Stripe's Agent Toolkit.