这是一个通过MTender API访问摩尔多瓦公共采购数据的MCP(模型上下文协议)服务器。
此服务器提供了对摩尔多瓦公共采购系统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忽略文件
这种模块化结构使得代码更容易维护、理解和扩展。
此MCP服务器提供了对MTender API的全面访问,该API实现了开放合同数据标准。以下是OCDS模式的覆盖情况:
| OCDS 组件 | 支持级别 | 备注 |
|---|---|---|
| 发布包 | ✅ 完整 | 通过直接API访问支持 |
| 记录 | ✅ 完整 | 通过直接API访问支持 |
| 规划部分 | ✅ 完整 | 通过预算端点访问 |
| 招标部分 | ✅ 完整 | 核心招标数据完全支持 |
| 中标部分 | ✅ 完整 | 包含在招标响应中 |
| 合同部分 | ✅ 完整 | 包含在招标响应中 |
| 实施部分 | ⚠️ 部分 | 受限于MTender API能力 |
| 组织/方 | ✅ 完整 | 包含在所有响应中 |
| 项目 | ✅ 完整 | 包含在招标、中标、合同部分中 |
| 价值 | ✅ 完整 | 带有货币信息的金额值 |
| 时间段 | ✅ 完整 | 各个流程阶段的日期范围 |
| 文档 | ✅ 完整 | 文档引用和内容提取 |
| 里程碑 | ✅ 完整 | 进程里程碑包含在响应中 |
| 交易 | ⚠️ 部分 | 受限于MTender API能力 |
| 修正案 | ✅ 完整 | 对进程的更改进行跟踪 |
| 相关流程 | ✅ 完整 | 相关合同流程之间的链接 |
服务器提供了一个完整的接口来访问MTender API中的所有数据,在底层API的限制下,使其成为一个完整的OCDS客户端。
关于部分支持的说明:实施部分和交易被标记为部分支持,因为摩尔多瓦的MTender系统当前不包括合同过程实施阶段的数据。MTender API仅涵盖四个阶段:规划、招标、中标和合同,但不包括合同实施数据。这是底层API的限制,而不是这个MCP服务器的限制。
你可以直接从GitHub克隆仓库:
git clone https://github.com/yoda-digital/mcp-mtender-server.git
cd mcp-mtender-server
npm install
npm run build
npm install
npm run build
npm link
MTender OCDS服务器可以在Docker容器中运行,这提供了一个隔离且一致的环境。
要构建Docker镜像:
cd mtender-server
docker build -t mtender-mcp-server .
要使用Docker运行服务器:
docker run -v $(pwd)/logs:/app/logs mtender-mcp-server
此命令将本地日志目录挂载到容器的日志目录,确保日志在主机上持久保存。
为了更方便地设置,可以使用Docker Compose:
cd mtender-server
docker-compose up -d
这将构建镜像(如果不存在的话)并在分离模式下启动容器。
要停止容器:
docker-compose down
Docker设置包括:
node build/index.js
或者如果你已全局链接:
mtender-server
有几种方法可以测试服务器:
simple-test.js脚本直接测试MTender API而不使用MCP服务器:
node simple-test.js
这对于理解API结构和验证API是否可访问非常有用。
mcp-test.js脚本演示如何编程使用服务器:
node mcp-test.js
此脚本展示了如何:
MCP Inspector是一个用于交互式测试MCP服务器的工具:
npm run inspector
这将启动连接到此服务器的MCP Inspector,允许您通过Web界面测试资源和工具。
提供了一个配置模板文件(mcp-config-template.json),帮助你将此服务器与MCP客户端如Claude Desktop或VSCode与Cline扩展集成。
~/Library/Application Support/Claude/claude_desktop_config.json(在macOS上)或操作系统上的等效路径。mcpServers对象中(用实际服务器路径替换/path/to/mtender-server)。/home/user/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json(Linux上的参考示例)或操作系统上的等效路径。mcpServers对象中(用实际服务器路径替换/path/to/mtender-server)。一旦集成,你就可以通过自然语言查询在你的MCP客户端中访问MTender数据。
模块化结构使得添加新功能变得容易:
handlers/resources.ts文件handlers/tools.ts文件api/mtender-client.ts文件utils/logger.ts文件欢迎对MTender OCDS服务器进行贡献!你可以通过以下方式贡献:
服务器包含一个全面的日志系统,将日志写入logs/目录。这对于调试和监控服务器的操作非常有用。
mtender://latest-tenders资源。工具功能(search_tenders,get_tender等)工作可靠,是推荐的数据访问方式。这里有一些示例查询,你可以在连接服务器后使用Claude:
mtender://latest-tenders - 最近的招标列表mtender://tender/{ocid} - 通过OCID获取的招标详情mtender://budget/{ocid} - 通过OCID获取的预算详情mtender://funding/{ocid} - 通过OCID获取的资金来源详情offset(可选):分页偏移量(ISO日期字符串)limit(可选):返回的最大结果数dateFrom(可选):从这个日期筛选招标(ISO日期字符串)dateTo(可选):直到这个日期筛选招标(ISO日期字符串)ocid(必需):招标的开放合同ID(OCID)format(可选):响应格式:'full'表示完整数据,'summary'表示关键信息ocid(必需):预算的开放合同ID(OCID)format(可选):响应格式:'full'表示完整数据,'summary'表示关键信息oc_ id(必需):招标的开放合同ID(OCID)format(可选):响应格式:'full'表示完整数据,'summary'表示关键信息ocid(必需):招标的开放合同ID(OCID)sections(可选):要分析的OCDS部分(数组:"planning","tender","awards","contracts","implementation")documentUrl(必需):MTender存储的文档URL(必须匹配模式:^https://storage\.mtender\.gov\.md/get/[\w-]+-\d+$)版权所有 2025 Ion Nalyk Calmis (Yoda.Digital)
保留所有权利。
仅授予个人和非商业用途使用和分发此软件的许可。 未经作者明确许可,禁止修改、重新分发和商业使用。
更多细节,请参阅LICENCE.md文件。