Zum Inhalt springen

MCP Server / arcticdb

arcticdb

MCP server for ArcticDB

224von @YMuskratMITGitHub →

Installation

Claude Code
claude mcp add arcticdb -- npx -y @modelcontextprotocol/inspector
npx
npx -y @modelcontextprotocol/inspector

npm: @modelcontextprotocol/inspector

Transport

stdiosse

Tools (20)

get_uri

`arcticdb_mcp/tools/arctic_tools.py`

describe

`arcticdb_mcp/tools/arctic_tools.py`

modify_library_option

`arcticdb_mcp/tools/arctic_tools.py`

list_libraries

`arcticdb_mcp/tools/library_tools.py`

create_library

`arcticdb_mcp/tools/library_tools.py`

delete_library

`arcticdb_mcp/tools/library_tools.py`

library_exists

`arcticdb_mcp/tools/library_tools.py`

get_library

`arcticdb_mcp/tools/library_tools.py`

get_library_options

`arcticdb_mcp/tools/maintenance_tools.py`

get_enterprise_options

`arcticdb_mcp/tools/maintenance_tools.py`

list_symbols

`arcticdb_mcp/tools/symbol_tools.py`

symbol_exists

`arcticdb_mcp/tools/symbol_tools.py`

read_symbol

`arcticdb_mcp/tools/symbol_tools.py`

head_symbol

`arcticdb_mcp/tools/symbol_tools.py`

tail_symbol

`arcticdb_mcp/tools/symbol_tools.py`

write_symbol

`arcticdb_mcp/tools/symbol_tools.py`

append_symbol

`arcticdb_mcp/tools/symbol_tools.py`

update_symbol

`arcticdb_mcp/tools/symbol_tools.py`

delete_symbol

`arcticdb_mcp/tools/symbol_tools.py`

delete_data_in_range

`arcticdb_mcp/tools/symbol_tools.py`

Dokumentation

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

| Tool | File | What it does | |---|---|---| | get_uri | arcticdb_mcp/tools/arctic_tools.py | Return the ArcticDB URI used by this MCP server connection. | | describe | arcticdb_mcp/tools/arctic_tools.py | Return a compact summary of the ArcticDB store. | | modify_library_option | arcticdb_mcp/tools/arctic_tools.py | Modify a configurable library option. | | list_libraries | arcticdb_mcp/tools/library_tools.py | List all libraries in the Arctic instance. | | create_library | arcticdb_mcp/tools/library_tools.py | Create a new library with the given name. | | delete_library | arcticdb_mcp/tools/library_tools.py | Delete a library and all its underlying data permanently. | | library_exists | arcticdb_mcp/tools/library_tools.py | Check whether a library with the given name exists. | | get_library | arcticdb_mcp/tools/library_tools.py | Return the name and full list of symbols stored in a library. | | get_library_options | arcticdb_mcp/tools/maintenance_tools.py | Return non-enterprise library options. | | get_enterprise_options | arcticdb_mcp/tools/maintenance_tools.py | Return enterprise library options. |

Symbols

| Tool | File | What it does | |---|---|---| | list_symbols | arcticdb_mcp/tools/symbol_tools.py | List all symbol names stored in the given library. | | symbol_exists | arcticdb_mcp/tools/symbol_tools.py | Check whether a symbol exists in the given library. | | read_symbol | arcticdb_mcp/tools/symbol_tools.py | Read a symbol's full data as row records with index included. | | head_symbol | arcticdb_mcp/tools/symbol_tools.py | Return the first n rows of a symbol (default 5). | | tail_symbol | arcticdb_mcp/tools/symbol_tools.py | Return the last n rows of a symbol (default 5). | | write_symbol | arcticdb_mcp/tools/symbol_tools.py | Write data to a symbol, creating a new version. | | append_symbol | arcticdb_mcp/tools/symbol_tools.py | Append rows to an existing symbol, creating a new version. | | update_symbol | arcticdb_mcp/tools/symbol_tools.py | Update a date range of a timeseries symbol, creating a new version. | | delete_symbol | arcticdb_mcp/tools/symbol_tools.py | Delete a symbol and all its versions from the library. | | delete_data_in_range | arcticdb_mcp/tools/symbol_tools.py | Delete rows within a date range from a timeseries symbol, creating a new version. | | get_symbol_info | arcticdb_mcp/tools/symbol_tools.py | Return schema, row count, date range, and metadata summary for a symbol. | | list_versions | arcticdb_mcp/tools/symbol_tools.py | List all versions of a symbol with version number and write timestamp. | | read_metadata | arcticdb_mcp/tools/symbol_tools.py | Read only metadata for a symbol without loading its data. | | write_metadata | arcticdb_mcp/tools/symbol_tools.py | Update metadata for a symbol without modifying its data. |

Batch Operations

| Tool | File | What it does | |---|---|---| | write_batch | arcticdb_mcp/tools/batch_tools.py | Write multiple symbols in one call. | | append_batch | arcticdb_mcp/tools/batch_tools.py | Append to multiple symbols in one call. | | update_batch | arcticdb_mcp/tools/batch_tools.py | Update multiple symbols in one call. | | delete_batch | arcticdb_mcp/tools/batch_tools.py | Delete multiple symbols or symbol versions in one call. | | read_batch | arcticdb_mcp/tools/batch_tools.py | Read multiple symbols in one call. | | read_metadata_batch | arcticdb_mcp/tools/batch_tools.py | Read metadata for multiple symbols in one call. | | get_description_batch | arcticdb_mcp/tools/batch_tools.py | Get schema/description for multiple symbols in one call. | | write_metadata_batch | arcticdb_mcp/tools/batch_tools.py | Write metadata for multiple symbols in one call. | | write_pickle | arcticdb_mcp/tools/batch_tools.py | Write arbitrary pickle-serializable data to a symbol. | | write_pickle_batch | arcticdb_mcp/tools/batch_tools.py | Write multiple pickle-serializable payloads in one call. |

Snapshots

| Tool | File | What it does | |---|---|---| | create_snapshot | arcticdb_mcp/tools/snapshot_tools.py | Create a named snapshot of the current library state. | | list_snapshots | arcticdb_mcp/tools/snapshot_tools.py | List the names of all snapshots in a library. | | delete_snapshot | arcticdb_mcp/tools/snapshot_tools.py | Delete a named snapshot from a library. | | read_symbol_from_snapshot | arcticdb_mcp/tools/snapshot_tools.py | Read a symbol as it existed when a snapshot was created. |

Query Helpers

| Tool | File | What it does | |---|---|---| | query_filter | arcticdb_mcp/tools/query_tools.py | Filter rows using conditions. | | query_filter_isin | arcticdb_mcp/tools/query_tools.py | Filter rows where a column value is in a list. | | query_groupby | arcticdb_mcp/tools/query_tools.py | Group by a column and aggregate. | | query_date_range | arcticdb_mcp/tools/query_tools.py | Filter rows by date range on a datetime-indexed symbol. | | query_resample | arcticdb_mcp/tools/query_tools.py | Resample a datetime-indexed symbol and aggregate. |

Maintenance

| Tool | File | What it does | |---|---|---| | reload_symbol_list | arcticdb_mcp/tools/maintenance_tools.py | Force a symbol-list cache reload for a library. | | compact_symbol_list | arcticdb_mcp/tools/maintenance_tools.py | Compact symbol-list cache into a single key in storage. | | is_symbol_fragmented | arcticdb_mcp/tools/maintenance_tools.py | Check whether compaction would reduce segment count for a symbol. | | defragment_symbol_data | arcticdb_mcp/tools/maintenance_tools.py | Defragment symbol data by compacting fragmented row-sliced segments. | | prune_previous_versions | arcticdb_mcp/tools/maintenance_tools.py | Remove 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

arcticdb | hub.ai-engineering.at