本地数据MCP服务器

LocalData MCP Server 是一个为LLM代理提供本地和远程数据访问的工具,支持多种数据库和文件格式,包含数据分析与建模功能。

  • by ChrisGVE
  • Python
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 ChrisGVE/localdata-mcp

使用说明

本地数据MCP服务器

LocalData MCP使LLM代理能够访问本地和远程数据——数据库、文件、图形和结构化文档——以及用于分析和建模的完整数据科学工具包。它公开了13种数据库类型和20多种文件格式的70个MCP工具,并具有内存限制流,因此代理可以在不超过可用RAM的情况下在大型数据集上安全工作。

快速开始

# Install permanently
uv tool install localdata-mcp

# Or run directly without installing
uvx localdata-mcp

首次运行注意事项: 数据科学依赖项(scipy、scikit-learn、statsmodels、geopandas)总计约200 MB,首次使用时即可下载。随后开始重用缓存。如果您的MCP客户端在第一次启动时超时,请重新连接——下一次启动将立即进行。

添加到MCP客户端配置中:

{
  "mcpServers": {
    "localdata": {
      "command": "localdata-mcp"
    }
  }
}

对于 uvx (无永久安装):

{
  "mcpServers": {
    "localdata": {
      "command": "uvx",
      "args": ["localdata-mcp"]
    }
  }
}

然后连接到任何支持的源并开始查询:

connect_database("sales", "postgresql", "postgresql://user:pass@localhost/db")
execute_query("sales", "SELECT product, SUM(amount) FROM orders GROUP BY product")

connect_database("records", "csv", "./records.csv")
analyze_hypothesis_test("records", "SELECT amount, region FROM data_table", column="amount", group_column="region")

一个表文件——CSV、TSV、JSON、XML、INI、Parquet、Feather、Arrow——是 加载到一个名为的表中 data_table不管这种连接叫什么。跑 describe_database(name) 连接后,如果您不确定来源 暴露;多表电子表格和数据库保留自己的表名。

功能概述

核心数据库(8个工具)

连接、查询和检查数据库和文件。所有查询都在可配置的内存限制(默认为2 GB)内执行,并对大型结果集进行自动分块流式处理。

工具 说明
connect_database 打开与任何受支持的数据库或文件的连接
disconnect_database 关闭连接
list_databases 列出活动连接
execute_query 使用流式、分块和飞行前模式运行SQL
describe_database 显示架构和表列表
describe_table 列类型、索引、行数
find_table 在所有活动连接中查找表
analyze_query_preview 执行前估算查询成本

流媒体和内存(9个工具)

工具 说明
next_chunk 检索流式结果的下一块
request_data_chunk 按行范围获取特定块
request_multiple_chunks 在一次调用中批量获取多个块
manage_memory_bounds 查看和配置内存限制
get_streaming_status 检查活动流和缓冲区使用情况
clear_streaming_buffer 从特定缓冲区释放内存
get_query_metadata 已完成查询的丰富元数据
cancel_query_operation 取消正在运行或缓冲的查询
get_data_quality_report 列统计、空率和质量指标

树/结构化数据(10个工具)

将TOML、JSON和YAML文件作为可导航树进行导航和编辑。支持完整的CRUD操作,自动创建祖先节点,并往返导出到任何支持的格式。

工具 说明
get_node / get_children 浏览树
set_node / delete_node 创建或删除节点
get_value / set_value / delete_key 读写属性
list_keys 列出节点上的键值对
move_node 在树中重新定位节点
export_structured 导出为TOML、JSON、YAML或Markdown

图表(7个工具)

使用DOT、GML、GraphML和Mermaid文件作为定向多重图。支持节点和边上的完整CRUD、最短路径和所有路径查询、结构统计和多格式导出。

工具 说明
get_neighbors / get_edges 从节点遍历
add_edge / remove_edge 管理边缘
find_path 两个节点之间的最短路径或所有路径
get_graph_stats 节点/边计数、密度、DAG验证
export_graph 导出为DOT、GML、GraphML、Mermaid或Markdown

节点级操作重用上述树工具: get_node, set_node, delete_node, list_keys, get_value, set_value,以及 delete_key 检测图连接并处理它们 path 参数作为节点ID。 get_children 和 move_node 只有树。

搜索和转换(2个工具)

工具 说明
search_data 在查询结果中搜索正则表达式
transform_data 将列转换应用于结果集

模式和审计(3个工具)

工具 说明
export_schema 将模式导出为JSON模式、Python数据类、TypeScript接口或SQL DDL
get_query_log 最近的查询执行历史
get_error_log 最近的错误日志

系统(2个工具)

工具 说明
check_compatibility 验证API向后兼容性
get_metrics Prometheus度量文本。仅在启用指标收集时注册,这是默认设置

数据科学(12种工具)

直接对来自任何连接源的查询结果运行统计分析、建模和模式检测。

工具 域
analyze_hypothesis_test 统计分析
analyze_anova 统计分析
analyze_effect_sizes 统计分析
analyze_regression 回归与建模
evaluate_model_performance 回归与建模
analyze_clusters 模式识别
detect_anomalies 模式识别
reduce_dimensions 模式识别
analyze_time_series 时间序列
forecast_time_series 时间序列
analyze_rfm 商业智能
analyze_ab_test 商业智能

支持的数据源

数据库

类型 发动机
SQL SQLite、PostgreSQL、MySQL
SQL(分析) DuckDB(pip install duckdb duckdb-engine)
SQL(企业) Oracle、MS SQL Server(pip install localdata-mcp[enterprise])
文档 MongoDB、CouchDB(pip install localdata-mcp[modern-databases])
键值 Redis(pip install localdata-mcp[modern-databases])
搜索 Elasticsearch(pip install localdata-mcp[modern-databases])
时间序列 InfluxDB(pip install localdata-mcp[modern-databases])
图表 Neo4j(pip install localdata-mcp[modern-databases])
RDF/SPARQL Turtle(.ttl)、N-Triples(.nt)、远程SPARQL端点

文件格式

类别 格式
表格 CSV、TSV
结构化 JSON、YAML、TOML、XML、INI
电子表格 Excel(.xlsx、.xls)、LibreOffice Calc(.ods)、苹果数字(.Numbers)
分析 拼花地板、羽毛、箭、HDF5
图 DOT(Graphviz)、GML、GraphML、美人鱼
RDF 海龟(.ttl),N-三元组(.nt)

支持多表电子表格:每个表格都成为一个单独的可查询表。要只加载一张工作表,请将其名称作为第四个参数传递给 connect_database — connect_database("q1", "excel", "./report.xlsx", "Q1 Results").使用 "excel" 对两者 .xlsx 和 .xls; "xlsx" 不是连接类型。

数据科学领域

统计分析 --t检验、卡方检验、Mann-Whitney检验、Kruskal-Wallis检验和相关假设检验;单因素方差分析与事后检验;Cohen的d、η平方和其他效应大小度量。

回归与建模 --线性、多项式、logistic、岭、lasso和弹性网络回归;使用R²、RMSE、MAE和分类度量进行模型评估;自动特征选择。

模式识别 --K-means、DBSCAN和层次聚类;通过隔离林、LOF和单类SVM进行异常检测;使用PCA、t-SNE和UMAP进行降维。

时间序列 --分解、平稳性检验、自相关分析;ARIMA和ETS预测;变化点检测;VAR、Granger因果关系和协整检验的多元分析。 forecast_time_series 接受 method="arima" 或 method="ets"域包中的SARIMA和集成模型无法通过MCP工具访问。

商业智能 --A/B测试统计分析;RFM客户细分;队列分析、CLV建模和漏斗分析。

地理空间 --距离和坐标计算、空间连接、插值和网络分析。

优化 --线性规划、约束优化、分配问题和网络优化。

抽样和估计 --引导置信区间、贝叶斯估计、蒙特卡洛模拟和分层抽样。

Claude代码插件

该存储库兼作Claude Code插件。其清单(.claude-plugin/plugin.json)注册 localdata MCP服务器通过 uvx localdata-mcp 并运送了18项技能和11名代理来驱动上述工具。看 插件页面 了解如何安装它以及如何调用技能。

从2.0.0升级: graph-explore 现在是 graph-data-explore 和 graph-analyst 现在是 graph-data-analyst,每种技能都会使目录更深。默默地呼唤一个旧名字什么也不做—— 更新日志 列出了步骤。

技能按领域分组 skills/:

组 技能
exploration/ explore-data, data-quality, find-reference-data
statistical/ hypothesis-test, ab-test, analyze-correlations, sampling-estimation
modeling/ regression, cluster-analysis, anomaly-detection, dimensionality-reduction, forecast, geospatial, optimization
graph-data/ graph-data-explore
workflow/ data-pipeline, research-pipeline, process-control

代理商在 agents/ 进行跨越多种工具的较长分析:

代理 范围
data-explorer 分析不熟悉的数据集,并报告模式、质量和候选分析
data-scientist 当正确的方法不明显时,跨域组合多步管道
statistical-analyst 假设检验、方差分析、效应大小、抽样设计、自举估计
ml-analyst 聚类、异常检测、降维、回归建模
forecaster 分解、平稳性测试、ARIMA/ETS选择、具有不确定性边界的预测
bi-analyst A/B测试、队列分析、CLV、归因、漏斗
graph-data-analyst 中心性、社区检测、路径查找、图形导出
geospatial-analyst 坐标系、距离、空间聚类、可达性
operations-analyst 统计过程控制、优化、产能规划
research-analyst 功率分析、假设文件、可重复报告
data-researcher 查找并准备公共参考数据集以丰富您的数据

建筑学

  • 一个统一的呼叫形状 --每个分析工具都有一个连接名称、一个SQL查询和它应该处理的列名。没有单独的加载步骤和数据帧参数:查询是数据选择,因此相同的调用适用于CSV文件和PostgreSQL表
  • 命名方法,合理的默认值 --统计程序是按名称选择的(method="dbscan", test_type="ttest_ind")每个方法参数都有一个默认值,因此只命名列的调用仍然会运行。阈值,例如 alpha 和 contamination 是数值参数,不是从意图推断出来的
  • 流式传输首次执行 --查询结果被分块和缓冲,而不是整体物化。 execute_query 返回第一个块加上a query_id,以及 next_chunk 遍历其余部分,因此大于配置的内存上限(默认2GB)的结果仍然可行
  • 自描述查询结果 — execute_query 返回行数、内存状态、数据质量信号,并准备运行 next_chunk 在行旁边打电话,这样代理就可以决定下一步做什么,而无需第二次往返

配置

LocalData MCP从YAML配置文件、环境变量或两者中读取设置;环境变量获胜。默认值适用于大多数情况。最常更改的变量:

变量 默认值 描述
LOCALDATA_MEMORY_LIMIT_MB 2048 查询结果的内存上限(MB)
LOCALDATA_CONNECTIONS_MAX_CONCURRENT 10 最大并发数据库连接数
LOCALDATA_QUERY_CHUNK_SIZE 100 每个流块的行数
LOCALDATA_QUERY_BUFFER_TIMEOUT 600 流式缓冲区在到期前保留的秒数
LOCALDATA_SECURITY_RESTRICT_PATHS true 将文件访问权限限制为已配置的 security.allowed_paths (默认值 ["."],流程工作目录)
LOCALDATA_CONFIG unset 指向YAML配置文件的路径,绕过配置文件发现

在MCP服务器配置中设置它们 "env",或在a .env 工作目录中的文件。整套--每个数据库的暂存、内存预算、磁盘预算 LOCALDATA_DB_<NAME>_* 定义——记录在 配置参考.

文档

发展

git clone https://github.com/ChrisGVE/localdata-mcp.git
cd localdata-mcp
uv sync --all-extras
uv run pytest tests/ --ignore=tests/integration

该命令收集2312个单元测试。另有357个集成测试正在进行中 tests/integration/ 需要实时数据库服务——从开始 docker-compose up -d,然后运行 uv run pytest tests/integration/该集合中的企业级套件将10万行加载到7个数据库引擎中的每一个,是迄今为止最慢的部分。

贡献

欢迎捐款。请阅读 贡献.md 在提交pull请求之前。

许可证

Apache许可证2.0——请参阅 许可证 了解详情。