ArcadeDB Integrations

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.

Last updated

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.

AI frameworksOfficial

LangChain

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.

Install

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"

Snippet

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.

AI frameworksOfficial

Haystack

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.

Install

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

Snippet

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"]
AI frameworksCommunity

LlamaIndex

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.

Install

pip install llama-index-graph-stores-arcadedb

Snippet

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.

Agent memoryUpstream

Cognee

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.

Install

pip install cognee-community-hybrid-adapter-arcadedb

# Optional: Bolt support for faster graph operations
pip install "cognee-community-hybrid-adapter-arcadedb[bolt]"

Snippet

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.

Agent memoryCommunity

arcadedb-claude: memory for Claude Code

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.

Install

Run an ArcadeDB server, then in any Claude Code session:

/plugin marketplace add altugsogutoglu/arcadedb-claude
/plugin install arcadedb-claude-skills@arcadedb-claude

Snippet

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
MCPBuilt in

ArcadeDB MCP server

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.

Enable

curl -X POST -u root:playwithdata \
  -H "Content-Type: application/json" \
  -d '{"enabled": true, "allowReads": true}' \
  http://localhost:2480/api/v1/mcp/config

Snippet: Claude Code

claude mcp add --transport http arcadedb http://localhost:2480/api/v1/mcp \
  --header "Authorization: Basic cm9vdDpwbGF5d2l0aGRhdGE="
MCPUpstream

MCP Toolbox for Databases (Google)

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.

Install and run

export PASSWORD=playwithdata
npx @toolbox-sdk/server --config tools.yaml

Snippet: 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.
ObservabilityBeta

Grafana

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.

Install

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.

Snippet

SELECT ts, temperature FROM weather
WHERE $__timeFilter(ts)
ORDER BY ts
ObservabilityBuilt in

Prometheus

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.

Enable

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

Snippet: prometheus.yml

scrape_configs:
  - job_name: 'arcadedb'
    scrape_interval: 15s
    metrics_path: /prometheus
    static_configs:
      - targets: ['localhost:2480']
    basic_auth:
      username: root
      password: arcadedb
ObservabilityBuilt in

OpenTelemetry

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.

Enable

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
BI toolsBuilt in

BI tools over the PostgreSQL protocol

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.

Snippet

-- JDBC URL: jdbc:postgresql://localhost:5432/mydb
{cypher} MATCH (m:Movie)<-[a:ACTED_IN]-(p:Person) RETURN m.title, count(p)

Missing an integration?

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.

Frequently Asked Questions

Does ArcadeDB work with LangChain?

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.

Is there a LlamaIndex integration for ArcadeDB?

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.

Which integrations need the Bolt protocol enabled?

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.

Can an AI agent use ArcadeDB without any framework?

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.