公共采购数据分析服务

该MCP服务器用于分析瑞典公共采购数据,提供数据集发现、模式检查、复杂聚合和模糊搜索功能。

  • by aerugo
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aerugo/upphandlat-mcp

使用说明

MCP服务器

瑞典采购局的采购数据

该MCP服务器旨在分析瑞典的公共采购数据。它提供了从瑞典国家采购局(Upphandlingsmydheten)获取有关采购数量、价值和供应商详细信息的途径。

它利用Polars进行高性能数据操作,并通过模型上下文协议(MCP)公开其功能。

概述

此MCP服务器允许LLM:

  • 发现与瑞典公共采购相关的可用数据集。
  • 检查这些数据集的架构和列名。
  • 对数据执行复杂的聚合、分组、过滤和计算。
  • 在文本列中进行模糊搜索以查找相关信息。

特性

  • 在服务器启动时从指定的URL加载多个CSV数据集。
  • 显示CSV架构和列信息。
  • 提供强大的聚合功能,包括:
    • 按多列分组。
    • 应用多个聚合函数(求和、均值、计数、最小值、最大值)。
    • 基于算术运算或百分比定义和应用计算字段。
    • 在聚合之前根据各种条件过滤数据。
    • 在聚合结果中添加可配置的摘要行。

配置

数据源和服务器标识在中配置 csv_sources.yaml 位于项目根目录中。此文件定义:

  • toolbox_title:此MCP服务器实例的主标题。
  • toolbox_description:服务器用途的一般描述。
  • sources:CSV数据源列表,每个数据源具有:
    • name:数据集的唯一标识符。
    • url:下载CSV的URL。
    • description:数据集内容的描述。
    • read_csv_options:特定Polar read_csv 参数(例如分隔符、schemaoverride)。

不 .env 如果满足以下条件,则基本操作严格需要文件 csv_sources.yaml 存在,但如果需要,它可以用于其他Pydantic设置(例如,用于其他服务的API密钥,但不直接由该服务器使用)。

示例 csv_sources.yaml 代码片段:

toolbox_title: "Upphandlingsdata från Sveriges Upphandlingsmyndighet"
toolbox_description: "Verktyg för att analysera data om offentliga upphandlingar i Sverige..."
sources:
  - name: "upphandlingsmyndigheten_antal_upphandlingar"
    url: "https://catalog.upphandlingsmyndigheten.se/store/12/resource/128"
    description: "Totalt antal upphandlingar per år och sektor."
    read_csv_options:
      separator: ";"
      # ... other options

可用工具

  1. list_available_dataframes():列出所有加载的数据集及其名称和描述。
  2. list_columns(dataframe_name: str):返回指定数据集的列名。
  3. get_schema(dataframe_name: str):返回数据集的架构(列名和数据类型)。
  4. get_distinct_column_values(dataframe_name: str, column_name: str, ...):从列中检索唯一值。
  5. fuzzy_search_column_values(dataframe_name: str, column_name: str, search_term: str, ...):在文本列中执行模糊匹配。
  6. aggregate_data(dataframe_name: str, request: AggregationRequest):用于从数据中过滤、分组、聚合和计算新字段的主要工具。

安装

建议使用虚拟环境。

python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install -e .

这将以可编辑模式安装软件包。

在当地发展

确保您的 csv_sources.yaml 文件在项目根目录中配置。

在本地启动服务器:

uv run mcp dev src/upphandlat_mcp/server.py

或者,如果 uv 不管理 mcp 工具本身:

mcp dev src/upphandlat_mcp/server.py

然后,您可以使用 MCP检查员 (通常在 http://localhost:5173 如果你单独运行它)来测试和调试你的MCP服务器。

为了实现更稳健的启动,特别是在数据加载缓慢的情况下,您可能需要增加生命周期超时:

uv run python -m mcp serve src/upphandlat_mcp/server.py:mcp --lifespan-timeout 120

Claude桌面集成

编辑您的 claude_desktop_config.json 添加此MCP服务器。采用这种方法,您需要在全球范围内安装Astral UV。

替换 [path to repo] 使用本地存储库目录的绝对路径:

    "UpphandlatMCP": {
      "args": [
        "--directory",
        "[path to repo]", // Example: "/Users/yourname/projects/upphandlat-mcp"
        "run",
        "python", "-m", "mcp", "run", "src/upphandlat_mcp/server.py:mcp", "--transport", "stdio"
      ],
      "command": "uv"
    },

贡献

欢迎投稿!请打开问题或提交拉取请求。