API测试自动机
一个强大的工具,用于根据API规范自动生成模型上下文协议(MCP)服务器。该系统允许您快速将任何API转换为符合MCP的服务器,该服务器可与AI代理和LLM应用程序一起使用。
🌟 特性
- 多格式支持:解析OpenAPI/Swagger文件、URL或自定义JSON格式
- 自动生成刀具:将API端点转换为具有正确架构的MCP工具
- 身份验证处理:支持API密钥、承载令牌和基本身份验证
- 代码导出:生成独立的Python MCP服务器
- 验证:生成前验证API规范
- 丰富的CLI:带有进度指示器的漂亮命令行界面
- 文档:自动生成全面的API文档
🚀 快速开始
安装
- 克隆存储库:
git clone
cd "API Testing Automata - Basic Backend"- 安装依赖项:
pip install -r requirements.txt基本用法
- 从OpenAPI URL生成:
python main.py generate https://petstore.swagger.io/v2/swagger.json --output petstore_server.py- 从自定义JSON生成:
python main.py generate examples/open_meteo_api/open_meteo_api.json --output examples/open_meteo_api/open_meteo_api_mcp_server.py- 验证API规范:
python main.py validate examples/open_meteo_api/open_meteo_api.json- 参见示例:
python main.py example📋 输入格式
1.OpenAPI/Swagger格式
标准OpenAPI 2.0/3.0 JSON或YAML文件:
python main.py generate openapi.json
python main.py generate https://api.example.com/swagger.json2.自定义JSON格式
使用简化的自定义格式快速定义API:
{
"name": "My API",
"version": "1.0.0",
"description": "Example API",
"base_url": "https://api.example.com",
"auth": {
"type": "api_key",
"api_key_header": "X-API-Key"
},
"api": [
{
"name": "get_users",
"endpoint": "/users",
"method": "GET",
"description": "Get all users",
"input_schema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum number of users"
}
}
},
"output_schema": {
"type": "array",
"items": {"type": "object"}
}
}
]
}🛠️ MCP生成器的功能
MCP生成器是将API规范转换为功能性MCP服务器的核心组件。以下是它的详细功能:
1. 工具定义生成
对于每个API端点,它会创建一个MCP工具,其中包含:
- 名字:从端点操作ID或路径派生
- 描述:使用API的描述来理解LLM
- 输入架构:将API参数转换为JSON架构格式
- 处理程序函数:生成Python代码以执行API调用
2. 架构转换
- 将OpenAPI参数模式转换为MCP兼容的JSON模式
- 处理路径参数、查询参数和请求体
- 确保LLM使用的正确类型验证和描述
- 将API响应模式映射到结构化输出格式
3. 身份验证集成
- 从API规范中检测身份验证要求
- 生成API密钥、承载令牌和基本身份验证的代码
- 处理标头注入和凭据管理
- 支持全局和每个端点的身份验证
4. 请求/响应处理
- 为每个端点生成HTTP客户端代码
- 处理带有路径参数替换的URL构造
- 管理查询参数和请求正文
- 处理响应并构建它们以供LLM使用
- 包括全面的错误处理
5. 附加功能
- 辅助工具:生成实用工具,如
list_available_endpoints和get_endpoint_schema - 资源:为API文档创建MCP资源
- 验证:包括输入验证和错误处理
- 文档:自动生成全面的API文档
6. 代码生成过程
生成器为每个端点创建这样的Python函数:
async def call_get_users(**kwargs):
"""Get all users - Auto-generated tool handler for GET /users"""
import requests
import json
try:
# Extract and validate parameters
limit = kwargs.get('limit')
query_params = {}
if limit is not None:
query_params['limit'] = limit
# Setup authentication
headers = {}
api_key = kwargs.get('api_key') or 'YOUR_API_KEY'
headers['X-API-Key'] = api_key
# Make the API request
base_url = 'https://api.example.com'
url = base_url.rstrip('/') + '/users'
response = requests.get(url, params=query_params, headers=headers, timeout=30)
response.raise_for_status()
# Process response
result_data = response.json()
result = {
'success': True,
'status_code': response.status_code,
'data': result_data,
'endpoint': 'get_users',
'method': 'GET',
'url': url
}
return result
except requests.RequestException as e:
return {"error": f"API request failed: {str(e)}", "success": False}
except Exception as e:
return {"error": f"Tool execution failed: {str(e)}", "success": False}建筑
API Testing Automata - Basic Backend/
├── api_to_mcp/ # Core generator package
│ ├── __init__.py # Package initialization
│ ├── models.py # Data models (Pydantic)
│ ├── parser.py # Input parsing module
│ └── generator.py # MCP server generation
├── main.py # CLI interface
├── executor.py # Executes generated MCP servers
├── orchestrator.py # Orchestrates test generation and execution
├── examples/
│ └── open_meteo_api.json # Example custom format
├── requirements.txt # Dependencies
└── README.md # This file关键部件:
- API解析器:处理各种输入格式的解析
- MCP发生器:创建MCP服务器的核心生成器
- 模型:用于验证和类型安全的Pydantic模型
- 命令行界面:丰富的命令行界面,易于使用
🔐 身份验证支持
系统支持多种身份验证方式:
- API密钥:基于标头的API密钥身份验证
- 承载令牌:JWT或基于令牌的身份验证
- 基本认证:用户名/密码验证
- 无身份验证:用于公共API
身份验证可以全局指定或按端点指定。
📊 生成的MCP服务器功能
生成的MCP服务器包括:
工具
- 每个API端点一个工具
list_available_endpoints:列出所有可用工具get_endpoint_schema:获取任何端点的详细架构
资源
api_documentation:以降价格式提供完整的API文档
免责声明:
这是一项正在进行的工作,尚未准备好投入生产使用。此外,自述文件是使用AI生成的,因此可能不准确。
