Swagger MCP 服务器

一个通过模型上下文协议(MCP)接收和提供Swagger/OpenAPI规范的服务器,支持多种认证方法和实时通信。

  • by dcolley
  • TypeScript
  • 本地部署
  • 116 星标
  • 更新于
在 GitHub 查看 dcolley/swagger-mcp

使用说明

Swagger MCP服务器

通过模型上下文协议(MCP)接收并提供Swagger/OpenAPI规范的服务器。

特性

  • 加载Swagger/OOpenAPI规范
  • 支持多种身份验证方法:
    • 基本认证
    • 承载令牌
    • API密钥(头或查询)
    • OAuth2
  • 从API端点自动生成MCP工具
  • 服务器发送事件(SSE)支持实时通信
  • TypeScript支持

安全

这是个人服务器!!不要把它暴露在公共互联网上。 如果底层API需要身份验证,则不应将MCP服务器暴露于公共互联网。

全部

  • 机密-MCP服务器应该能够使用来自用户的机密来验证对API的请求
  • 全面的测试套件

先决条件

  • Node.js(v18或更高版本)
  • 纱线包装经理
  • TypeScript

安装

  1. 克隆存储库:
git clone https://github.com/dcolley/swagger-mcp.git
cd swagger-mcp
  1. 安装依赖项:
yarn install
  1. 创建一个 .env 基于示例的文件:
cp .env.example .env
  1. 配置您的Swagger/OpenAPI规范:

    • 将Swagger文件放入项目中(例如。, swagger.json)
    • 或者提供Swagger规范的URL
  2. 更新中的配置 config.json 使用您的服务器设置:

{
  "server": {
    "host": "localhost",
    "port": 3000
  },
  "swagger": {
    "url": "url-or-path/to/your/swagger.json",
    "apiBaseUrl": "https://api.example.com",  // Fallback if not specified in Swagger
    "defaultAuth": {  // Fallback if not specified in Swagger
      "type": "apiKey",
      "apiKey": "your-api-key",
      "apiKeyName": "api_key",
      "apiKeyIn": "header"
    }
  }
}

注意:服务器将Swagger规范中的设置优先于配置文件:

  • 如果Swagger文件包含 servers 数组中,第一个服务器URL将用作基本URL
  • 如果Swagger文件定义了安全方案,它们将用于身份验证
  • 如果未在Swagger文件中指定,配置文件设置将作为后备

用法

  1. 启动开发服务器:
yarn dev
  1. 生产建设:
yarn build
  1. 启动生产服务器:
yarn start

API终点

  • GET /health -检查服务器运行状况
  • GET /sse -建立服务器发送事件连接
  • POST /messages -向MCP服务器发送消息

测试

运行测试套件:

# Run tests once
yarn test

# Run tests in watch mode
yarn test:watch

# Run tests with coverage report
yarn test:coverage

认证

服务器支持各种身份验证方法。在中配置它们 config.json 如果未在Swagger文件中指定,则将文件作为回退:

基本认证

{
  "defaultAuth": {
    "type": "basic",
    "username": "your-username",
    "password": "your-password"
  }
}

承载令牌

{
  "defaultAuth": {
    "type": "bearer",
    "token": "your-bearer-token"
  }
}

API密钥

{
  "defaultAuth": {
    "type": "apiKey",
    "apiKey": "your-api-key",
    "apiKeyName": "X-API-Key",
    "apiKeyIn": "header"
  }
}

OAuth2

{
  "defaultAuth": {
    "type": "oauth2",
    "token": "your-oauth-token"
  }
}

发展

  1. 启动开发服务器:
yarn dev

许可证

此项目根据Apache 2.0许可证获得许可。

环境变量

  • PORT:服务器端口(默认值:3000)
  • API_USERNAME:API身份验证的用户名(回退)
  • API_PASSWORD:API身份验证的密码(回退)
  • API_TOKEN:用于身份验证的API令牌(回退)
  • DEFAULT_API_BASE_URL:API终结点的默认基本URL(回退)
  • DEFAULT_SWAGGER_URL:默认Swagger规范URL