Skip to main content

MCP server that gives AI assistants full read/write access to ArcticDB

Project description

arcticdb-mcp

MCP server that gives AI assistants full read/write access to ArcticDB — versioned, queryable, serverless DataFrames at scale.


Why ArcticDB + AI

Most databases give your AI assistant data. ArcticDB gives it versioned data — every write is a new version, every version is recoverable. This means your AI can:

  • Detect when a new data update introduced anomalies by comparing it to the previous version
  • Roll back to a known-good state without any data loss
  • Query billions of rows with date range, filter, and groupby — without loading them into memory
  • Work across LMDB (local), S3, Azure Blob, and MinIO with zero infrastructure changes

Configure Your AI Assistant

We provide full instructions for configuring arcticdb-mcp with Claude Desktop. Many MCP clients use a similar configuration file — you can adapt these steps to work with the client of your choice.

Cursor / Windsurf / Continue.dev — these all use the same JSON config format as Claude Desktop. Use any of the blocks below as-is.

n8n / HTTP-based tools — see HTTP / SSE mode below.


Claude Desktop configuration file location

OS Path
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%\Claude\claude_desktop_config.json
Linux ~/.config/Claude/claude_desktop_config.json

You can also use the Settings menu in Claude Desktop to locate the file.

Edit the mcpServers section using one of the methods below.


If you are using uvx (recommended)

No install step needed — uvx fetches and runs arcticdb-mcp directly from PyPI.

{
  "mcpServers": {
    "arcticdb": {
      "command": "uvx",
      "args": ["arcticdb-mcp"],
      "env": {
        "ARCTICDB_URI": "lmdb:///path/to/your/database"
      }
    }
  }
}

If you are using uv

{
  "mcpServers": {
    "arcticdb": {
      "command": "uv",
      "args": ["run", "arcticdb-mcp"],
      "env": {
        "ARCTICDB_URI": "lmdb:///path/to/your/database"
      }
    }
  }
}

If you are using pipx

pipx install arcticdb-mcp
{
  "mcpServers": {
    "arcticdb": {
      "command": "arcticdb-mcp",
      "env": {
        "ARCTICDB_URI": "lmdb:///path/to/your/database"
      }
    }
  }
}

If you are using pip

pip install arcticdb-mcp
{
  "mcpServers": {
    "arcticdb": {
      "command": "python",
      "args": ["-m", "arcticdb_mcp"],
      "env": {
        "ARCTICDB_URI": "lmdb:///path/to/your/database"
      }
    }
  }
}

If you are using Docker

Local LMDB — mount your database directory as a volume:

{
  "mcpServers": {
    "arcticdb": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "ARCTICDB_URI=lmdb:///data/db",
        "-v", "/path/to/your/database:/data/db",
        "ymuskrat/arcticdb-mcp"
      ]
    }
  }
}

S3 / Azure — no volume needed, pass credentials via env:

{
  "mcpServers": {
    "arcticdb": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "ymuskrat/arcticdb-mcp"],
      "env": {
        "ARCTICDB_URI": "s3://s3.amazonaws.com:bucket?region=us-east-1&access=KEY&secret=SECRET"
      }
    }
  }
}

Build the image locally:

docker build -t arcticdb-mcp .

ArcticDB URI

Replace lmdb:///path/to/your/database with your ArcticDB connection URI:

Backend URI format
Local (LMDB) lmdb:///path/to/db (Linux/Mac) · lmdb://C:/path/to/db (Windows)
AWS S3 s3://s3.amazonaws.com:bucket?region=us-east-1&access=KEY&secret=SECRET
Azure Blob azure://AccountName=X;AccountKey=Y;Container=Z
MinIO / S3-compatible s3://your-endpoint:bucket?access=KEY&secret=SECRET

You can also set the URI in a .env file in your working directory instead of the config.


Then ask your AI assistant:

"Show me the last 5 rows of AAPL in the finance library"
"Filter NVDA prices greater than 500 in 2024"
"Compare the latest version of this symbol to the previous one"
"Create a snapshot of the finance library before I update it"

Backends

Backend URI format
Local (LMDB) lmdb:///path/to/db (Linux/Mac) · lmdb://C:/path/to/db (Windows)
AWS S3 s3://s3.amazonaws.com:bucket?region=us-east-1&access=KEY&secret=SECRET
Azure Blob azure://AccountName=X;AccountKey=Y;Container=Z
MinIO / S3-compatible s3://your-endpoint:bucket?access=KEY&secret=SECRET

Set the URI via environment variable:

export ARCTICDB_URI="lmdb:///path/to/your/database"

Or use a .env file in your working directory.


Tools

Libraries

Tool Description
list_libraries List all libraries in the Arctic instance
create_library Create a new library
delete_library Delete a library and all its data
library_exists Check whether a library exists
get_library Get a library's name and symbol list

Symbols

Tool Description
list_symbols List all symbols in a library
read_symbol Read a symbol's full data. Use as_of for a specific version
head_symbol Read the first n rows of a symbol
tail_symbol Read the last n rows of a symbol
write_symbol Write data to a symbol, creating a new version
append_symbol Append rows to an existing symbol
update_symbol Overwrite a date range of a timeseries symbol
delete_symbol Delete a symbol and all its versions
delete_data_in_range Delete rows within a date range, creating a new version
symbol_exists Check whether a symbol exists
get_symbol_info Get row count, column names, and last update time
read_metadata Read a symbol's metadata without loading data
write_metadata Update a symbol's metadata
list_versions List all versions of a symbol with timestamps

Snapshots

Tool Description
create_snapshot Snapshot the current state of a library
list_snapshots List all snapshots in a library
delete_snapshot Delete a named snapshot
read_symbol_from_snapshot Read a symbol as it existed at snapshot time

Queries

Tool Description
query_filter Filter rows with >, >=, <, <=, ==, != conditions
query_filter_isin Filter rows where a column value is in a list
query_groupby Group by a column and aggregate (mean, sum, min, max, count)
query_date_range Filter a datetime-indexed symbol by date range
query_resample Resample a datetime-indexed symbol (1h, 1D, 1W, ...)

HTTP / SSE mode (n8n and other tools)

Tools like n8n, Zapier, or any custom application that can't launch a local process need the server running as an HTTP service. Set ARCTICDB_MCP_PORT to switch from stdio to SSE transport:

ARCTICDB_URI=lmdb:///path/to/your/database ARCTICDB_MCP_PORT=8000 python -m arcticdb_mcp

The MCP endpoint will be available at:

http://localhost:8000/sse

With Docker:

docker run -d \
  -e ARCTICDB_URI=lmdb:///data/db \
  -e ARCTICDB_MCP_PORT=8000 \
  -v /path/to/your/database:/data/db \
  -p 8000:8000 \
  ymuskrat/arcticdb-mcp

In n8n — add an MCP Client node and point it to http://your-host:8000/sse.


Development

git clone https://github.com/YMuskrat/arcticdb-mcp
pip install -e ".[dev]"

# Test with MCP Inspector
ARCTICDB_URI=lmdb:///tmp/test_db npx @modelcontextprotocol/inspector python -m arcticdb_mcp

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arcticdb_mcp-0.1.3.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arcticdb_mcp-0.1.3-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file arcticdb_mcp-0.1.3.tar.gz.

File metadata

  • Download URL: arcticdb_mcp-0.1.3.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arcticdb_mcp-0.1.3.tar.gz
Algorithm Hash digest
SHA256 90c0f2086b7559ed4ac5261d46d7533e8b368c5e0e796ea5f44f1617b0591367
MD5 d85f868985fd6417d73a12685d2a217a
BLAKE2b-256 1f79413fa468d5ce3f8e69b6ed185882cc62c350740bb10d3c2829a69c93322c

See more details on using hashes here.

Provenance

The following attestation bundles were made for arcticdb_mcp-0.1.3.tar.gz:

Publisher: publish.yml on YMuskrat/arcticdb_mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arcticdb_mcp-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: arcticdb_mcp-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arcticdb_mcp-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 044d525fb4ae842de461fefbc7f91da98a6da2453f8d7a97bbe725dbf96eb7fa
MD5 d0593db0187101319b36666d8d02fff3
BLAKE2b-256 a1e5b74ef4becc8446d666931d6eb2ac2b0cc9acfbe86e8bb69aaf5824d57e40

See more details on using hashes here.

Provenance

The following attestation bundles were made for arcticdb_mcp-0.1.3-py3-none-any.whl:

Publisher: publish.yml on YMuskrat/arcticdb_mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page