Plug ArcadeDB into the AI frameworks, agent memory layers, MCP clients and monitoring stacks you already run. Every entry below has the install command, a short snippet from the project's own README, and a link to the source.
langchain-arcadedb: a LangChain GraphStore over Bolt. Works with GraphCypherQAChain.
arcadedb-haystack: a Haystack 2.x document store and retriever on ArcadeDB's HNSW vector index.
llama-index-graph-stores-arcadedb: a PropertyGraphStore for LlamaIndex GraphRAG pipelines.
ArcadeDB as both the graph and the vector store behind Cognee's AI memory engine.
Details →A Claude Code plugin that keeps decisions, sessions and a code graph in ArcadeDB across projects.
Details →Built into the server: query, vector and hybrid search, and agent-memory upserts for any MCP client.
Details →Google's open-source MCP server ships an ArcadeDB source with Cypher and SQL tools.
Details →A native Grafana data source: time series builder, SQL, Cypher and Gremlin, Node Graph, alerting.
Details →Scrape server, engine and JVM metrics from the /prometheus endpoint.
Push the same metrics over OTLP/HTTP to any OpenTelemetry Collector.
Details →Any tool with a PostgreSQL connector talks to ArcadeDB through its PostgreSQL wire protocol.
Details →Most of the AI integrations here exist for the same reason: retrieval works better when vectors and relationships live in one engine. If you are building retrieval-augmented generation, the GraphRAG page explains the pattern, and the knowledge graphs page covers how the graph side is built. For agents that talk to the database directly, see ArcadeDB for AI agents.
Official means maintained by Arcade Data. Upstream means the ArcadeDB support has been merged into the other project's own repository. Community means a third party maintains it: it works, but check its repository for support and release cadence.
langchain-arcadedb provides ArcadeDBGraph, which implements LangChain's GraphStore protocol. It connects through ArcadeDB's Bolt protocol (it installs the neo4j Python driver), detects the schema from existing data, runs Cypher, and works as a drop-in graph for GraphCypherQAChain. It can also import LangChain graph documents.
pip install langchain-arcadedb
# ArcadeDB with the Bolt plugin enabled
docker run --rm -p 2480:2480 -p 7687:7687 \
-e JAVA_OPTS="-Darcadedb.server.rootPassword=playwithdata -Darcadedb.server.plugins=Bolt:com.arcadedb.bolt.BoltProtocolPlugin" \
arcadedata/arcadedb:26.10.1
# create a database
curl -X POST http://localhost:2480/api/v1/server \
-d '{"command":"create database mydb"}' \
-u root:playwithdata -H "Content-Type: application/json"
from langchain_arcadedb import ArcadeDBGraph
graph = ArcadeDBGraph(
url="bolt://localhost:7687",
username="root",
password="playwithdata",
database="mydb",
)
# Schema is auto-detected from existing data
print(graph.get_schema)
# Run Cypher queries
result = graph.query("MATCH (n:Person) RETURN n.name AS name")
For natural-language questions, pass the same graph to GraphCypherQAChain.from_llm(...) from langchain_neo4j together with your LLM, as shown in the repository README.
arcadedb-haystack is an ArcadeDB integration for Haystack 2.x. ArcadeDBDocumentStore stores Haystack documents as ArcadeDB vertices with their embeddings in a native HNSW vector index and filters on metadata with SQL. ArcadeDBEmbeddingRetriever is the pipeline component that queries that index. It talks to ArcadeDB over plain HTTP/JSON, so no extra driver is needed. The package is listed in Haystack's integration catalog and its source now lives in deepset's haystack-core-integrations repository.
pip install arcadedb-haystack
docker run -d -p 2480:2480 \
-e JAVA_OPTS="-Darcadedb.server.rootPassword=arcadedb" \
arcadedata/arcadedb:26.10.1
export ARCADEDB_USERNAME=root
export ARCADEDB_PASSWORD=arcadedb
from haystack import Pipeline
from haystack_integrations.components.retrievers.arcadedb import ArcadeDBEmbeddingRetriever
from haystack_integrations.document_stores.arcadedb import ArcadeDBDocumentStore
store = ArcadeDBDocumentStore(database="myproject", embedding_dimension=768)
pipeline = Pipeline()
pipeline.add_component("retriever", ArcadeDBEmbeddingRetriever(document_store=store, top_k=10))
result = pipeline.run({"retriever": {"query_embedding": [0.1] * 768}})
documents = result["retriever"]["documents"]
llama-index-graph-stores-arcadedb implements LlamaIndex's PropertyGraphStore (ArcadeDBPropertyGraphStore) and the older basic graph store (ArcadeDBGraphStore). It connects over ArcadeDB's HTTP API on port 2480, and vector operations are enabled when you pass embedding_dimension. It is maintained by a community contributor rather than by Arcade Data, so file issues on its own repository.
pip install llama-index-graph-stores-arcadedb
from llama_index.core import PropertyGraphIndex
from llama_index.graph_stores.arcadedb import ArcadeDBPropertyGraphStore
graph_store = ArcadeDBPropertyGraphStore(
host="localhost",
port=2480,
username="root",
password="playwithdata",
database="knowledge_graph",
embedding_dimension=1536, # match your embedding model
)
# documents: a list of LlamaIndex Document objects
index = PropertyGraphIndex.from_documents(
documents,
property_graph_store=graph_store,
show_progress=True,
)
response = index.query("What are the main topics discussed?")
Building a PropertyGraphIndex from documents calls the LLM and embedding model configured in LlamaIndex, so those need to be set up (for example with an API key) before this runs.
Cognee is an AI memory engine that turns documents and conversations into a knowledge graph plus embeddings. The ArcadeDB adapters are merged into the official cognee-community repository. The hybrid adapter uses ArcadeDB as both Cognee's graph database and its vector database, so one engine replaces two. A graph-only adapter (cognee-community-graph-adapter-arcadedb) is also available.
pip install cognee-community-hybrid-adapter-arcadedb
# Optional: Bolt support for faster graph operations
pip install "cognee-community-hybrid-adapter-arcadedb[bolt]"
import asyncio
import os
from cognee import config, add, cognify, search, SearchType
# Import the register module to enable ArcadeDB support
from cognee_community_hybrid_adapter_arcadedb import register
async def main():
config.set_relational_db_config({"db_provider": "sqlite"})
# Configure ArcadeDB as both vector and graph database
config.set_vector_db_config({
"vector_db_provider": "arcadedb",
"vector_db_url": os.getenv("ARCADEDB_URL", "localhost"),
"vector_db_port": int(os.getenv("ARCADEDB_HTTP_PORT", "2480")),
"vector_db_username": os.getenv("ARCADEDB_USERNAME", "root"),
"vector_db_password": os.getenv("ARCADEDB_PASSWORD", ""),
})
config.set_graph_db_config({
"graph_database_provider": "arcadedb",
"graph_database_url": os.getenv("ARCADEDB_URL", "localhost"),
"graph_database_port": int(os.getenv("ARCADEDB_HTTP_PORT", "2480")),
"graph_database_username": os.getenv("ARCADEDB_USERNAME", "root"),
"graph_database_password": os.getenv("ARCADEDB_PASSWORD", ""),
})
await add("Natural language processing (NLP) is an interdisciplinary "
"subfield of computer science and information retrieval.")
await cognify()
results = await search(query_type=SearchType.GRAPH_COMPLETION,
query_text="Tell me about NLP")
for result in results:
print(result)
asyncio.run(main())
cognify() uses an LLM to extract entities and relationships, so configure Cognee's LLM settings before running it. The full example, including the dataset handler environment variables, is in the adapter README.
arcadedb-claude is a community Claude Code plugin (MIT licensed) that gives coding agents persistent memory in an ArcadeDB server you run. It captures each prompt and answer as a turn, links the files, symbols and commits they mention, records decisions with validity windows so superseded ones are hidden rather than deleted, indexes code structure per repository, and answers recall questions with hybrid search (vectors, full-text and graph). It ships CLIs and a library for other agents too.
Run an ArcadeDB server, then in any Claude Code session:
/plugin marketplace add altugsogutoglu/arcadedb-claude
/plugin install arcadedb-claude-skills@arcadedb-claude
Set the server password if yours has one, then use the CLI for recall outside Claude Code:
# inside Claude Code
/arcadedb-config set password changeme
# from a shell (npm install -g arcadedb-claude-skills)
arcadedb-skills search "why did we drop the test api default"
arcadedb-skills decisions list --all
ArcadeDB ships a Model Context Protocol server inside the database. Once enabled, any MCP client can list databases, read the schema, run read-only queries in SQL, Cypher, Gremlin, GraphQL or MongoDB syntax, search vector, full-text and hybrid indexes, and upsert entities and relationships for agent memory. Every operation is gated by per-operation permission flags that default to read-only. The full setup, the tool list and client configuration are on ArcadeDB for AI agents.
curl -X POST -u root:playwithdata \
-H "Content-Type: application/json" \
-d '{"enabled": true, "allowReads": true}' \
http://localhost:2480/api/v1/mcp/config
claude mcp add --transport http arcadedb http://localhost:2480/api/v1/mcp \
--header "Authorization: Basic cm9vdDpwbGF5d2l0aGRhdGE="
MCP Toolbox for Databases (formerly GenAI Toolbox) is Google's open-source MCP server for databases. ArcadeDB support was merged upstream and released in Toolbox v1.7.0: an arcadedb source plus two tools, arcadedb-execute-cypher and arcadedb-execute-sql, both with a readOnly flag. Use it when your agents already go through the Toolbox for other databases; it connects over Bolt, so enable the Bolt plugin as in the LangChain section.
export PASSWORD=playwithdata
npx @toolbox-sdk/server --config tools.yaml
kind: source
name: my-arcadedb-source
type: arcadedb
uri: bolt://localhost:7687
user: root
password: ${PASSWORD}
database: "mydb"
---
kind: tool
name: query_arcadedb
type: arcadedb-execute-cypher
source: my-arcadedb-source
readOnly: true
description: Execute read-only Cypher against ArcadeDB.
The ArcadeDB data source plugin queries ArcadeDB directly from Grafana dashboards. It has a visual builder for ArcadeDB time series (auto-discovered types, fields and tags with SUM, AVG, MIN, MAX and COUNT), SQL with time macros such as $__timeFilter(col), Cypher and Gremlin with optional rendering in Grafana's Node Graph panel, template variables, and alerting through its Go backend. It needs Grafana 12.3 or later.
The plugin is a beta (latest release v1.0.0-beta.2) and is not yet in the Grafana plugin catalog, so install it from the GitHub release and allow it as an unsigned plugin.
docker run --rm -d --name grafana -p 3000:3000 \
-e GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=arcadedb-arcadedb-datasource \
-e GF_INSTALL_PLUGINS="https://github.com/ArcadeData/arcadedb-grafana-datasource/releases/download/v1.0.0-beta.2/arcadedb-arcadedb-datasource-1.0.0-beta.2.zip;arcadedb-arcadedb-datasource" \
grafana/grafana:latest
Then add the data source under Connections > Data Sources with your ArcadeDB HTTP URL (for example http://localhost:2480), database name and credentials.
SELECT ts, temperature FROM weather
WHERE $__timeFilter(ts)
ORDER BY ts
The standard distribution includes a metrics module that exposes server, engine and JVM metrics in Prometheus format at /prometheus on the HTTP port. Register the Prometheus plugin, point your scraper at it, and chart the results in Grafana. Scraping requires authentication by default.
docker run --rm -p 2480:2480 \
-e JAVA_OPTS="-Darcadedb.server.rootPassword=arcadedb -Darcadedb.server.plugins=Prometheus:com.arcadedb.metrics.prometheus.PrometheusMetricsPlugin" \
arcadedata/arcadedb:26.10.1
curl -u root:arcadedb http://localhost:2480/prometheus
scrape_configs:
- job_name: 'arcadedb'
scrape_interval: 15s
metrics_path: /prometheus
static_configs:
- targets: ['localhost:2480']
basic_auth:
username: root
password: arcadedb
Alongside the Prometheus scrape, ArcadeDB can push the same metrics to an OpenTelemetry Collector over OTLP/HTTP (port 4318, path /v1/metrics). It is off by default and turned on with two settings. Distributed tracing is a separate, optional plugin described in the observability docs.
docker run --rm -p 2480:2480 \
-e JAVA_OPTS="-Darcadedb.server.rootPassword=arcadedb -Darcadedb.serverMetrics.otlp.enabled=true -Darcadedb.serverMetrics.otlp.endpoint=http://otel-collector:4318" \
arcadedata/arcadedb:26.10.1
ArcadeDB speaks the PostgreSQL wire protocol on port 5432, so Apache Superset, Metabase, Tableau, Power BI and other tools with a PostgreSQL connector connect without a custom driver. Java tools use the standard PostgreSQL JDBC driver. To send Cypher or Gremlin from a SQL-only tool, prefix the query with the language tag, as below. The docs have a page per tool.
-- JDBC URL: jdbc:postgresql://localhost:5432/mydb
{cypher} MATCH (m:Movie)<-[a:ACTED_IN]-(p:Person) RETURN m.title, count(p)
Tell us what your stack needs on GitHub Discussions, or build it: ArcadeDB speaks HTTP/JSON, Bolt, PostgreSQL and MCP, so most clients already have a way in.
Yes. The official langchain-arcadedb package (pip install langchain-arcadedb) provides ArcadeDBGraph, which implements LangChain's GraphStore protocol and connects to ArcadeDB over the Bolt protocol. It works with GraphCypherQAChain and can import LangChain graph documents.
Yes, as a community package. llama-index-graph-stores-arcadedb on PyPI provides ArcadeDBPropertyGraphStore and ArcadeDBGraphStore and talks to ArcadeDB over its HTTP API. It is maintained by a community contributor, not by Arcade Data.
LangChain (langchain-arcadedb) and Google's MCP Toolbox for Databases connect over Bolt, so start ArcadeDB with the Bolt plugin (arcadedb.server.plugins=Bolt:com.arcadedb.bolt.BoltProtocolPlugin) and expose port 7687. Haystack, LlamaIndex, the Grafana plugin and the built-in MCP server use the HTTP API on port 2480. Cognee's hybrid adapter uses HTTP, with Bolt as an optional extra.
Yes. ArcadeDB ships a built-in MCP server, so Claude Desktop, Claude Code, Cursor or any MCP client can list databases, read the schema, query, run vector, full-text and hybrid search, and upsert entities and relationships directly, within the permissions you configure.