Skip to content
Conduit

mcp server

localdata-mcp

MCP server giving LLM agents access to databases, files, graphs, and a full data science toolkit — 52 tools across 13 database types and 20+ file formats

ChrisGVE/localdata-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "localdata-mcp": {
      "command": "uvx",
      "args": [
        "localdata-mcp"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 17, 2026

LocalData MCP Server

License: Apache 2.0 GitHub Release CI PyPI version Python 3.10+ Documentation FastMCP Verified on MseeP PyPI downloads GitHub stars

LocalData MCP gives LLM agents access to local and remote data — databases, files, graphs, and structured documents — along with a full data science toolkit for analysis and modeling. It exposes 70 MCP tools across 13 database types and 20+ file formats, with memory-bounded streaming so agents can work safely on large datasets without exceeding available RAM.

MseeP.ai Security Assessment Badge

Quick Start

# Install permanently
uv tool install localdata-mcp

# Or run directly without installing
uvx localdata-mcp

First-run note: Data science dependencies (scipy, scikit-learn, statsmodels, geopandas) total around 200 MB and are downloaded on first use. Subsequent starts reuse the cache. If your MCP client times out on the first launch, reconnect — the next start will be immediate.

Add to your MCP client configuration:

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

For uvx (no permanent install):

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

Then connect to any supported source and start querying:

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")

A single-table file — CSV, TSV, JSON, XML, INI, Parquet, Feather, Arrow — is loaded into one table named data_table, whatever the connection is called. Run describe_database(name) after connecting if you are unsure what a source exposes; multi-sheet spreadsheets and databases keep their own table names.

Feature Overview

Core Database (8 tools)

Connect, query, and inspect databases and files. All queries execute within configurable memory limits (default 2 GB) with automatic chunked streaming for large result sets.

ToolDescription
connect_databaseOpen a connection to any supported database or file
disconnect_databaseClose a connection
list_databasesList active connections
execute_queryRun SQL with streaming, chunking, and preflight mode
describe_databaseShow schema and table list
describe_tableColumn types, indexes, row count
find_tableLocate a table across all active connections
analyze_query_previewEstimate query cost before execution

Streaming and Memory (9 tools)

ToolDescription
next_chunkRetrieve the next chunk of a streamed result
request_data_chunkFetch a specific chunk by row range
request_multiple_chunksBatch-fetch multiple chunks in one call
manage_memory_boundsView and configure memory limits
get_streaming_statusCheck active streams and buffer usage
clear_streaming_bufferFree memory from a specific buffer
get_query_metadataRich metadata for a completed query
cancel_query_operationCancel a running or buffered query
get_data_quality_reportColumn statistics, null rates, and quality metrics

Tree / Structured Data (10 tools)

Navigate and edit TOML, JSON, and YAML files as navigable trees. Supports full CRUD with auto-creation of ancestor nodes and round-trip export to any supported format.

ToolDescription
get_node / get_childrenNavigate the tree
set_node / delete_nodeCreate or remove nodes
get_value / set_value / delete_keyRead and write properties
list_keysList key-value pairs at a node
move_nodeRelocate a node within the tree
export_structuredExport as TOML, JSON, YAML, or Markdown

Graph (7 tools)

Work with DOT, GML, GraphML, and Mermaid files as directed multigraphs. Supports full CRUD on nodes and edges, shortest-path and all-paths queries, structural statistics, and multi-format export.

ToolDescription
get_neighbors / get_edgesTraverse from a node
add_edge / remove_edgeManage edges
find_pathShortest path or all paths between two nodes
get_graph_statsNode/edge counts, density, DAG validation
export_graphExport as DOT, GML, GraphML, Mermaid, or Markdown

Node-level operations reuse the tree tools above: get_node, set_node, delete_node, list_keys, get_value, set_value, and delete_key detect a graph connection and treat their path argument as a node ID. get_children and move_node are tree-only.

Search and Transform (2 tools)

ToolDescription
search_dataRegex search across query results
transform_dataApply column transformations to result sets

Schema and Audit (3 tools)

ToolDescription
export_schemaExport schema as JSON Schema, Python dataclasses, TypeScript interfaces, or SQL DDL
get_query_logRecent query execution history
get_error_logRecent error log

System (2 tools)

ToolDescription
check_compatibilityVerify API backward compatibility
get_metricsPrometheus metrics text. Registered only when metrics collection is enabled, which is the default

Data Science (12 tools)

Run statistical analysis, modeling, and pattern detection directly on query results from any connected source.

ToolDomain
analyze_hypothesis_testStatistical Analysis
analyze_anovaStatistical Analysis
analyze_effect_sizesStatistical Analysis
analyze_regressionRegression and Modeling
evaluate_model_performanceRegression and Modeling
analyze_clustersPattern Recognition
detect_anomaliesPattern Recognition
reduce_dimensionsPattern Recognition
analyze_time_seriesTime Series
forecast_time_seriesTime Series
analyze_rfmBusiness Intelligence
analyze_ab_testBusiness Intelligence

Supported Data Sources

Databases

TypeEngines
SQLSQLite, PostgreSQL, MySQL
SQL (analytical)DuckDB (pip install duckdb duckdb-engine)
SQL (enterprise)Oracle, MS SQL Server (pip install localdata-mcp[enterprise])
DocumentMongoDB, CouchDB (pip install localdata-mcp[modern-databases])
Key-valueRedis (pip install localdata-mcp[modern-databases])
SearchElasticsearch (pip install localdata-mcp[modern-databases])
Time seriesInfluxDB (pip install localdata-mcp[modern-databases])
GraphNeo4j (pip install localdata-mcp[modern-databases])
RDF / SPARQLTurtle (.ttl), N-Triples (.nt), remote SPARQL endpoints

File Formats

CategoryFormats
TabularCSV, TSV
StructuredJSON, YAML, TOML, XML, INI
SpreadsheetExcel (.xlsx, .xls), LibreOffice Calc (.ods), Apple Numbers (.numbers)
AnalyticalParquet, Feather, Arrow, HDF5
GraphDOT (Graphviz), GML, GraphML, Mermaid
RDFTurtle (.ttl), N-Triples (.nt)

Multi-sheet spreadsheets are supported: each sheet becomes a separately queryable table. To load one sheet only, pass its name as the fourth argument to connect_database — connect_database("q1", "excel", "./report.xlsx", "Q1 Results"). Use "excel" for both .xlsx and .xls; "xlsx" is not a connection type.

Data Science Domains

Statistical Analysis — t-tests, chi-squared, Mann-Whitney, Kruskal-Wallis, and related hypothesis tests; one-way ANOVA with post-hoc tests; Cohen's d, eta-squared, and other effect size measures.

Regression and Modeling — linear, polynomial, logistic, ridge, lasso, and elastic net regression; model evaluation with R², RMSE, MAE, and classification metrics; automated feature selection.

Pattern Recognition — K-means, DBSCAN, and hierarchical clustering; anomaly detection via isolation forest, LOF, and one-class SVM; dimensionality reduction with PCA, t-SNE, and UMAP.

Time Series — decomposition, stationarity testing, autocorrelation analysis; ARIMA and ETS forecasting; change point detection; multivariate analysis with VAR, Granger causality, and cointegration tests. forecast_time_series accepts method="arima" or method="ets"; the SARIMA and ensemble models in the domain package are not reachable through an MCP tool.

Business Intelligence — A/B test statistical analysis; RFM customer segmentation; cohort analysis, CLV modeling, and funnel analysis.

Geospatial — distance and coordinate calculations, spatial joins, interpolation, and network analysis.

Optimization — linear programming, constrained optimization, assignment problems, and network optimization.

Sampling and Estimation — bootstrap confidence intervals, Bayesian estimation, Monte Carlo simulation, and stratified sampling.

Claude Code plugin

The repository doubles as a Claude Code plugin. Its manifest (.claude-plugin/plugin.json) registers the localdata MCP server via uvx localdata-mcp and ships 18 skills and 11 agents that drive the tools above. See the plugin page for how to install it and how to invoke a skill.

Upgrading from 2.0.0: graph-explore is now graph-data-explore and graph-analyst is now graph-data-analyst, and every skill moved one directory deeper. Invoking an old name silently does nothing — the changelog lists the steps.

Skills are grouped by domain under skills/:

GroupSkills
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 in agents/ take on longer analyses that span several tools:

AgentScope
data-explorerProfiles an unfamiliar dataset and reports schema, quality, and candidate analyses
data-scientistComposes multi-step pipelines across domains when the right approach is not obvious
statistical-analystHypothesis tests, ANOVA, effect sizes, sampling design, bootstrap estimation
ml-analystClustering, anomaly detection, dimensionality reduction, regression modeling
forecasterDecomposition, stationarity testing, ARIMA/ETS choice, forecasts with uncertainty bounds
bi-analystA/B tests, cohort analysis, CLV, attribution, funnels
graph-data-analystCentrality, community detection, path finding, graph export
geospatial-analystCoordinate systems, distances, spatial clustering, accessibility
operations-analystStatistical process control, optimization, capacity planning
research-analystPower analysis, assumption documentation, reproducible reporting
data-researcherFinds and prepares public reference datasets to enrich your data

Architecture

  • One uniform call shape — every analysis tool takes a connection name, a SQL query, and the column names it should work on. There is no separate load step and no data-frame argument: the query is the data selection, so the same call works against a CSV file and a PostgreSQL table
  • Named methods, sensible defaults — the statistical procedure is chosen by name (method="dbscan", test_type="ttest_ind") and every method parameter has a default, so a call that names only the columns still runs. Thresholds such as alpha and contamination are numeric parameters, not inferred from intent
  • Streaming-first execution — query results are chunked and buffered rather than materialized whole. execute_query returns the first chunk plus a query_id, and next_chunk walks the rest, so a result larger than the configured memory ceiling (default 2 GB) is still workable
  • Self-describing query results — execute_query returns row counts, memory state, data-quality signals, and ready-to-run next_chunk calls alongside the rows, so an agent can decide what to do next without a second round trip

Configuration

LocalData MCP reads settings from a YAML config file, from environment variables, or from both; environment variables win. The defaults work for most cases. The most frequently changed variables:

VariableDefaultDescription
LOCALDATA_MEMORY_LIMIT_MB2048Memory ceiling for query results, in MB
LOCALDATA_CONNECTIONS_MAX_CONCURRENT10Maximum simultaneous database connections
LOCALDATA_QUERY_CHUNK_SIZE100Rows per streaming chunk
LOCALDATA_QUERY_BUFFER_TIMEOUT600Seconds a streaming buffer is kept before expiry
LOCALDATA_SECURITY_RESTRICT_PATHStrueConfine file access to the configured security.allowed_paths (default ["."], the process working directory)
LOCALDATA_CONFIGunsetPath to a YAML config file, bypassing config-file discovery

Set them in your MCP server configuration under "env", or in a .env file in the working directory. The full set — staging, memory budget, disk budget, per-database LOCALDATA_DB_<NAME>_* definitions — is documented in the configuration reference.

Documentation

Development

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

That command collects 2,312 unit tests. A further 357 integration tests live under tests/integration/ and need live database services — start them with docker-compose up -d, then run uv run pytest tests/integration/. The enterprise-scale suite inside that set loads 100K rows into each of 7 database engines and is by far the slowest part.

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before submitting a pull request.

License

Apache License 2.0 — see LICENSE for details.

↑↓ navigate openesc close