Konnect MCP 服务器

Konnect MCP 服务器是一个实现模型上下文协议(MCP)的服务器,用于AI工具与Kong Konnect API的交互,支持控制平面、服务和路由的管理与搜索。

  • by zhongchen
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 zhongchen/mcp-server

使用说明

Konnect MCP服务器

用于与Konnect API交互的模型上下文协议(MCP)服务器。该服务器允许像Claude这样的AI工具通过结构化函数调用与Konnect服务进行交互。

概述

Konnect MCP服务器实现了模型上下文协议,为AI助手和Konnect API之间提供了桥梁。它使AI助手能够:

  • 列出并管理控制平面
  • 列出、创建、更新和删除服务
  • 列出、创建、更新和删除路线
  • 搜索Konnect实体
  • 列出可用的搜索类型

先决条件

  • Node.js(v18或更高版本)
  • Konnect帐户
  • 具有适当权限的Konnect API令牌

安装

克隆存储库并安装依赖项:

git clone https://github.com/your-username/konnect-mcp-server.git
cd konnect-mcp-server
npm install

建筑

要构建项目,请执行以下操作:

npm run build

这将编译TypeScript代码并在 dist 目录。

用法

要启动MCP服务器,请执行以下操作:

npm start

或者,您可以直接提供您的Konnect API令牌:

npm start -- --token=your_konnect_api_token

或者,您可以设置 KONNECT_TOKEN 环境变量:

export KONNECT_TOKEN=your_konnect_api_token
npm start

可用工具

服务器向AI助手公开以下功能,按类别组织:

核心工具

ListControlPlans

列出Konnect帐户中的控制平面。

参数:

  • region (可选):Konnect地区(美国、欧盟、澳大利亚、加拿大、美国)。默认值:“我们”
  • pageSize (可选):每页的最大项目数。默认值:10
  • pageNumber (可选):要检索的页码。默认值:1

搜索连接

使用查询字符串在Konnect中搜索实体。

参数:

  • q (必填):定义搜索条件的查询(例如。, name:"API Gateway")
  • region (可选):Konnect地区(美国、欧盟、澳大利亚、加拿大、美国)。默认值:“我们”
  • pageSize (可选):每页的最大项目数。默认值:10
  • pageAfter (可选):用于分页以请求下一页的标记

列表搜索类型

列出Konnect中所有可搜索的实体类型。

参数:

  • region (可选):Konnect地区(美国、欧盟、澳大利亚、加拿大、美国)。默认值:“我们”

维修工具

列表服务

列出特定控制平面中的服务。

参数:

  • controlPlaneId (必填):控制平面的ID
  • region (可选):Konnect地区(美国、欧盟、澳大利亚、加拿大、美国)。默认值:“我们”
  • pageSize (可选):每页的最大项目数。默认值:10
  • pageNumber (可选):要检索的页码。默认值:1
  • tags (可选):用于筛选服务的标签。AND使用逗号(,),OR使用正斜杠(/)

创建服务

在控制平面中创建新服务。

参数:

  • controlPlaneId (必填):控制平面的ID
  • service (必填):服务配置对象
    • name (可选):服务的名称
    • protocol (可选):要使用的协议(http、https、grpc等)
    • host (必填):上游服务器的主机
    • port (可选):上游服务器的端口
    • 以及其他服务配置选项

GetService

获取特定服务的详细信息。

参数:

  • controlPlaneId (必填):控制平面的ID
  • serviceId (必填):服务的ID或名称

更新服务

更新现有服务。

参数:

  • controlPlaneId (必填):控制平面的ID
  • serviceId (必填):服务的ID或名称
  • service (必需):更新了服务配置

删除服务

删除服务。

参数:

  • controlPlaneId (必填):控制平面的ID
  • serviceId (必填):服务的ID或名称

路线工具

列表路线

列出特定控制平面中的路线。

参数:

  • controlPlaneId (必填):控制平面的ID
  • region (可选):Konnect地区(美国、欧盟、澳大利亚、加拿大、美国)。默认值:“我们”
  • pageSize (可选):每页的最大项目数。默认值:10
  • pageOffset (可选):分页偏移量
  • tags (可选):用于筛选路由的标签。AND使用逗号(,),OR使用正斜杠(/)

创建路线

在控制平面中创建新管线。

参数:

  • controlPlaneId (必填):控制平面的ID
  • route (必填):路由配置对象
    • name (可选):路线名称
    • protocols (可选):此路由应匹配的协议数组
    • methods (可选):此路由应匹配的HTTP方法数组
    • hosts (可选):此路由应匹配的域名数组
    • paths (可选):此路由应匹配的路径数组
    • 以及其他路由配置选项

GetRoute

获取特定路线的详细信息。

参数:

  • controlPlaneId (必填):控制平面的ID
  • routeId (必填):路线的ID或名称

更新路线

更新现有路线。

参数:

  • controlPlaneId (必填):控制平面的ID
  • routeId (必填):路线的ID或名称
  • route (必填):更新了路线配置

删除路线

删除路线。

参数:

  • controlPlaneId (必填):控制平面的ID
  • routeId (必填):路线的ID或名称

发展

项目结构

该项目按功能分为模块:

src/
├── core/           # Core functionality (control planes, search)
│   ├── functions.ts
│   ├── parameters.ts
│   ├── prompts.ts
│   └── index.ts
├── services/       # Service-related functionality
│   ├── functions.ts
│   ├── parameters.ts
│   ├── prompts.ts
│   └── index.ts
├── routes/         # Route-related functionality
│   ├── functions.ts
│   ├── parameters.ts
│   ├── prompts.ts
│   └── index.ts
├── shared/         # Shared utilities
│   └── api.ts
├── index.ts        # Application entry point
├── server.ts       # MCP server implementation
└── tools.ts        # Tool registration and configuration

测试

组织测试以匹配项目结构:

src/test/
├── core/           # Tests for core functionality
├── services/       # Tests for service-related functionality
├── routes/         # Tests for route-related functionality
├── shared/         # Tests for shared utilities
└── server.test.ts  # Tests for the MCP server

可用脚本

  • npm run build:编译TypeScript代码
  • npm run start:启动服务器
  • npm run clean:删除dist目录
  • npm run lint:抓取代码库
  • npm run test:运行测试
  • npm run test:watch:在监视模式下运行测试
  • npm run prettier:格式化代码
  • npm run prettier-check:检查代码是否已格式化

搜索查询示例

您可以使用 SearchKonnect 具有各种查询格式的工具:

  • 按名称搜索: name:"API Gateway"
  • 按类型搜索: type:user
  • 按属性搜索: attributes.email:*@example.com
  • 组合搜索: type:team AND labels.env:prod

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

贡献

欢迎投稿!请随时提交拉取请求。