MTender MCP OCDS Server

MTender MCP OCDS Server

一个 MCP(模型上下文协议)服务器,通过 MTender API 提供对 🇲🇩 摩尔多瓦公共采购数据的访问。功能包括搜索招标、访问招标详情、预算信息和资金来源——所有这些都遵循开放合同数据标准 (OCDS)。

yoda-digital

研究与数据
访问服务器

README

MTender MCP OCDS 服务器

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

GitHub 仓库 版本 许可证 Node.js TypeScript MCP SDK 状态 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

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

使用 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 或带有 Cline 扩展的 VSCode)集成。

对于 Claude Desktop:

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

对于带有 Cline 的 VSCode:

  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. Fork GitHub 仓库
  2. 创建一个功能分支
  3. 进行更改
  4. 提交拉取请求

日志记录

服务器包含一个全面的日志记录系统,该系统将写入 logs/ 目录中的文件。 这对于调试和监视服务器的运行非常有用。

已知限制

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

示例查询

以下是一些示例查询,您可以在连接服务器后与 Claude 一起使用:

  • "Show me the latest tenders from MTender" (显示来自 MTender 的最新招标)
  • "Get details for tender ocds-b3wdp1-MD-1613996912600" (获取招标 ocds-b3wdp1-MD-1613996912600 的详细信息)
  • "Find budget information for ocds-b3wdp1-MD-1613996472664" (查找 ocds-b3wdp1-MD-1613996472664 的预算信息)
  • "What is the funding source for tender ocds-b3wdp1-MD-1613996912600?" (招标 ocds-b3wdp1-MD-1613996912600 的资金来源是什么?)
  • "Search for tenders from January 2023 to June 2023" (搜索从 2023 年 1 月到 2023 年 6 月的招标)
  • "Show me a summary of tender ocds-b3wdp1-MD-1613996912600" (显示招标 ocds-b3wdp1-MD-1613996912600 的摘要)
  • "Analyze tender ocds-b3wdp1-MD-1613996912600 and focus on the awards and contracts sections" (分析招标 ocds-b3wdp1-MD-1613996912600,重点关注授予和合同部分)
  • "Find tenders with a limit of 10 results" (查找限制为 10 个结果的招标)
  • "Analyze the tender documents for ocds-b3wdp1-MD-1613996912600" (分析 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

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

analyze_tender

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

fetch_tender_document

  • documentUrl (必需): 文档的 MTender 存储 URL (必须匹配模式: ^https://storage.mtender.gov.md/get/[\w-]+-\d+$)

许可证

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

保留所有权利。

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

有关更多详细信息,请参见 LICENCE.md 文件。

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python