ArcadeDB Multi-Model DBMS
OfficialThis MCP server exposes ArcadeDB's multi-model DBMS over tools for database discovery, schema inspection, read/write queries in several languages, and runtime profiling and server administration.
List databases — enumerate all databases available to the authenticated user.
Inspect schema — get types (vertex, edge, document), properties, indexes, and inheritance hierarchy for a database.
Run read-only queries —
SELECT/MATCHand similar, preferring OpenCypher, with optionalsql,cypher,gremlin,graphql, ormongolanguages and a resultlimit(default 1000).Execute write commands —
INSERT,UPDATE,DELETE,CREATE TYPE, and other non-idempotent operations in the same language set.Check server status — version, server name, available query languages, and HA/cluster state.
Profile queries — start a timed capture (up to 3600s), stop it early, or poll status for execution counts, timing stats (min/max/avg/p99), plan step costs, and metric snapshots.
Manage configuration — read all server settings (passwords masked) and update settings at runtime (e.g.
arcadedb.maxPageRAM,arcadedb.asyncWorkerThreads), though changes may not persist across restarts.
Supports the Apache Tinkerpop Gremlin traversal language for complex graph database operations and traversals.
Provides integration for visualizing time-series data and analytics within Grafana dashboards.
Allows the database to be queried using the GraphQL language for flexible data retrieval.
Supports the InfluxDB Line Protocol for seamless ingestion and management of time-series data.
Facilitates Graph RAG (Retrieval-Augmented Generation) workflows through integration with LangChain4j.
Provides compatibility with the MongoDB Query Language and drivers for document database management.
Supports the Cypher query language, allowing graph database interactions compatible with Neo4j.
Implements the PostgreSQL Wire protocol, enabling remote connections and queries via standard Postgres drivers.
Enables metrics management and querying through support for Prometheus remote_write/read and PromQL.
Offers compatibility with Redis protocols and drivers for high-performance key/value operations.
ArcadeDB is a Multi-Model DBMS created by Luca Garulli, the same founder of OrientDB, after SAP's acquisition. Written from scratch with a brand-new engine made of Alien Technology, ArcadeDB is able to crunch millions of records per second on common hardware with minimal resource usage. ArcadeDB reuses OrientDB's SQL engine (heavily modified) and some utility classes. It's written in LLJ: Low Level Java - still Java21+ but only using low level APIs to leverage advanced mechanical sympathy techniques and reduce Garbage Collector pressure. Highly optimized for extreme performance, it runs from a Raspberry Pi to multiple servers on the cloud.
ArcadeDB is fully transactional DBMS with support for ACID transactions, structured and unstructured data, native graph engine (no joins but links between records), full-text indexing, geospatial querying, and advanced security.
ArcadeDB supports the following models:
Graph Database (compatible with Neo4j Cypher, Apache Tinkerpop Gremlin and OrientDB SQL)
Document Database (compatible with the MongoDB driver + MongoDB queries and OrientDB SQL)
Key/Value (compatible with the Redis driver)
Time Series (with InfluxDB Line Protocol, Prometheus remote_write/read, and PromQL support)
ArcadeDB understands multiple languages:
SQL (from OrientDB SQL)
Neo4j Cypher (Open Cypher)
ArcadeDB key capabilities:
70+ Built-in Graph Algorithms — Pathfinding, centrality, community detection, link prediction, graph embeddings, and more — all available out of the box
Parallel Query Execution — SQL queries leverage multiple CPU cores for faster execution on large datasets
Materialized Views — Pre-computed query results stored and automatically maintained
MCP Server — Built-in Model Context Protocol server for AI assistant and LLM integration
AI Assistant — Integrated AI assistant in Studio (Beta) for query help and database management
Geospatial Indexing — Native spatial queries and proximity searches with
geo.*SQL functionsTimeSeries — Columnar storage with Gorilla/Delta-of-Delta compression, InfluxDB/Prometheus ingestion, PromQL queries, Grafana integration
Hash Indexes — Extendible hashing for faster exact-match lookups alongside LSM-Tree indexes
ArcadeDB can be used as:
Embedded from any language on top of the Java Virtual Machine
Embedded from Python via bindings: arcadedb-python (documentation)
Remotely by using HTTP/JSON
Remotely by using a Postgres driver (ArcadeDB implements Postgres Wire protocol)
Remotely by using a Redis driver (only a subset of the operations are implemented)
Remotely by using a MongoDB driver (only a subset of the operations are implemented)
By AI assistants via the built-in MCP Server (Model Context Protocol). For Claude Code there is a ready-made plugin:
/plugin marketplace add ArcadeData/arcadedbthen/plugin install arcadedb@arcadedb
For more information, see the documentation.
Use Cases
Explore real-world examples in the arcadedb-usecases repository — self-contained projects with Docker Compose, SQL schemas, and runnable demos covering:
Recommendation Engine — graph traversal + vector similarity + time-series
Knowledge Graphs — co-authorship and citation networks with full-text search
Graph RAG — retrieval-augmented generation with LangChain4j and Neo4j Bolt
Fraud Detection — graph, vector, and time-series signals with Cypher
Real-time Analytics — IoT and service monitoring with time-series
Social Network Analytics — materialized view dashboards with polyglot queries
Supply Chain — multi-tier visibility with PostgreSQL protocol and JavaScript
Getting started in 5 minutes
Start ArcadeDB Server with Docker:
docker run --rm -p 2480:2480 \
-v arcadedb-config:/home/arcadedb/config \
-v arcadedb-databases:/home/arcadedb/databases \
-e ARCADEDB_SETTINGS="-Darcadedb.server.rootPassword=playwithdata -Darcadedb.server.defaultDatabases=Imported[root]{import:https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz}" \
arcadedata/arcadedb:latest--rm deletes the container's anonymous volumes with it, so the two named volumes keep the imported OpenBeer database
(databases) and the users, groups and API tokens the server writes at runtime (config) across runs. For a fresh start, remove
them with docker volume rm arcadedb-config arcadedb-databases.
Pass database settings in ARCADEDB_SETTINGS and any extra JVM flags in JAVA_OPTS: Docker replaces
an environment variable rather than appending to it, so keeping the two apart leaves the image's own
garbage collector and heap sizing (ARCADEDB_OPTS_GC and ARCADEDB_OPTS_MEMORY) intact. The heap is
sized as a percentage of the container memory limit, so docker run -m 512m and a multi-GB
production container both work without further tuning.
The image runs on Java 25, where server.sh also enables compact object headers (-XX:+UseCompactObjectHeaders),
after checking that the JVM accepts the flag (a bare distribution on Java 25 or later does the same); set
ARCADEDB_OPTS_HEADERS to override it, or to an empty value to opt out.
Now open your browser on http://localhost:2480 and play with ArcadeDB Studio and the
imported OpenBeer database to find your favorite beer.

ArcadeDB is cloud-ready with Docker and Kubernetes support.
You can also download the latest release, unpack it on your local hard drive and
start the server with bin/server.sh or bin/server.bat for Windows.
Releases
There are four variants of (about monthly) releases:
full- this is the complete package including all modulesminimal- this package excludes thegremlin,redisw,mongodbw,graphqlmodulesheadless- this package excludes thegremlin,redisw,mongodbw,graphql,studiomodulesbase- core engine, server, and network only — excludes all optional modules (console,gremlin,studio,redisw,mongodbw,postgresw,grpcw,graphql,metrics)
The nightly builds of the repository head can be found here.
You can also build a custom distribution with only the modules you need using the Custom Package Builder:
curl -fsSL https://github.com/ArcadeData/arcadedb/releases/download/26.3.1/arcadedb-builder.sh | \
bash -s -- --version=26.3.1 --modules=gremlin,studioAvailable optional modules: console, gremlin, studio, redisw, mongodbw, postgresw, grpcw, graphql, metrics. The
builder supports interactive mode, Docker image generation, and offline builds from local Maven repositories.
An experimental GraalVM native-image build (fast startup, low RAM, no JVM required) is also available - see docs/native-image.md for prerequisites, the build/target matrix, and Docker usage.
Java Versions
Starting from ArcadeDB 24.4.1 code is compatible with Java 21.
Java 21 packages are available on Maven central and docker images on Docker Hub.
We also support Java 17 on a separate branch java17 for those who cannot upgrade to Java 21 yet through GitHub packages.
To use Java 17 inside your project, add the repository to your pom.xml and reference dependencies as follows:
<repositories>
<repository>
<name>github</name>
<id>github</id>
<url>https://maven.pkg.github.com/ArcadeData/arcadedb</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.arcadedb</groupId>
<artifactId>arcadedb-engine</artifactId>
<version>26.3.1-java17</version>
</dependency>
</dependencies>Docker images are available on ghcr.io too:
docker pull ghcr.io/arcadedata/arcadedb:26.3.1-java17Embedding Gremlin alongside the engine
Always use the shaded classifier for gremlin when embedding it, whether alongside
arcadedb-engine or on its own. Its ANTLR runtime is relocated into a private package, so it
never collides with the engine's ANTLR 4.13.2 on a shared classpath.
The plain arcadedb-gremlin jar resolves ANTLR to the engine's 4.13.2 (pulled transitively via
arcadedb-engine), which the engine's SQL/Cypher parsers require. TinkerPop's Gremlin
string-query parser ships a precompiled ANTLR 4.9.1 parser that only deserializes against the
relocated runtime inside the shaded jar, so the plain jar alone will not run Gremlin string
queries - use the shaded classifier.
<dependency>
<groupId>com.arcadedb</groupId>
<artifactId>arcadedb-engine</artifactId>
<version>26.8.1</version>
</dependency>
<dependency>
<groupId>com.arcadedb</groupId>
<artifactId>arcadedb-gremlin</artifactId>
<version>26.8.1</version>
<classifier>shaded</classifier>
</dependency>Building and Testing
Build the entire project (skipping tests):
mvn clean install -DskipTestsBuild the Docker image (skipping tests):
mvn clean install -DskipTests -PdockerRunning Unit Tests:
Run the full unit test suite:
mvn testSome tests are tagged to indicate their cost:
slow- functional tests that take noticeably long (large batches, multi-second elapsed time, big payloads)benchmark- microbenchmarks not intended for regular CI runs; excluded by default (see below)
benchmark-tagged tests are excluded by default, so a plain mvn test already skips them. To also skip
slow tests and run only the fast ones:
mvn test -DexcludedGroups="slow,benchmark"To run only a specific tag (e.g. benchmark tests in isolation), clear the default exclusion or it cancels out the selection and nothing runs:
mvn test -Dgroups="benchmark" -DexcludedGroups=Running Integration Tests:
Run all the integration tests (requires Docker):
mvn verify -PintegrationRun integration tests excluding the end-to-end, load, and HA tests:
mvn verify -Pintegration -pl !e2e,!load-tests,!e2e-haRunning End-to-End Tests:
All end-to-end tests (requires Docker):
mvn verify -Pintegration -pl e2e,load-tests,e2e-haTest Suites at a Glance
The codebase is covered by several complementary test suites, each with a distinct scope. The "CI" column says when each one runs; the scheduled ones have a status badge at the top of this page.
Suite | How it runs | CI | Scope |
Unit tests |
| every PR | Fast, in-process tests of a single component in isolation: engine internals (storage, pages, WAL, indexes, serialization), query parsing and execution (SQL, Cypher, Gremlin, GraphQL), schema, graph traversals, and security. The bulk of coverage; no external services required. CI splits them into lanes by JUnit tag: |
Integration tests |
| every PR | Tests spanning multiple components or a running server within the same JVM/module: HTTP/REST API, wire protocols (Postgres, MongoDB, Redis, Bolt, gRPC), and cross-module behavior. Some require Docker. |
HA integration ( |
| daily | Raft high-availability clusters of several servers started inside one JVM: replication, leader election, schema and security propagation, snapshot install, and catch-up of lagging followers. Moved out of the PR pipeline because of its length. |
End-to-end ( |
| every PR | Black-box tests against a real ArcadeDB server in a Docker container (Testcontainers), exercising it the way external clients do: JDBC/Postgres queries, the remote Java API, server-side JavaScript functions, and the Bolt and gRPC drivers. |
Load tests ( |
| daily | Throughput and stability under sustained concurrent workloads against single-server and three-node clusters in containers, including high-volume document and time-series ingestion. Verifies no data loss or corruption under contention. |
HA end-to-end ( |
| daily | Resilience and correctness of the Raft cluster under scripted failures: leader failover, rolling restarts, split-brain, network partitions/delay/packet loss, replication convergence, and cluster-wide operations (backup/restore, import, drop database, user management). Uses Testcontainers and fault injection (Toxiproxy). |
HA chaos ( |
| weekly | Long randomized run (60 minutes by default) against a containerized cluster: concurrent writers while a seeded scheduler injects faults (kill, stop, rolling restart, pause, isolate, split, latency, packet loss, and a follower frozen for more than 60 s that must recover without reformatting its Raft storage), and every acknowledged write is checked against all replicas after each step. Each run prints its seed so a failure can be replayed with |
Benchmarks |
| weekly | Microbenchmarks and comparison runs ( |
Python client ( |
| every PR | Verifies the Postgres wire protocol against real Python clients ( |
JavaScript client ( |
| every PR | Verifies Node.js client compatibility over the Bolt ( |
C# client ( |
| every PR | Verifies the Postgres wire protocol ( |
Go client ( |
| every PR | Bolt conformance with the official |
Bolt driver matrix |
| daily | Reruns the Bolt tests of the JavaScript, Python, C# and Go suites against several released versions of each official driver, and publishes the result in COMPATIBILITY.md. |
Studio ( |
| every PR | Browser tests of the Studio web UI with Playwright: database creation, queries and charts, graph view (styling, context menu, export), table views, and vector search. |
Community
Join our growing community around the world, for ideas, discussions and help regarding ArcadeDB.
Chat live with us on Discord
Follow us on Twitter
or on Bluesky
Connect with us on LinkedIn
or on Facebook
Questions tagged
#arcadedbon Stack OverflowView our official Blog
Security
For security issues kindly email us at support@arcadedb.com instead of posting a public issue on GitHub.
License and Attribution
ArcadeDB is Free for any usage and licensed under the liberal Open Source Apache 2 license. We are committed to remaining Open Source Forever — see our Governance for the structural guarantees that make this more than a promise. If you need commercial support, or you need to have an issue fixed ASAP, check our pricing page.
For third-party attributions and copyright notices, see:
NOTICE - Required legal attributions
ATTRIBUTIONS.md - Detailed third-party acknowledgments
LICENSE - Full license text
GOVERNANCE.md - License guarantee and project governance
Thanks To
for providing YourKit Profiler to our committers.
Contributing
We would love for you to get involved with ArcadeDB project. If you wish to help, you can learn more about how you can contribute to this project in the contribution guide.
Have fun with data!
The ArcadeDB Team
Stargazers over time
Available Tools
10 toolsexecute_commandA
Execute a non-idempotent command against an ArcadeDB database. Use this for INSERT, UPDATE, DELETE, CREATE TYPE, and other write operations. Prefer OpenCypher (language: 'cypher') unless SQL is explicitly requested.
Inputs: command (required), database (required), limit, language.
get_schemaB
Get the full schema of a database including types (vertex, edge, document), their properties, indexes, and inheritance hierarchy.
Inputs: database (required).
get_server_settingsA
Retrieve ArcadeDB server configuration settings. Returns all server-level settings with their current values, defaults, and descriptions. Sensitive values (passwords) are masked. Use this to understand and diagnose server configuration.
Inputs: no named parameters.
list_databasesA
List all databases available to the authenticated user on the ArcadeDB server.
Inputs: no named parameters.
profiler_startA
Start the query profiler to capture query execution data. The profiler records all queries with their execution times and plans. It auto-stops after the specified timeout (default 60 seconds). Use profiler_stop to stop early and get results, or profiler_status to check progress.
Inputs: timeoutSeconds.
profiler_statusA
Get the current status of the query profiler. Returns whether the profiler is recording, and if available, the current or last profiling results including captured queries, timing statistics, and server metric snapshots.
Inputs: no named parameters.
profiler_stopA
Stop the query profiler and return the captured profiling data. Returns aggregated query statistics including execution counts, timing (min/max/avg/p99), and execution plan step costs. Results are also saved to disk for later retrieval.
Inputs: no named parameters.
queryA
Execute a read-only (idempotent) query against an ArcadeDB database. Use this for SELECT, MATCH, and other read operations. Prefer OpenCypher (language: 'cypher') unless SQL is explicitly requested.
Inputs: query (required), database (required), limit, language.
server_statusA
Get ArcadeDB server information including version, server name, available query languages, and HA/cluster status.
Inputs: no named parameters.
set_server_settingA
Update a server configuration setting at runtime. Changes take effect immediately but may not persist across server restarts (depends on the setting). Use get_server_settings first to see available settings and their current values.
Inputs: key (required), value (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a clearly distinct concern: server admin (status, settings), profiler lifecycle (start/stop/status), and database operations (list, schema, query, execute). No two tools overlap in purpose, making misselection unlikely.
Tools follow a consistent verb_noun pattern: profiler_start/stop/status, get_server_settings, set_server_setting, list_databases, get_schema, execute_command, query, server_status. The only slight deviation is 'execute_command' and 'query' which use more generic verbs rather than a resource-specific noun, and 'server_status' uses a different word order than get_/set_ prefixes.
Ten tools is well-scoped for a DBMS server MCP. Each tool maps to a meaningful operation a client would need: server introspection, config management, profiling, and database CRUD/querying. Nothing feels redundant or missing at the top level.
The surface covers server status, configuration management, profiling, database enumeration, schema retrieval, and both read and write operations. Minor gaps include no database creation/deletion and no explicit way to retrieve saved profiler results from disk, but the core admin+query workflow is complete.
Maintenance
Related MCP Connectors
A collaborative substrate over your data: vector, knowledge graph, SQL, geospatial, streaming.
Data Oil is a multi-model database built for object storage. It uses a log-structured storage engine, snapshot isolation with optimistic commit, and a change feed from the write-ahead log. Its SQL dialect supports joins, window functions, CTEs, set operations, graph traversal and pattern matching. It has its own HNSW vector index and BM25 full-text index, and a write is searchable by keyword and vector as soon as it commits. Access is over HTTP, the PostgreSQL wire protocol (extended protocol). We have a founder's program available for projects which may be of interest https://dataoil.tech/founders.html if your interested lets chat ;)
Graph-vector database: run Helix queries, read query insights and health, manage databases
Single-digit millisecond search across vectors and text. At any scale, for fraction of the cost. https://warpsearch.io/
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceZero-config graph DB for builders, AI agents, and SaaS teams who move fast29885 npm1Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceA lightning-fast, self-hosted knowledge store and memory layer for AI agents-
- FlicenseNot gradedqualityCmaintenanceMunin is a high-performance, pragmatic memory layer for AI agents (Cursor, Claude Code, OpenClaw, Gemini CLI,...). Unlike other solutions, Munin focuses on developer productivity with: * Multi-Project Support: Isolate memories into separate "brains" (Context Cores). * GraphRAG: Automatically builds a knowledge graph from your context. * Sub-200ms Search: Blazing fast Hybrid & Semantic3-
- AlicenseNot gradedqualityCmaintenanceUniversal MCP server for readonly-first access to Oracle, SQL Server, PostgreSQL, MySQL/MariaDB, SQLite, MongoDB, and Qdrant vector search.78 npm1MIT
