mcpField
M
MCP API Server

MCP API Server

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

关于 MCP API Server

这是一个基于 TypeScript 的微服务 API 服务端,支持 MCP 协议扩展。它依据 OpenAPI 规范发现端点并动态注册工具,且可用允许列表控制暴露的 API。

主要功能

  1. 01从 OpenAPI 发现 API 端点
  2. 02动态注册 MCP 工具
  3. 03按允许列表筛选端点
  4. 04转换参数并生成输入模式
  5. 05缓存规范数据并处理错误

适用场景

  1. 01将选定 API 端点提供给 MCP 客户端
  2. 02依据 OpenAPI 自动生成工具定义

MCP 相关

服务端通过 MCP 暴露由 OpenAPI 端点生成的工具,并支持资源访问。配置中的允许列表用于控制哪些 API 端点可供客户端使用。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

来自项目 README

MCP API Server

Node.js Version TypeScript

企业级微服务API服务端,支持MCP协议扩展。

✨ 功能特性

  • MCP协议集成(支持工具扩展和资源访问)
  • 动态API工具注册
  • TypeScript强类型支持

🚀 快速开始

前置要求
  • Node.js 18+
  • npm 9+
  • TypeScript 5.0+
安装步骤
# 克隆仓库
git clone https://github.com/your-repo/mcp-api-server.git

# 安装依赖
npm install

# 生产环境构建
npm run build

MCP 配置参数
{
  "mcpServers": {
    "api-server": {
      "command": "node",
      "args": [
        "D:/api-server/build/index.js"
      ],
      "env": {
        "BASE_URL": "https://127.0.0.0:8080",
        "CLIENT_ID": "xxx",
        "CLIENT_SECRET": "xxx",
        "USERNAME": "xxx",
        "PASSWORD": "xxx",
        "TENANT_ID": "1",
        "REJECT_UNAUTHORIZED": "false",
        "ALLOWED_APIS": "/admin-api/system/user/page,/admin-api/system/user/create,/admin-api/system/user/update"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
配置说明

在 mcpServers 中配置 ALLOWED_APIS 数组来控制哪些API端点可以作为MCP工具暴露:

alt text

📂 项目结构

mcp-api-server/
├── build/          # 编译输出目录
├── src/            # 源代码
│   ├── config/     # 配置模块
│   ├── modules/    # 业务模块
│   └── tools/      # MCP工具协议
├── package.json
└── tsconfig.json

📡 MCP Tools

动态API工具系统

MCP-Server 实现了基于 OpenAPI 规范的动态工具发现和注册机制,无需手动配置即可自动生成 MCP 工具。

apiEndpoints.ts 功能说明
// 从OpenAPI规范自动获取API端点信息
const openApiData = await fetchOpenApiData();

// 根据配置的允许列表过滤API
const API_ENDPOINTS = Object.entries(openApiData.paths)
    .filter(([path]) => config.ALLOWED_APIS.includes(path))
    .map(([path, methods]) => {
        // 转换为标准工具格式
        return Object.entries(methods).map(([method, details]) => ({
            name: details.operationId,
            description: details.summary,
            inputSchema: details.parameters ? {
                type: 'object',
                properties: Object.fromEntries(details.parameters
                    .filter(isExposableParameter)
                    .map(transformParameterToProperty)
                )
            } : {},
            path: path,
            method: method.toUpperCase()
        }));
    }).flat();
tools/index.ts 工具注册机制
export function registerTools(server: Server) {
  // 注册可用工具列表
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
    tools: tools,
  }));

  // 处理工具调用请求
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
    const endpoint = apiMap[request.params.name];
    
    // 根据HTTP方法类型动态处理请求
    if(endpoint.method === 'GET') {
      const response = await apiClient.get(endpoint.path, { params: request.params.arguments });
      return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }] };
    } else if(endpoint.method === 'POST') {
      const response = await apiClient.post(endpoint.path, request.params.arguments);
      return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }] };
    } else if(endpoint.method === 'PUT') {
      const response = await apiClient.put(endpoint.path, request.params.arguments);
      return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }] };
    }
  });
}
系统优势
  • 自动发现: 通过 OpenAPI 规范自动发现和注册API端点
  • 缓存机制: 实现了API规范数据的缓存,提高性能并处理网络异常
  • 参数转换: 自动将OpenAPI参数定义转换为MCP工具输入模式
  • 安全过滤: 过滤内部参数,只暴露安全的API参数
  • 错误处理: 完善的错误处理机制,确保工具调用稳定性
  • 工具注册: 自动注册可用工具列表,无需手动配置

🤝 贡献指南

  1. Fork项目仓库
  2. 创建特性分支 (git checkout -b feature/your-feature)
  3. 提交修改 (git commit -m 'Add some feature')
  4. 推送分支 (git push origin feature/your-feature)
  5. 创建Pull Request

📄 许可证

MIT License

评论

支持 Markdown

第一次接触 MCP?

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

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