An MCP server for structured read/write access to ArcticDB.
Overview • Demo • Quick Start • Configuration • Tools • Development
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.
- Demo Video
- Quickstart
- Installation
- Configuration
- Run Modes
- Tools
- Example Prompts
- Development
- Community Backlog
- Contributing
- License
Watch the live watch db demo:
arcticdb-live-demo.mp4
- Install and run with
uvx(recommended):
uvx arcticdb-mcp- Configure your MCP client (Claude Desktop / Cursor / Windsurf / Continue):
{
"mcpServers": {
"arcticdb": {
"command": "uvx",
"args": ["arcticdb-mcp"],
"env": {
"ARCTICDB_URI": "lmdb:///path/to/your/database"
}
}
}
}- 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"
Choose one:
# Recommended
uvx arcticdb-mcp
# Or
pipx install arcticdb-mcp
# Or
pip install arcticdb-mcpPython requirement: >=3.9
Set ARCTICDB_URI in MCP client config or environment.
- 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/dbThis is the default mode used by desktop MCP clients.
ARCTICDB_URI=lmdb:///path/to/db python -m arcticdb_mcpSet ARCTICDB_MCP_PORT to run over HTTP/SSE:
ARCTICDB_URI=lmdb:///path/to/db ARCTICDB_MCP_PORT=8000 python -m arcticdb_mcpEndpoint:
http://localhost:8000/sse
Current server exposes 48 tools.
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
- "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"
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_mcpTest with MCP Inspector:
ARCTICDB_URI=lmdb:///tmp/test_db npx @modelcontextprotocol/inspector python -m arcticdb_mcpThese ArcticDB capabilities are intentionally left open for contributors:
stagefinalize_staged_datasort_and_finalize_staged_datadelete_staged_dataget_staged_symbolsread_batch_and_joinadmin_tools
See CONTRIBUTING.md.
MIT