← Discover MCPs and Agents
a
MCPOtherGitHub

arcticdb_mcp

MCP server for ArcticDB

Links

README

From the repo.

arcticdb-mcp

An MCP server for structured read/write access to ArcticDB.

PyPI Python Versions MIT License

OverviewDemoQuick StartConfigurationToolsDevelopment

Overview

arcticdb-mcp turns ArcticDB into an AI data copilot. Assistants can automate symbol updates, batch jobs, and time-series queries while built-in versioning protects every change. Go from question to data change in minutes, not scripts, with full traceability. You can also design your own workflows on top of arcticdb-mcp.

Table of Contents

Demo Video

Watch the live watch db demo:

https://github.com/user-attachments/assets/dd81f229-e1f9-46e6-8e79-7c7252bc25c6

Quickstart

  1. Install and run with uvx (recommended):
uvx arcticdb-mcp
  1. Configure your MCP client (Claude Desktop / Cursor / Windsurf / Continue):
{
  "mcpServers": {
    "arcticdb": {
      "command": "uvx",
      "args": ["arcticdb-mcp"],
      "env": {
        "ARCTICDB_URI": "lmdb:///path/to/your/database"
      }
    }
  }
}
  1. Ask your assistant:
  • "Show me the last 5 rows of AAPL in library finance"
  • "Create a snapshot of finance before I update symbols"
  • "List versions for symbol ES_intraday"

Installation

Choose one:

# Recommended
uvx arcticdb-mcp

# Or
pipx install arcticdb-mcp

# Or
pip install arcticdb-mcp

Python requirement: >=3.9

Configuration

Set ARCTICDB_URI in MCP client config or environment.

URI examples

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

You can also use a .env file:

ARCTICDB_URI=lmdb:///path/to/db

Run Modes

stdio (default)

This is the default mode used by desktop MCP clients.

ARCTICDB_URI=lmdb:///path/to/db python -m arcticdb_mcp

HTTP / SSE

Set ARCTICDB_MCP_PORT to run over HTTP/SSE:

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

Endpoint:

http://localhost:8000/sse

Tools

Current server exposes 48 tools.

Arctic and Libraries

ToolFileWhat it does
get_uriarcticdb_mcp/tools/arctic_tools.pyReturn the ArcticDB URI used by this MCP server connection.
describearcticdb_mcp/tools/arctic_tools.pyReturn a compact summary of the ArcticDB store.
modify_library_optionarcticdb_mcp/tools/arctic_tools.pyModify a configurable library option.
list_librariesarcticdb_mcp/tools/library_tools.pyList all libraries in the Arctic instance.
create_libraryarcticdb_mcp/tools/library_tools.pyCreate a new library with the given name.
delete_libraryarcticdb_mcp/tools/library_tools.pyDelete a library and all its underlying data permanently.
library_existsarcticdb_mcp/tools/library_tools.pyCheck whether a library with the given name exists.
get_libraryarcticdb_mcp/tools/library_tools.pyReturn the name and full list of symbols stored in a library.
get_library_optionsarcticdb_mcp/tools/maintenance_tools.pyReturn non-enterprise library options.
get_enterprise_optionsarcticdb_mcp/tools/maintenance_tools.pyReturn enterprise library options.

Symbols

ToolFileWhat it does
list_symbolsarcticdb_mcp/tools/symbol_tools.pyList all symbol names stored in the given library.
symbol_existsarcticdb_mcp/tools/symbol_tools.pyCheck whether a symbol exists in the given library.
read_symbolarcticdb_mcp/tools/symbol_tools.pyRead a symbol's full data as row records with index included.
head_symbolarcticdb_mcp/tools/symbol_tools.pyReturn the first n rows of a symbol (default 5).
tail_symbolarcticdb_mcp/tools/symbol_tools.pyReturn the last n rows of a symbol (default 5).
write_symbolarcticdb_mcp/tools/symbol_tools.pyWrite data to a symbol, creating a new version.
append_symbolarcticdb_mcp/tools/symbol_tools.pyAppend rows to an existing symbol, creating a new version.
update_symbolarcticdb_mcp/tools/symbol_tools.pyUpdate a date range of a timeseries symbol, creating a new version.
delete_symbolarcticdb_mcp/tools/symbol_tools.pyDelete a symbol and all its versions from the library.
delete_data_in_rangearcticdb_mcp/tools/symbol_tools.pyDelete rows within a date range from a timeseries symbol, creating a new version.
get_symbol_infoarcticdb_mcp/tools/symbol_tools.pyReturn schema, row count, date range, and metadata summary for a symbol.
list_versionsarcticdb_mcp/tools/symbol_tools.pyList all versions of a symbol with version number and write timestamp.
read_metadataarcticdb_mcp/tools/symbol_tools.pyRead only metadata for a symbol without loading its data.
write_metadataarcticdb_mcp/tools/symbol_tools.pyUpdate metadata for a symbol without modifying its data.

Batch Operations

ToolFileWhat it does
write_batcharcticdb_mcp/tools/batch_tools.pyWrite multiple symbols in one call.
append_batcharcticdb_mcp/tools/batch_tools.pyAppend to multiple symbols in one call.
update_batcharcticdb_mcp/tools/batch_tools.pyUpdate multiple symbols in one call.
delete_batcharcticdb_mcp/tools/batch_tools.pyDelete multiple symbols or symbol versions in one call.
read_batcharcticdb_mcp/tools/batch_tools.pyRead multiple symbols in one call.
read_metadata_batcharcticdb_mcp/tools/batch_tools.pyRead metadata for multiple symbols in one call.
get_description_batcharcticdb_mcp/tools/batch_tools.pyGet schema/description for multiple symbols in one call.
write_metadata_batcharcticdb_mcp/tools/batch_tools.pyWrite metadata for multiple symbols in one call.
write_picklearcticdb_mcp/tools/batch_tools.pyWrite arbitrary pickle-serializable data to a symbol.
write_pickle_batcharcticdb_mcp/tools/batch_tools.pyWrite multiple pickle-serializable payloads in one call.

Snapshots

ToolFileWhat it does
create_snapshotarcticdb_mcp/tools/snapshot_tools.pyCreate a named snapshot of the current library state.
list_snapshotsarcticdb_mcp/tools/snapshot_tools.pyList the names of all snapshots in a library.
delete_snapshotarcticdb_mcp/tools/snapshot_tools.pyDelete a named snapshot from a library.
read_symbol_from_snapshotarcticdb_mcp/tools/snapshot_tools.pyRead a symbol as it existed when a snapshot was created.

Query Helpers

ToolFileWhat it does
query_filterarcticdb_mcp/tools/query_tools.pyFilter rows using conditions.
query_filter_isinarcticdb_mcp/tools/query_tools.pyFilter rows where a column value is in a list.
query_groupbyarcticdb_mcp/tools/query_tools.pyGroup by a column and aggregate.
query_date_rangearcticdb_mcp/tools/query_tools.pyFilter rows by date range on a datetime-indexed symbol.
query_resamplearcticdb_mcp/tools/query_tools.pyResample a datetime-indexed symbol and aggregate.

Maintenance

ToolFileWhat it does
reload_symbol_listarcticdb_mcp/tools/maintenance_tools.pyForce a symbol-list cache reload for a library.
compact_symbol_listarcticdb_mcp/tools/maintenance_tools.pyCompact symbol-list cache into a single key in storage.
is_symbol_fragmentedarcticdb_mcp/tools/maintenance_tools.pyCheck whether compaction would reduce segment count for a symbol.
defragment_symbol_dataarcticdb_mcp/tools/maintenance_tools.pyDefragment symbol data by compacting fragmented row-sliced segments.
prune_previous_versionsarcticdb_mcp/tools/maintenance_tools.pyRemove non-snapshotted symbol versions except the latest one.

Example Prompts

  • "Read symbol NVDA from library finance"
  • "Filter NVDA where price > 500 and volume >= 1000"
  • "Resample ES_intraday to 5min and aggregate price mean, volume sum"
  • "Write metadata owner=research to symbol ES_intraday"
  • "Delete data in range for ES_intraday from 2024-01-01 to 2024-01-05"

Development

git clone https://github.com/YMuskrat/arcticdb-mcp
cd arcticdb-mcp
pip install -e .

Run locally:

ARCTICDB_URI=lmdb:///path/to/db python -m arcticdb_mcp

Test with MCP Inspector:

ARCTICDB_URI=lmdb:///tmp/test_db npx @modelcontextprotocol/inspector python -m arcticdb_mcp

Community Backlog

These ArcticDB capabilities are intentionally left open for contributors:

  • stage
  • finalize_staged_data
  • sort_and_finalize_staged_data
  • delete_staged_data
  • get_staged_symbols
  • read_batch_and_join
  • admin_tools

Contributing

See CONTRIBUTING.md.

License

MIT

Collected info

  • 668 stars
  • 4 forks
  • Language: Python
  • Source updated: 9/18/2026

Config for your environment

Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "{MCP_ENDPOINT_URL}"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.