webapi-mcp-server
WebAPI MCPサーバーは、従来のWeb APIをMCPツールに変換し、APIインターフェースの一括登録をサポートします。デフォルトのリクエストヘッダーを設定することで、データの精度と安全性を向上させます。これにより、従来のビジネスシステムと大規模モデルの直接接続が可能になり、冗長なコードを排除します。
GitHubスター
3
ユーザー評価
未評価
お気に入り
0
閲覧数
10
フォーク
1
イシュー
0
README
WebAPI MCP 服务器
将传统Web API转换为MCP工具的服务器,支持API接口批量注册,通过MCP工具设置默认请求头。
优势:
1.比传统的RAG模式更简单,部署起来更方便,并且可以实现传统业务系统和大模型的直接对接,无需开发额外接口增加冗余代码和工作量
2.支持json文件或者md文件格式或者文件目录批量导入
3.相较于RAG通过向量库进行数据切片,检索的数据,直接通过模型调用API获取数据可以更精准更可靠
4.数据安全,通过设置转换的mcp工具的请求头参数可以做到更精准的数据权限管理和控制
原文链接:https://blog.csdn.net/qq_39336120/article/details/147537618
功能特点
- API转换 - 将任何Web API自动转换为MCP工具
- 动态注册 - 运行时动态注册和移除API
- 全局请求头 - 集中管理所有API的默认请求头
- 灵活参数 - 支持多种参数类型和验证
- 结果路径 - 支持从嵌套响应中提取特定数据
- 批量加载 - 支持从文件或目录批量加载API定义
Cursor或者其他MCP客户端引入方式
{
"mcpServers": {
"webapi-mcp-server": {
"command": "npx",
"args": [
"-y",
"@yinzhouzhi/webapi-mcp-server",
"start"
]
}
}
}
安装
# 克隆项目
git clone <repository-url>
cd webapi-mcp-server
# 安装依赖
npm install
# 初始化项目目录
npm run setup
使用方法
启动服务器
npm start
# 使用自定义配置启动
npm start -- --config path/to/config.json --apis-dir path/to/apis
# 使用环境变量启动
WEBAPI_CONFIG_FILE=path/to/config.json WEBAPI_APIS_DIR=path/to/apis WEBAPI_DEBUG=true npm start
配置文件选项
配置文件支持JSON、YAML和YML格式,可以包含以下选项:
{
"apiDirectories": [ // 包含API定义文件的目录列表
"./apis",
"./more-apis"
],
"apiFiles": [ // 单独API定义文件的路径列表
"./specific-api.json",
"./another-api.md"
],
"globalHeaders": { // 应用于所有API请求的默认请求头
"User-Agent": "WebAPI MCP Client/1.0", // 用户代理
"Accept": "application/json", // 接受的内容类型
"Authorization": "Bearer YOUR_TOKEN" // 授权令牌
},
"debug": true // 是否启用调试模式
}
配置项 | 类型 | 描述 |
---|---|---|
apiDirectories |
数组 | 包含API定义文件的目录列表 |
apiFiles |
数组 | 单独API定义文件的路径列表 |
globalHeaders |
对象 | 应用于所有API请求的默认请求头 |
debug |
布尔值 | 是否启用调试模式 |
运行示例
npm run run-example
通过CLI工具使用
# 启动服务器
npm run start
# 显示示例
npm run example
环境变量配置
服务器也可以通过环境变量进行配置:
环境变量 | 描述 |
---|---|
WEBAPI_CONFIG_FILE |
配置文件的路径 |
WEBAPI_APIS_DIR |
API定义目录的路径 |
WEBAPI_DEBUG |
启用调试模式(设置为 'true') |
MCP工具
服务器内置了以下MCP工具:
工具名称 | 描述 |
---|---|
register_web_api |
将Web API注册为MCP工具,使其可以通过MCP协议直接调用。 |
set_default_headers |
设置适用于所有API请求的全局默认请求头。 |
list_registered_apis |
列出当前已注册的所有Web API及其配置。 |
unregister_api |
移除已注册的Web API工具。 |
load_api_from_file |
从指定文件加载API定义并注册为MCP工具。 |
load_apis_from_directory |
从指定目录加载所有API定义文件并注册为MCP工具。 |
load_from_config |
从配置文件加载API定义和设置。 |
API定义格式
可以使用JSON或Markdown格式定义API:
JSON格式
{
"name": "weather",
"description": "获取当前天气信息",
"url": "https://api.example.com/weather",
"method": "GET",
"parameters": {
"city": {
"type": "string",
"required": true, // 是否必填
"description": "城市名称"
},
"units": {
"type": "string",
"required": false,
"description": "温度单位 (celsius, fahrenheit)"
}
},
"headers": {
"X-API-Key": "your-api-key"
},
"resultPath": "data.current"
}
JSON格式字段说明
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
name |
字符串 | 是 | API工具的唯一名称,用于MCP调用 |
description |
字符串 | 是 | API功能的简要描述 |
url |
字符串 | 是 | API的完整URL地址,支持带参数的URL模板 |
method |
字符串 | 是 | HTTP请求方法(GET, POST, PUT, DELETE等) |
parameters |
对象 | 否 | API参数定义,每个参数包含type, required和description属性 |
headers |
对象 | 否 | 特定于此API的请求头(会与全局请求头合并) |
resultPath |
字符串 | 否 | 从响应中提取结果的路径,使用点表示法(如"data.items") |
bodyTemplate |
对象/字符串 | 否 | POST/PUT请求的请求体模板 |
responseType |
字符串 | 否 | 期望的响应类型(json, text, blob等) |
transform |
字符串 | 否 | 用于转换响应的JavaScript代码字符串 |
Markdown格式
# Weather API
获取当前天气信息
## URL
https://api.example.com/weather
## 方法
GET
## 参数
- city (string, required): 城市名称
- units (string, optional): 温度单位 (celsius, fahrenheit)
## 请求头
- X-API-Key: your-api-key
## 结果路径
data.current
Markdown格式规范
Markdown格式的API定义需遵循以下结构:
- 一级标题(#): API的名称,将用作MCP工具名称
- 描述: 标题下的文本作为API描述
- URL部分: 以
## URL
开头,下一行为API的完整URL - 方法部分: 以
## 方法
开头,下一行为HTTP方法(GET, POST等) - 参数部分(可选): 以
## 参数
开头,每个参数使用列表项格式- 格式:
参数名 (类型, required/optional): 描述
- 格式:
- 请求头部分(可选): 以
## 请求头
开头,每个请求头使用列表项格式- 格式:
请求头名: 值
- 格式:
- 结果路径部分(可选): 以
## 结果路径
开头,下一行为提取结果的路径 - 请求体模板(可选): 以
## 请求体
开头,后面是JSON格式的请求体模板 - 响应类型(可选): 以
## 响应类型
开头,指定期望的响应类型 - 转换函数(可选): 以
## 转换函数
开头,包含JavaScript转换代码
详细文档
- Web API转换为MCP工具 - 如何使用MCP工具注册和管理API
示例
查看API示例了解如何:
- 设置全局默认请求头
- 注册Web API
- 列出已注册的API
- 调用注册的API
- 移除API
导出的API
const webapi = require('webapi-mcp-server');
// 创建自定义服务器
const server = webapi.createServer({
debug: true,
configFile: './config.json',
apisDir: './apis'
});
// 使用其他导出函数
webapi.registerApi(apiDefinition);
webapi.unregisterApi('apiName');
webapi.getRegisteredApis();
webapi.loadApiFile('./path/to/api.json');
webapi.loadApisFromDirectory('./apis');
许可证
MIT