Kong Konnect MCP Server

Kong Konnect MCP Server

A Model Context Protocol server enabling AI assistants to interact with Kong Konnect's API Gateway, providing tools to query analytics data, inspect configurations, and manage control planes through natural language.

Category
Visit Server

Tools

query_api_requests

Query and analyze Kong API Gateway requests with customizable filters. Before calling this it's necessary to have a controlPlaneID and a serviceID or routeID. These can be obtained using the list-control-planes, list-services, and list-routes tools. INPUT: - timeRange: String - Time range for data retrieval (15M, 1H, 6H, 12H, 24H, 7D) - statusCodes: Number[] (optional) - Filter by specific HTTP status codes - excludeStatusCodes: Number[] (optional) - Exclude specific HTTP status codes - httpMethods: String[] (optional) - Filter by HTTP methods (e.g., GET, POST) - consumerIds: String[] (optional) - Filter by consumer IDs - serviceIds: String[] (optional) - Filter by service IDs. The format of this field must be "<controlPlaneID>:<serviceID>". - routeIds: String[] (optional) - Filter by route IDs. The format of this field must be "<controlPlaneID:routeID>" - maxResults: Number - Maximum number of results to return (1-1000) OUTPUT: - metadata: Object - Contains totalRequests, timeRange, and applied filters - requests: Array - List of request objects with details including: - requestId: String - Unique request identifier - timestamp: String - When the request occurred - httpMethod: String - HTTP method used (GET, POST, etc.) - uri: String - Request URI path - statusCode: Number - HTTP status code of the response - consumerId: String - ID of the consumer making the request - serviceId: String - ID of the service handling the request - routeId: String - ID of the matched route - latency: Object - Response time metrics - clientIp: String - IP address of the client - and many more detailed fields...

get_consumer_requests

Retrieve and analyze API requests made by a specific consumer. INPUT: - consumerId: String - ID of the consumer to analyze. The format of this field must be "controlPlaneID:consumerId". - timeRange: String - Time range for data retrieval (15M, 1H, 6H, 12H, 24H, 7D) - successOnly: Boolean - Filter to only show successful (2xx) requests (default: false) - failureOnly: Boolean - Filter to only show failed (non-2xx) requests (default: false) - maxResults: Number - Maximum number of results to return (1-1000) OUTPUT: - metadata: Object - Contains consumerId, totalRequests, timeRange, and filters - statistics: Object - Usage statistics including: - averageLatencyMs: Number - Average response time in milliseconds - successRate: Number - Percentage of successful requests - statusCodeDistribution: Array - Breakdown of requests by status code - serviceDistribution: Array - Breakdown of requests by service - requests: Array - List of requests with details for each request

list_services

List all services associated with a control plane. INPUT: - controlPlaneId: String - ID of the control plane - size: Number - Number of services to return (1-1000, default: 100) - offset: String (optional) - Pagination offset token from previous response OUTPUT: - metadata: Object - Contains controlPlaneId, size, offset, nextOffset, totalCount - services: Array - List of services with details for each including: - serviceId: String - Unique identifier for the service - name: String - Display name of the service - host: String - Target host for the service - port: Number - Target port for the service - protocol: String - Protocol used (http, https, grpc, etc.) - path: String - Path prefix for the service - retries: Number - Number of retries on failure - connectTimeout: Number - Connection timeout in milliseconds - writeTimeout: Number - Write timeout in milliseconds - readTimeout: Number - Read timeout in milliseconds - tags: Array - Tags associated with the service - enabled: Boolean - Whether the service is enabled - metadata: Object - Creation and update timestamps - relatedTools: Array - List of related tools for further analysis

list_routes

List all routes associated with a control plane. INPUT: - controlPlaneId: String - ID of the control plane - size: Number - Number of routes to return (1-1000, default: 100) - offset: String (optional) - Pagination offset token from previous response OUTPUT: - metadata: Object - Contains controlPlaneId, size, offset, nextOffset, totalCount - routes: Array - List of routes with details for each including: - routeId: String - Unique identifier for the route - name: String - Display name of the route - protocols: Array - Protocols this route accepts (http, https, grpc, etc.) - methods: Array - HTTP methods this route accepts - hosts: Array - Hostnames this route matches - paths: Array - URL paths this route matches - stripPath: Boolean - Whether to strip the matched path prefix - preserveHost: Boolean - Whether to preserve the host header - serviceId: String - ID of the service this route forwards to - enabled: Boolean - Whether the route is enabled - metadata: Object - Creation and update timestamps - relatedTools: Array - List of related tools for further analysis

list_consumers

List all consumers associated with a control plane. INPUT: - controlPlaneId: String - ID of the control plane - size: Number - Number of consumers to return (1-1000, default: 100) - offset: String (optional) - Pagination offset token from previous response OUTPUT: - metadata: Object - Contains controlPlaneId, size, offset, nextOffset, totalCount - consumers: Array - List of consumers with details for each including: - consumerId: String - Unique identifier for the consumer - username: String - Username for this consumer - customId: String - Custom identifier for this consumer - tags: Array - Tags associated with the consumer - enabled: Boolean - Whether the consumer is enabled - metadata: Object - Creation and update timestamps - relatedTools: Array - List of related tools for consumer analysis

list_plugins

List all plugins associated with a control plane. INPUT: - controlPlaneId: String - ID of the control plane - size: Number - Number of plugins to return (1-1000, default: 100) - offset: String (optional) - Pagination offset token from previous response OUTPUT: - metadata: Object - Contains controlPlaneId, size, offset, nextOffset, totalCount - plugins: Array - List of plugins with details for each including: - pluginId: String - Unique identifier for the plugin - name: String - Name of the plugin (e.g., rate-limiting, cors, etc.) - enabled: Boolean - Whether the plugin is enabled - config: Object - Plugin-specific configuration - protocols: Array - Protocols this plugin applies to - tags: Array - Tags associated with the plugin - scoping: Object - Defines plugin scope including: - consumerId: String - Consumer this plugin applies to (if any) - serviceId: String - Service this plugin applies to (if any) - routeId: String - Route this plugin applies to (if any) - global: Boolean - Whether this is a global plugin - metadata: Object - Creation and update timestamps - relatedTools: Array - List of related tools for plugin configuration

list_control_planes

List all control planes in your organization. INPUT: - pageSize: Number - Number of control planes per page (1-1000, default: 10) - pageNumber: Number (optional) - Page number to retrieve - filterName: String (optional) - Filter control planes by name - filterClusterType: String (optional) - Filter by cluster type (kubernetes, docker, etc.) - filterCloudGateway: Boolean (optional) - Filter by cloud gateway capability - labels: String (optional) - Filter by labels (format: 'key:value,existCheck') - sort: String (optional) - Sort field and direction (e.g. 'name,created_at desc') OUTPUT: - metadata: Object - Contains pageSize, pageNumber, totalPages, totalCount, filters, sort - controlPlanes: Array - List of control planes with details for each including: - controlPlaneId: String - Unique identifier for the control plane - name: String - Display name of the control plane - description: String - Description of the control plane - type: String - Type of the control plane - clusterType: String - Underlying cluster type - controlPlaneEndpoint: String - URL endpoint for the control plane - telemetryEndpoint: String - URL endpoint for telemetry - hasCloudGateway: Boolean - Whether cloud gateway is enabled - labels: Object - Labels assigned to this control plane - metadata: Object - Creation and update timestamps - usage: Object - Information about how to use these results

get_control_plane

Get detailed information about a specific control plane. INPUT: - controlPlaneId: String - ID of the control plane to retrieve OUTPUT: - controlPlaneDetails: Object - Detailed information including: - controlPlaneId: String - Unique identifier for the control plane - name: String - Display name of the control plane - description: String - Description of the control plane - type: String - Type of the control plane - clusterType: String - Underlying cluster type - controlPlaneEndpoint: String - URL endpoint for the control plane - telemetryEndpoint: String - URL endpoint for telemetry - hasCloudGateway: Boolean - Whether cloud gateway is enabled - labels: Object - Labels assigned to this control plane - metadata: Object - Creation and update timestamps - relatedTools: Array - List of related tools for further analysis

list_control_plane_group_memberships

List all control planes that are members of a specific control plane group. INPUT: - groupId: String - ID of the control plane group (control plane that acts as the group) - pageSize: Number - Number of members to return per page (1-1000, default: 10) - pageAfter: String (optional) - Cursor for pagination after a specific item OUTPUT: - metadata: Object - Contains groupId, pageSize, pageAfter, nextPageAfter, totalCount - members: Array - List of member control planes with details for each including: - controlPlaneId: String - Unique identifier for the control plane - name: String - Display name of the control plane - description: String - Description of the control plane - type: String - Type of the control plane - clusterType: String - Underlying cluster type - membershipStatus: Object - Group membership status including: - status: String - Current status (OK, CONFLICT, etc.) - message: String - Status message - conflicts: Array - List of configuration conflicts if any - metadata: Object - Creation and update timestamps - relatedTools: Array - List of related tools for group management

check_control_plane_group_membership

Check if a control plane is a member of any group. INPUT: - controlPlaneId: String - ID of the control plane to check OUTPUT: - controlPlaneId: String - ID of the control plane that was checked - groupMembership: Object - Membership information including: - isMember: Boolean - Whether the control plane is a member of any group - groupId: String - ID of the group this control plane belongs to (if any) - groupName: String - Name of the group this control plane belongs to - status: String - Membership status (OK, CONFLICT, etc.) - message: String - Status message - conflicts: Array - List of configuration conflicts if any - relatedTools: Array - List of related tools for group management

README

Kong Konnect MCP Server

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.

https://github.com/user-attachments/assets/19c2f716-49b5-46c3-9457-65b3784e2111

Table of Contents

Overview

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.

Project Structure

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

Installation

Prerequisites

  • Node.js 20 or higher
  • A Kong Konnect account with API access
  • A client with MCP capabilities (e.g. Claude Desktop, Cursor, etc...)

Setup

# 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

Configuration

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

Available Tools

The server provides tools organized in three categories:

Analytics Tools

Query API Requests

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

Get Consumer Requests

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

Configuration Tools

List Services

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 Routes

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 Consumers

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 Plugins

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

Control Planes Tools

List Control Planes

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 Control Plane

Get detailed information about a specific control plane.

Inputs:
- controlPlaneId: ID of the control plane to retrieve

List Control Plane Group Memberships

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 Control Plane Group Membership

Check if a control plane is a member of any group.

Inputs:
- controlPlaneId: Control plane ID to check

Usage with Claude

To use this MCP server with Claude for Desktop:

  1. Install Claude for Desktop

  2. Create or edit the Claude Desktop configuration file:

    • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  3. 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"
      }
    }
  }
}
  1. Restart Claude for Desktop
  2. The Kong Konnect tools will now be available for Claude to use

Example Workflows

Analyzing API Traffic

  1. First, list all control planes:

    Please list all control planes in my Kong Konnect organization.
    
  2. Then, list services for a specific control plane:

    List all services for control plane [CONTROL_PLANE_NAME/ID].
    
  3. 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.
    

Troubleshooting Consumer Issues

  1. List consumers for a control plane:

    List all consumers for control plane [CONTROL_PLANE_NAME/ID].
    
  2. Analyze requests for a specific consumer:

    Show me all requests made by consumer [CONSUMER_NAME/ID] in the last 24 hours.
    
  3. Check for common errors or patterns:

    What are the most common errors experienced by this consumer?
    

Development

Adding New Tools

  1. Define the parameters in parameters.ts
  2. Add documentation in prompts.ts
  3. Create the operation logic in the appropriate file in operations/
  4. Register the tool in tools.ts
  5. Handle the tool execution in index.ts

Troubleshooting

Common Issues

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

Credits

Built by Kong. Inspired by Stripe's Agent Toolkit.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured