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可用工具
list_available_dataframes():列出所有加载的数据集及其名称和描述。list_columns(dataframe_name: str):返回指定数据集的列名。get_schema(dataframe_name: str):返回数据集的架构(列名和数据类型)。get_distinct_column_values(dataframe_name: str, column_name: str, ...):从列中检索唯一值。fuzzy_search_column_values(dataframe_name: str, column_name: str, search_term: str, ...):在文本列中执行模糊匹配。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 120Claude桌面集成
编辑您的 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"
},贡献
欢迎投稿!请打开问题或提交拉取请求。
