MCP Connector

Connect to ArangoDB for Data Operations

TypeScript MCP server for ArangoDB: run AQL queries, manage collections and documents, ArangoSearch views, and graph traversal from Claude or VSCode.

Works with arangodb

91
Spark score
out of 100
Updated 2 months ago
Version 0.6.1
Models
claudeuniversal

Add to Favorites

Why it matters

Integrate ArangoDB into your AI workflows by providing core database operations. This asset enables seamless data querying, insertion, updating, and deletion, along with collection management and backup capabilities.

Outcomes

What it gets done

01

Execute AQL queries with support for binding variables.

02

Perform CRUD operations on ArangoDB collections.

03

Manage ArangoDB collections, including listing and creation.

04

Backup ArangoDB collections to JSON files.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-arangodb | bash

Capabilities

Tools your agent gets

arango_query

Execute AQL queries with optional binding variables for parameterized queries

arango_insert

Insert documents into collections with automatic key generation if not provided

arango_update

Update existing documents by collection name and document key

arango_remove

Delete documents from collections by collection name and document key

arango_backup

Back up all collections to JSON files for data backup and migration purposes

arango_list_collections

List all collections in the database with names, IDs, and types

arango_create_collection

Create a new collection with customizable type and waitForSync behavior

Overview

ArangoDB MCP Server

A TypeScript MCP server giving AI assistants full ArangoDB access - AQL queries, document and index management, ArangoSearch full-text views, and graph traversal - intended for local development databases. Reach for this in local ArangoDB development work when you want an assistant to run queries, manage documents and search views, or traverse graph relationships conversationally - not for production databases.

What it does

This is a TypeScript-based MCP server (arango-server) that gives AI assistants direct database interaction with ArangoDB. It exposes around 30 tools covering AQL query execution (general, read-only, validate-only, and explain/plan inspection), database and collection discovery, full document CRUD including bulk insert/update of up to 1000 documents per request, index management, ArangoSearch views and analyzers with BM25-ranked search, and graph operations (named graphs, edge insertion, traversal, shortest path). It also includes a arango_backup tool that writes collections to JSON files under a configurable backup root, with protections against path traversal, absolute paths, and symlink escapes.

Read-heavy tools expose bounded limit parameters and query tools support guardrails like memoryLimit, maxRuntime, and failOnWarning to keep responses agent-friendly and prevent runaway queries.

npx -y arango-server

When to use - and when NOT to

Use this when you want an AI assistant (Claude Desktop, VSCode Copilot, Cline, OpenCode, or WARP) to query and manage an ArangoDB database conversationally - listing collections, running AQL, inserting or updating documents, setting up ArangoSearch views for full-text search, or working with graphs and shortest-path queries.

Do NOT point this at a production database. The maintainers explicitly designed and use it for local development environments only - connecting it to production would create significant security risk since it can create, drop, and bulk-mutate collections and documents.

Capabilities

  • Query: execute general or read-only AQL with bind variables and guardrails, validate AQL without running it, inspect execution plans and index usage
  • Discovery: describe the database (collections, counts, indexes, sample fields), list collections, get collection properties
  • Collections: create document or edge collections, drop a collection (requires explicit confirm: true)
  • Documents: get, list (paginated), count, and randomly sample documents; insert single or bulk (up to 1000); update single or bulk by key; remove by key
  • Indexes: list indexes, create persistent, geo, TTL, or inverted indexes
  • ArangoSearch: list views, create a View linked to a collection, run analyzer-aware BM25 search; list and create Analyzers
  • Graphs: list named graphs, create a graph with an edge definition, insert edges, traverse from a start vertex, find shortest paths
  • Backup: back up collections to JSON files under a configurable, path-traversal-protected backup root

How to install

Run directly with npx, or install globally:

npx -y arango-server

Configure with environment variables ARANGO_URL, ARANGO_DB, ARANGO_USERNAME, ARANGO_PASSWORD, and optionally ARANGO_BACKUP_ROOT. Example Claude Desktop / VSCode MCP config:

{
  "mcpServers": {
    "arango": {
      "command": "npx",
      "args": ["-y", "arango-server"],
      "env": {
        "ARANGO_URL": "http://localhost:8529",
        "ARANGO_DB": "your_database_name",
        "ARANGO_USERNAME": "your_username",
        "ARANGO_PASSWORD": "your_password"
      }
    }
  }
}

Also supports VSCode Copilot agent (.vscode/mcp.json), OpenCode, and Cline VSCode extension configurations.

Who it's for

Developers working with ArangoDB in local/dev environments who want their AI assistant to run AQL, manage documents and indexes, set up full-text search views, or explore graph relationships without hand-writing every query.

Source README

MCP Server for ArangoDB

ArangoDB MCP Server

A Model Context Protocol server for ArangoDB

This is a TypeScript-based MCP server that provides database interaction capabilities through ArangoDB. It implements core database operations and allows seamless integration with ArangoDB through MCP tools. You can use it wih Claude app and also extension for VSCode that works with mcp like Cline!

Features

Tools

Tool Category Read-only Mutates data/schema Purpose
arango_query Query No Maybe Execute general AQL with bind variables, bounded results, and query guardrails.
arango_read_query Query Yes No Execute read-only AQL and reject write/DDL keywords.
arango_validate_query Query Yes No Parse and validate AQL without executing it.
arango_explain_query Query Yes No Inspect AQL execution plans, index usage, and optimizer output.
arango_describe_database Discovery Yes No Summarize collections, counts, indexes, and sample fields.
arango_list_collections Discovery Yes No List collections in the configured database.
arango_get_collection Discovery Yes No Return collection properties, count, and indexes.
arango_create_collection Collection No Yes Create document or edge collections.
arango_drop_collection Collection No Yes Drop a collection, requiring confirm: true.
arango_get_document Document Yes No Fetch one document by collection and _key.
arango_list_documents Document Yes No List documents with limit and offset pagination.
arango_count_documents Document Yes No Count documents in a collection.
arango_sample_documents Document Yes No Return a small random sample for schema discovery.
arango_insert Document No Yes Insert one document into a collection.
arango_bulk_insert Document No Yes Insert up to 1000 documents in one request.
arango_update Document No Yes Partially update one document by _key.
arango_bulk_update Document No Yes Patch up to 1000 documents by _key or _id.
arango_remove Document No Yes Remove one document by _key.
arango_list_indexes Index Yes No List indexes for a collection.
arango_create_index Index No Yes Create persistent, geo, TTL, or inverted indexes.
arango_list_views ArangoSearch Yes No List ArangoSearch and search-alias Views.
arango_create_search_view ArangoSearch No Yes Create an ArangoSearch View linked to a collection.
arango_search ArangoSearch Yes No Search an ArangoSearch View with analyzer-aware BM25 ranking.
arango_list_analyzers Analyzer Yes No List ArangoSearch Analyzers.
arango_create_analyzer Analyzer No Yes Create an ArangoSearch Analyzer.
arango_list_graphs Graph Yes No List named graphs.
arango_create_graph Graph No Yes Create a named graph with one edge definition.
arango_insert_edge Graph No Yes Insert an edge document with _from and _to.
arango_traverse Graph Yes No Traverse edges from a start vertex using an edge collection or named graph.
arango_shortest_path Graph Yes No Find the shortest path between two vertices using an edge collection or named graph.
arango_backup Backup No Filesystem Backup collections to JSON files under ARANGO_BACKUP_ROOT.

All tools return JSON text and structuredContent when successful. Read-heavy tools expose bounded limit parameters to keep responses agent-friendly. Query tools also support guardrails such as memoryLimit, maxRuntime, and failOnWarning where applicable.

Installation

Installing via NPM

To install arango-server globally via NPM, run the following command:

npm install -g arango-server

Running via NPX

To run arango-server directly without installation, use the following command:

npx -y arango-server

Configuring for VSCode Agent

To use arango-server with the VSCode Copilot agent, you must have at least VSCode 1.99.0 installed and follow these steps:

  1. Create or edit the MCP configuration file:

    • Workspace-specific configuration: Create or edit the .vscode/mcp.json file in your workspace.

    • User-specific configuration: Optionally, specify the server in the setting(mcp) VS Code user settings to enable the MCP server across all workspaces.

      Tip: You can refer here to the MCP configuration documentation of VSCode for more details on how to set up the configuration file.

  2. Add the following configuration:

    {
      "servers": {
        "arango-mcp": {
          "type": "stdio",
          "command": "npx",
          "args": ["-y", "arango-server"],
          "env": {
            "ARANGO_URL": "http://localhost:8529",
            "ARANGO_DB": "your_database_name",
            "ARANGO_USERNAME": "your_username",
            "ARANGO_PASSWORD": "your_password"
          }
        }
      }
    }
    
  3. Start the MCP server:

    • Open the Command Palette in VSCode (Ctrl+Shift+P or Cmd+Shift+P on Mac).
    • Run the command MCP: Start Server and select arango-mcp from the list.
  4. Verify the server:

    • Open the Chat view in VSCode and switch to Agent mode.
    • Use the Tools button to verify that the arango-server tools are available.
To use with Claude Desktop

Go to: Settings > Developer > Edit Config or

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%/Claude/claude_desktop_config.json

You can check out mcp documentation to set it up too.

To use with OpenCode

Add the following configuration to your OpenCode config file, such as opencode.json or opencode.jsonc:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "arango": {
      "type": "local",
      "command": ["npx", "-y", "arango-server"],
      "enabled": true,
      "environment": {
        "ARANGO_URL": "your_database_url",
        "ARANGO_DB": "your_database_name",
        "ARANGO_USERNAME": "your_username",
        "ARANGO_PASSWORD": "your_password"
      }
    }
  }
}

After restarting OpenCode, ask it to use the arango MCP tools for ArangoDB tasks.

To use with Cline VSCode Extension

Go to: Cline Extension > MCP Servers > Edit Configuration or

  • MacOS: ~/Library/Application Support/Code/User/globalStorage/cline.cline/config.json
  • Windows: %APPDATA%/Code/User/globalStorage/cline.cline/config.json

Add the following configuration to the mcpServers section:

{
  "mcpServers": {
    "arango": {
      "command": "npx",
      "args": ["-y", "arango-server"],
      "env": {
        "ARANGO_URL": "your_database_url",
        "ARANGO_DB": "your_database_name",
        "ARANGO_USERNAME": "your_username",
        "ARANGO_PASSWORD": "your_password"
      }
    }
  }
}

You can also use the above configuration to get this server working with WARP

Environment Variables

The server requires the following environment variables:

  • ARANGO_URL - ArangoDB server URL (note: 8529 is the default port for ArangoDB for local development)
  • ARANGO_DB - Database name
  • ARANGO_USERNAME - Database user
  • ARANGO_PASSWORD - Database password
  • ARANGO_BACKUP_ROOT - Optional root directory for arango_backup output. Defaults to ./backups.

Usage

You can pretty much provide any meaningful prompt and Claude will try to execute the appropriate function.

Some example propmts:

  • "List all collections in the database"
  • "Query all users"
  • "Insert a new document with name 'John Doe' and email "john@example.com' to the 'users' collection"
  • "Update the document with key '123456' or name 'Jane Doe' to change the age to 48"
  • "Create a new collection named 'products'"

Usage with Claude App

Uasge with Cline VSCode extension

Query all users:

{
  "query": "FOR user IN users RETURN user",
  "limit": 100
}

Insert a new document:

{
  "collection": "users",
  "document": {
    "name": "John Doe",
    "email": "john@example.com"
  }
}

Update a document:

{
  "collection": "users",
  "key": "123456",
  "update": {
    "name": "Jane Doe"
  }
}

Remove a document:

{
  "collection": "users",
  "key": "123456"
}

List all collections:

{
} // No parameters required

Backup database collections:

{
  "outputDir": "nightly_1", // Safe subdirectory name under ARANGO_BACKUP_ROOT. Absolute paths and slashes are rejected.
  "collection": "users", // Optional. If omitted, all collections are backed up.
  "docLimit": 1000 // Optional. Maximum documents per collection. Defaults to 1000 and is capped at 10000.
}

Set ARANGO_BACKUP_ROOT to choose where backups are stored. The server rejects path traversal, absolute paths, symlink escapes, and existing output files to mitigate arbitrary file write risks.

Create a new collection:

{
  "name": "products",
  "type": "document", // "document" or "edge" (optional, defaults to "document")
  "waitForSync": false // Optional, defaults to false
}

Drop a collection:

{
  "name": "products",
  "confirm": true
}

Note: The server is database-structure agnostic and can work with any collection names or structures as long as they follow ArangoDB's document and edge collection models.

Development

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.

  1. Clone the repository

  2. Install dependencies:

    npm run build
    
  3. For development with auto-rebuild:

    npm run watch
    

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. recommended debugging can be done by using MCP Inspector for development:

npm run inspector

The Inspector will provide a URL to access debugging tools in your browser.

Testing

npm test

The test suite includes regression coverage for the arango_backup path handling that prevents absolute paths, traversal, and symlink escapes.

To run the integration smoke test with a local Docker ArangoDB instance:

npm run test:integration

The integration test starts a temporary Docker ArangoDB instance, starts the MCP server over stdio, lists tools, verifies outputSchema, creates a temporary collection, inserts documents, queries with limit, verifies backup output stays under ARANGO_BACKUP_ROOT, rejects an absolute backup path, cleans up the collection, and stops the container.

The test container uses host port 18529 by default to avoid conflicting with a local ArangoDB on 8529. Override it with ARANGO_PORT if needed.

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.