mcpField
W
WebAPI MCP 服务器

WebAPI MCP 服务器

本地服务
github.com/yinzhouzhi开发工具579 周前更新

关于 WebAPI MCP 服务器

这是一个将传统 Web API 注册为 MCP 工具的服务器,适合需要让 Agent 调用现有业务接口的场景。它支持从 JSON、Markdown 文件或目录批量加载 API 定义,并管理默认请求头。

主要功能

  1. 01将 Web API 转为 MCP 工具
  2. 02运行时注册和移除 API
  3. 03批量导入 JSON 与 Markdown 定义
  4. 04设置全局默认请求头
  5. 05提取嵌套响应结果

适用场景

  1. 01让 Agent 调用现有业务 API
  2. 02从目录批量加载 API 定义
  3. 03通过默认请求头管理 API 请求权限

MCP 相关

该 MCP 服务提供 API 注册、移除、列表查询和批量加载等工具,并将已注册的 Web API 暴露给 MCP 客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"webapi": {
"command": "npx",
"args": [
"-y",
"@yinzhouzhi/webapi-mcp-server"
]
}
}
}
启动命令npx -y @yinzhouzhi/webapi-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@yinzhouzhi/webapi-mcp-server

工具

7

收录的工具列表 · 更新于 3 周前

参数类型必填说明
namestring是API名称
urlstring是API 端点 URL
methodenum否HTTP 方法GET | POST | PUT | DELETE | PATCH
descriptionstring否API 描述
parametersobject否API 参数定义
headersobject否API 专用请求头
resultPathstring否结果访问路径,例如 data.items

详细介绍

来自项目 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_DIRAPI定义目录的路径
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定义需遵循以下结构:

  1. 一级标题(#): API的名称,将用作MCP工具名称
  2. 描述: 标题下的文本作为API描述
  3. URL部分: 以## URL开头,下一行为API的完整URL
  4. 方法部分: 以## 方法开头,下一行为HTTP方法(GET, POST等)
  5. 参数部分(可选): 以## 参数开头,每个参数使用列表项格式
    • 格式: 参数名 (类型, required/optional): 描述
  6. 请求头部分(可选): 以## 请求头开头,每个请求头使用列表项格式
    • 格式: 请求头名: 值
  7. 结果路径部分(可选): 以## 结果路径开头,下一行为提取结果的路径
  8. 请求体模板(可选): 以## 请求体开头,后面是JSON格式的请求体模板
  9. 响应类型(可选): 以## 响应类型开头,指定期望的响应类型
  10. 转换函数(可选): 以## 转换函数开头,包含JavaScript转换代码

详细文档

示例

查看API示例了解如何:

  1. 设置全局默认请求头
  2. 注册Web API
  3. 列出已注册的API
  4. 调用注册的API
  5. 移除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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。