返回市场
MCP-多投标服务器

MCP-多投标服务器

作者:yoda-digital2 星标更新:2025-03-12

项目介绍

MTender MCP OCDS Server

这是一个通过MTender API访问摩尔多瓦公共采购数据的MCP(模型上下文协议)服务器。

GitHub Repository Version License Node.js TypeScript MCP SDK Status Docker

概述

此服务器提供了对摩尔多瓦公共采购系统MTender的访问,该系统实现了开放合同数据标准(OCDS)。它允许AI助手搜索招标信息,访问招标详情、预算信息、资金来源,并分析招标文件。

代码结构

服务器采用模块化结构以提高可维护性:

mtender-server/
├── src/
│   ├── index.ts                  # 主入口点
│   ├── api/
│   │   └── mtender-client.ts     # 使用axios的MTender API客户端
│   ├── handlers/
│   │   ├── resources.ts          # 资源处理器
│   │   ├── tools.ts              # 工具处理器
│   │   └── utils.ts              # 共享处理器工具
│   └── utils/
│       └── logger.ts             # 日志工具
├── build/                        # 编译后的JavaScript
├── logs/                         # 日志文件
├── Dockerfile                    # Docker配置
├── docker-compose.yml           # Docker Compose配置
└── .dockerignore                # Docker忽略文件

这种模块化结构使得代码更容易维护、理解和扩展。

OCDS模式覆盖

此MCP服务器提供了对MTender API的全面访问,该API实现了开放合同数据标准。以下是OCDS模式的覆盖情况:

OCDS 组件支持级别备注
发布包✅ 完整通过直接API访问支持
记录✅ 完整通过直接API访问支持
规划部分✅ 完整通过预算端点访问
招标部分✅ 完整核心招标数据完全支持
中标部分✅ 完整包含在招标响应中
合同部分✅ 完整包含在招标响应中
实施部分⚠️ 部分受限于MTender API能力
组织/方✅ 完整包含在所有响应中
项目✅ 完整包含在招标、中标、合同部分中
价值✅ 完整带有货币信息的金额值
时间段✅ 完整各个流程阶段的日期范围
文档✅ 完整文档引用和内容提取
里程碑✅ 完整进程里程碑包含在响应中
交易⚠️ 部分受限于MTender API能力
修正案✅ 完整对进程的更改进行跟踪
相关流程✅ 完整相关合同流程之间的链接

服务器提供了一个完整的接口来访问MTender API中的所有数据,在底层API的限制下,使其成为一个完整的OCDS客户端。

关于部分支持的说明:实施部分和交易被标记为部分支持,因为摩尔多瓦的MTender系统当前不包括合同过程实施阶段的数据。MTender API仅涵盖四个阶段:规划、招标、中标和合同,但不包括合同实施数据。这是底层API的限制,而不是这个MCP服务器的限制。

功能

资源

  • 最新招标:访问MTender系统中最新的招标
  • 按OCID的招标:通过开放合同ID(OCID)访问详细的招标数据
  • 按OCID的预算:通过开放合同ID(OCID)访问预算数据
  • 按OCID的资金来源:通过开放合同ID(OCID)访问资金来源数据

工具

  • search_tenders:在MTender系统中搜索招标,具有分页和过滤选项
  • get_tender:获取特定招标的详细信息,具有格式选项
  • get_budget:获取特定招标的预算信息,具有格式选项
  • get_funding_source:获取特定招标的资金来源信息,具有格式选项
  • analyze_tender:根据OCDS模式分析招标并提取关键信息
  • fetch_tender_document:获取并分析招标文件(PDF、DOC、DOCX),供AI/LLM分析

安装

从GitHub

你可以直接从GitHub克隆仓库:

git clone https://github.com/yoda-digital/mcp-mtender-server.git
cd mcp-mtender-server
npm install
npm run build

手动安装

  1. 克隆此仓库
  2. 安装依赖项:
    npm install
    
  3. 构建服务器:
    npm run build
    
  4. (可选)使服务器全局可用:
    npm link
    

Docker设置

MTender OCDS服务器可以在Docker容器中运行,这提供了一个隔离且一致的环境。

构建Docker镜像

要构建Docker镜像:

cd mtender-server
docker build -t mtender-mcp-server .

使用Docker运行

要使用Docker运行服务器:

docker run -v $(pwd)/logs:/app/logs mtender-mcp-server

此命令将本地日志目录挂载到容器的日志目录,确保日志在主机上持久保存。

使用Docker Compose

为了更方便地设置,可以使用Docker Compose:

cd mtender-server
docker-compose up -d

这将构建镜像(如果不存在的话)并在分离模式下启动容器。

要停止容器:

docker-compose down

Docker配置

Docker设置包括:

  • 多阶段构建以减小镜像大小
  • 基于Alpine的Node.js镜像以减少占用空间
  • 生产优化的依赖项
  • 挂载卷以持久保存日志
  • 环境变量配置

使用

运行服务器

node build/index.js

或者如果你已全局链接:

mtender-server

测试

有几种方法可以测试服务器:

直接测试MTender API

simple-test.js脚本直接测试MTender API而不使用MCP服务器:

node simple-test.js

这对于理解API结构和验证API是否可访问非常有用。

测试MCP服务器

mcp-test.js脚本演示如何编程使用服务器:

node mcp-test.js

此脚本展示了如何:

  • 连接到服务器
  • 列出可用的资源模板和资源
  • 列出可用的工具
  • 搜索招标
  • 获取招标详情
  • 获取并分析招标文件

使用MCP Inspector进行交互式测试

MCP Inspector是一个用于交互式测试MCP服务器的工具:

npm run inspector

这将启动连接到此服务器的MCP Inspector,允许您通过Web界面测试资源和工具。

与MCP客户端集成

提供了一个配置模板文件(mcp-config-template.json),帮助你将此服务器与MCP客户端如Claude Desktop或VSCode与Cline扩展集成。

对于Claude Desktop:

  1. 编辑~/Library/Application Support/Claude/claude_desktop_config.json(在macOS上)或操作系统上的等效路径。
  2. 将模板中的配置添加到配置文件中的mcpServers对象中(用实际服务器路径替换/path/to/mtender-server)。
  3. 重启Claude Desktop。

对于VSCode与Cline:

  1. 编辑/home/user/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json(Linux上的参考示例)或操作系统上的等效路径。
  2. 将模板中的配置添加到配置文件中的mcpServers对象中(用实际服务器路径替换/path/to/mtender-server)。
  3. 重启VSCode。

一旦集成,你就可以通过自然语言查询在你的MCP客户端中访问MTender数据。

开发

添加新功能

模块化结构使得添加新功能变得容易:

  1. 对于新资源,更新handlers/resources.ts文件
  2. 对于新工具,更新handlers/tools.ts文件
  3. 对于API客户端更改,修改api/mtender-client.ts文件
  4. 对于日志改进,更新utils/logger.ts文件

贡献

欢迎对MTender OCDS服务器进行贡献!你可以通过以下方式贡献:

  1. 分叉GitHub仓库
  2. 创建一个特性分支
  3. 进行你的更改
  4. 提交拉取请求

日志

服务器包含一个全面的日志系统,将日志写入logs/目录。这对于调试和监控服务器的操作非常有用。

已知限制

  • 资源超时:当直接访问资源时,由于处理大量数据,可能会遇到超时问题。这尤其适用于mtender://latest-tenders资源。工具功能(search_tendersget_tender等)工作可靠,是推荐的数据访问方式。

示例查询

这里有一些示例查询,你可以在连接服务器后使用Claude:

  • "显示MTender的最新招标"
  • "获取招标ocds-b3wdp1-MD-1613996912600的详情"
  • "查找预算信息ocds-b3wdp1-MD-1613996472664"
  • "招标ocds-b3wdp1-MD-1613996912600的资金来源是什么?"
  • "搜索2023年1月至2023年6月的招标"
  • "显示招标ocds-b3wdp1-MD-1613996912600的概要"
  • "分析招标ocds-b3wdp1-MD-1613996912600,重点关注中标和合同部分"
  • "查找招标,结果限制为10条"
  • "分析招标ocds-b3wdp1-MD-1613996912600的文件"

API参考

资源URI

  • mtender://latest-tenders - 最近的招标列表
  • mtender://tender/{ocid} - 通过OCID获取的招标详情
  • mtender://budget/{ocid} - 通过OCID获取的预算详情
  • mtender://funding/{ocid} - 通过OCID获取的资金来源详情

工具参数

search_tenders

  • offset(可选):分页偏移量(ISO日期字符串)
  • limit(可选):返回的最大结果数
  • dateFrom(可选):从这个日期筛选招标(ISO日期字符串)
  • dateTo(可选):直到这个日期筛选招标(ISO日期字符串)

get_tender

  • ocid(必需):招标的开放合同ID(OCID)
  • format(可选):响应格式:'full'表示完整数据,'summary'表示关键信息

get_budget

  • ocid(必需):预算的开放合同ID(OCID)
  • format(可选):响应格式:'full'表示完整数据,'summary'表示关键信息

get_funding_source

  • oc_ id(必需):招标的开放合同ID(OCID)
  • format(可选):响应格式:'full'表示完整数据,'summary'表示关键信息

analyze_tender

  • ocid(必需):招标的开放合同ID(OCID)
  • sections(可选):要分析的OCDS部分(数组:"planning","tender","awards","contracts","implementation")

fetch_tender_document

许可证

版权所有 2025 Ion Nalyk Calmis (Yoda.Digital)

保留所有权利。

仅授予个人和非商业用途使用和分发此软件的许可。 未经作者明确许可,禁止修改、重新分发和商业使用。

更多细节,请参阅LICENCE.md文件。