Labsco
ravenwits logo

ArangoDB

β˜… 48

from ravenwits

A server for interacting with ArangoDB, a native multi-model database system.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredAdvanced setup

MCP Server for ArangoDB

<img src="./assets/cover.webp" width="420" alt="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

ToolCategoryRead-onlyMutates data/schemaPurpose
arango_queryQueryNoMaybeExecute general AQL with bind variables, bounded results, and query guardrails.
arango_read_queryQueryYesNoExecute read-only AQL and reject write/DDL keywords.
arango_validate_queryQueryYesNoParse and validate AQL without executing it.
arango_explain_queryQueryYesNoInspect AQL execution plans, index usage, and optimizer output.
arango_describe_databaseDiscoveryYesNoSummarize collections, counts, indexes, and sample fields.
arango_list_collectionsDiscoveryYesNoList collections in the configured database.
arango_get_collectionDiscoveryYesNoReturn collection properties, count, and indexes.
arango_create_collectionCollectionNoYesCreate document or edge collections.
arango_drop_collectionCollectionNoYesDrop a collection, requiring confirm: true.
arango_get_documentDocumentYesNoFetch one document by collection and _key.
arango_list_documentsDocumentYesNoList documents with limit and offset pagination.
arango_count_documentsDocumentYesNoCount documents in a collection.
arango_sample_documentsDocumentYesNoReturn a small random sample for schema discovery.
arango_insertDocumentNoYesInsert one document into a collection.
arango_bulk_insertDocumentNoYesInsert up to 1000 documents in one request.
arango_updateDocumentNoYesPartially update one document by _key.
arango_bulk_updateDocumentNoYesPatch up to 1000 documents by _key or _id.
arango_removeDocumentNoYesRemove one document by _key.
arango_list_indexesIndexYesNoList indexes for a collection.
arango_create_indexIndexNoYesCreate persistent, geo, TTL, or inverted indexes.
arango_list_viewsArangoSearchYesNoList ArangoSearch and search-alias Views.
arango_create_search_viewArangoSearchNoYesCreate an ArangoSearch View linked to a collection.
arango_searchArangoSearchYesNoSearch an ArangoSearch View with analyzer-aware BM25 ranking.
arango_list_analyzersAnalyzerYesNoList ArangoSearch Analyzers.
arango_create_analyzerAnalyzerNoYesCreate an ArangoSearch Analyzer.
arango_list_graphsGraphYesNoList named graphs.
arango_create_graphGraphNoYesCreate a named graph with one edge definition.
arango_insert_edgeGraphNoYesInsert an edge document with _from and _to.
arango_traverseGraphYesNoTraverse edges from a start vertex using an edge collection or named graph.
arango_shortest_pathGraphYesNoFind the shortest path between two vertices using an edge collection or named graph.
arango_backupBackupNoFilesystemBackup 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.

Disclaimer

For Development Use Only

This tool is designed for local development environments only. While technically it could connect to a production database, this would create significant security risks and is explicitly discouraged. We use it exclusively with our development databases to maintain separation of concerns and protect production data.

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.

License

This project is licensed under the MIT License - see the LICENSE file for details.