使用说明
Swagger MCP
一个连接到Swagger规范的MCP服务器,帮助人工智能构建所有必需的模型,为该服务生成MCP服务器。
特性
- 下载Swagger规范并将其存储在本地,以便更快地参考。
- 返回所有端点及其HTTP方法和描述的列表
- 返回所有模型的列表
- 返回一个模型
- 返回服务以连接到端点
- 返回MCP函数定义
- 生成具有完整架构信息的完整MCP工具定义
- 在工具描述中包含AI特定说明
先决条件
- Node.js(v14或更高版本)
- npm或纱线
安装
- 克隆存储库:
git clone https://github.com/readingdancer/swagger-mcp.git
cd swagger-mcp
- 安装依赖项:
npm install
- 创建一个
.env文件基于.env.example文件:
cp .env.example .env
- 更新
.env文件。
配置
编辑 .env 配置应用程序的文件:
PORT:服务器将运行的端口(默认值:3000)NODE_ENV:环境(开发、生产、测试)LOG_LEVEL:日志记录级别(信息、错误、调试)
用法
构建应用程序
构建应用程序:
npm run build
这将编译TypeScript代码,准备用作MCP服务器
作为MCP服务器运行
要作为MCP服务器运行以与Cursor和其他应用程序集成,请执行以下操作:
node build/index.js
您还可以通过CLI参数提供Swagger URL:
node build/index.js --swagger-url="https://petstore.swagger.io/v2/swagger.json"
或者使用替代格式:
node build/index.js --swaggerUrl="https://petstore.swagger.io/v2/swagger.json"
备注:CLI --swagger-url 论点优先于 swaggerFilePath 工具调用中的参数。如果两者都提供,则将使用CLI参数。
使用MCP检查器
要运行MCP检查器进行调试:
npm run inspector
添加到光标
要将此MCP服务器添加到游标,请执行以下操作:
- 打开光标设置>功能>MCP
- 点击“+添加新MCP服务器”
- 输入服务器的名称(例如“Swagger MCP”)
- 选择“stdio”作为传输类型
- 输入运行服务器的命令:
- 基础:
node path/to/swagger-mcp/build/index.js - 使用Swagger URL:
node path/to/swagger-mcp/build/index.js --swagger-url="https://your-api-url/swagger.json"
- 基础:
- 点击“添加”
Swagger MCP工具现在将可用于Composer中的光标代理。
小贴士:如果您提供 --swagger-url 配置服务器时不需要提供CLI参数 swaggerFilePath 在工具调用中,使工具更易于使用。
可用的Swagger MCP工具
MCP服务器提供以下工具:
getSwaggerDefinition:从URL下载Swagger定义listEndpoints:列出Swagger定义中的所有端点(可选swaggerFilePath)listEndpointModels:列出特定端点使用的所有模型(可选swaggerFilePath)generateModelCode:为模型生成TypeScript代码(可选swaggerFilePath)generateEndpointToolCode:为MCP工具定义生成TypeScript代码(可选swaggerFilePath)
Swagger定义优先级:这些工具根据此优先级确定使用哪个Swagger定义:
- 命令行界面
--swagger-url参数(如果在启动服务器时提供) swaggerFilePath参数(如果在工具调用中提供)- 如果两者都不可用,则出错
如果您以以下方式启动服务器 --swagger-url,您可以省略 swaggerFilePath 工具中的参数调用方便。
可用的Swagger MCP提示
服务器还提供MCP提示,指导AI助手完成常见的工作流程:
add-endpoint:使用Swagger MCP工具添加新端点的分步指南
要使用提示,客户端可以 prompts/get 带有提示名称和可选参数的请求:
{
"method": "prompts/get",
"params": {
"name": "add-endpoint",
"arguments": {
"swaggerUrl": "https://petstore.swagger.io/v2/swagger.json",
"endpointPath": "/pets/{id}",
"httpMethod": "GET"
}
}
}
提示将返回一系列消息,指导AI助手完成添加新端点所需的确切过程。
设置新项目
有两种方法可以为您的项目设置Swagger定义:
方法1:使用CLI参数(推荐)
使用启动MCP服务器 --swagger-url 论点:
node build/index.js --swagger-url="https://your-api-url/swagger.json"
这将自动下载并缓存Swagger定义。所有工具都将使用此定义,您不需要提供 swaggerFilePath 在工具调用中。
方法2:使用getSwaggerDefinition工具
或者,您可以要求代理使用以下命令获取Swagger文件 getSwaggerDefinition 工具。请确保您提供了swagger文件的URL,或者至少提供了一种查找它的方法。这将下载该文件并使用哈希文件名将其保存在本地。文件名将自动添加到 .swagger-mcp 当前解决方案根目录中的设置文件。
自动生成.swagg-mcp配置文件
使用时 getSwaggerDefinition 工具(上述方法2),a .swagger-mcp 文件会自动创建:
SWAGGER_FILEPATH = TheFullPathToTheLocallyStoredSwaggerFile
此配置文件将当前项目与特定的Swagger API关联起来。我们将来可能会用它来存储更多细节。
配置后,您可以在调用工具时从此配置文件中引用Swagger文件路径。但是,如果使用CLI --swagger-url 参数(方法1),此配置文件是可选的,因为Swagger定义是自动加载的。
改进的MCP工具代码生成器
MCP工具代码生成器已得到增强,可提供更完整和可用的工具定义:
关键改进
-
完整的架构信息:生成器现在直接在inputSchema中包含所有模型的完整模式信息,包括嵌套对象。
-
更好的参数命名:参数名称现在更具语义,避免了点等有问题的字符(例如。,
taskRequest而不是task.Request). -
语义工具名称:工具名称现在更具描述性,并遵循基于HTTP方法和资源路径的一致命名约定。
-
支持YAML Swagger文件:生成器现在支持JSON和YAML Swagger定义文件。
-
改进的文档:生成的工具定义包括对所有参数和属性的全面描述。
-
无外部依赖关系:生成的代码不需要导入外部模型文件,使其更加自包含且易于使用。
-
AI特定说明工具描述现在包括针对AI代理的特殊说明,帮助他们了解如何有效地使用工具。
示例用法
要为端点生成MCP工具定义,请执行以下操作:
import generateEndpointToolCode from './services/generateEndpointToolCode.js';
// If server was started with --swagger-url, swaggerFilePath is optional
const toolCode = await generateEndpointToolCode({
path: '/pets',
method: 'POST',
swaggerFilePath: './petstore.json', // Optional if --swagger-url was provided
singularizeResourceNames: true
});
console.log(toolCode);
这将生成一个完整的MCP工具定义,其中包含POST/pets端点的完整模式信息。
备注:如果您使用启动服务器 --swagger-url,您可以省略 swaggerFilePath 参数:
const toolCode = await generateEndpointToolCode({
path: '/pets',
method: 'POST',
singularizeResourceNames: true
});
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
MCP提示AI助手
为了帮助人工智能助手有效地使用Swagger MCP工具,我们创建了一组提示,指导他们完成常见任务。这些提示为添加新端点、使用生成的模型等过程提供了分步说明。
看看 PROMPTS.md 文件以获取完整的提示集合。
示例用例:当要求AI助手向您的项目添加新端点时,您可以参考“添加新端点”提示,以确保助手按照正确的顺序遵循正确的流程。