关于 MCP API Server
这是一个基于 TypeScript 的微服务 API 服务端,支持 MCP 协议扩展。它依据 OpenAPI 规范发现端点并动态注册工具,且可用允许列表控制暴露的 API。
主要功能
- 01从 OpenAPI 发现 API 端点
- 02动态注册 MCP 工具
- 03按允许列表筛选端点
- 04转换参数并生成输入模式
- 05缓存规范数据并处理错误
适用场景
- 01将选定 API 端点提供给 MCP 客户端
- 02依据 OpenAPI 自动生成工具定义
MCP 相关
服务端通过 MCP 暴露由 OpenAPI 端点生成的工具,并支持资源访问。配置中的允许列表用于控制哪些 API 端点可供客户端使用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
来自项目 READMEMCP API Server
企业级微服务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工具暴露:

📂 项目结构
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参数
- 错误处理: 完善的错误处理机制,确保工具调用稳定性
- 工具注册: 自动注册可用工具列表,无需手动配置
🤝 贡献指南
- Fork项目仓库
- 创建特性分支 (
git checkout -b feature/your-feature) - 提交修改 (
git commit -m 'Add some feature') - 推送分支 (
git push origin feature/your-feature) - 创建Pull Request
📄 许可证
MIT License
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。