@falkordb/mcpserver

中文文档
1.3.0发布于 2026/07/01MITES Module构建来源已验证近 30 天下载 1.3万

Model Context Protocol server for FalkorDB graph databases - enables AI assistants to query and manage graph data using natural language

原始使用文档
文档目录27 节
  1. 🎯 What is this?
  2. 🚀 Quick Start
  3. Prerequisites
  4. Running from npm
  5. Running with npx
  6. Docker Compose
  7. Installation
  8. 🤖 Claude Desktop Integration
  9. 📚 Available MCP Tools
  10. 🔍 Query Graphs
  11. 📝 Manage Data
  12. 📊 Explore Structure
  13. 🛠️ Development
  14. Commands
  15. Project Structure
  16. 🔧 Advanced Configuration
  17. Transport Modes
  18. Using with Docker
  19. Using with Remote FalkorDB
  20. Read-Only Mode for Replica Instances
  21. Running Multiple Instances
  22. 📖 Example Usage
  23. 🤝 Contributing
  24. Development Workflow
  25. 📝 License
  26. 🙏 Acknowledgments
  27. 🔗 Resources

Tests codecov License Discord X (formerly Twitter) MCP Compatible

FalkorDB MCP Server

Try Free

A Model Context Protocol (MCP) server for FalkorDB, allowing AI models to query and interact with graph databases. FalkorDB MCP Server enables AI assistants like Claude to interact with FalkorDB graph databases using natural language. Query your graph data, create relationships, and manage your knowledge graph - all through conversational AI.

🎯 What is this?

This server implements the Model Context Protocol (MCP), allowing AI models to:

  • Query graph databases using OpenCypher (with read-only mode support)
  • Create and manage nodes and relationships
  • List and explore multiple graphs
  • Delete graphs when needed
  • Read-only queries for replica instances or to prevent accidental writes

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • FalkorDB instance (running locally or remotely)
  • Claude Desktop app (for AI integration)

Running from npm

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "falkordb": {
      "command": "npx",
      "args": [
        "-y",
        "@falkordb/mcpserver@latest"
      ],
      "env": {
        "FALKORDB_HOST": "localhost",
        "FALKORDB_PORT": "6379",
        "FALKORDB_USERNAME": "",
        "FALKORDB_PASSWORD": ""
      }
    }
  }
}

Running with npx

You can run the server directly from the command line using npx:

Using inline environment variables:

# Run with stdio transport (default)
FALKORDB_HOST=localhost FALKORDB_PORT=6379 npx -y @falkordb/mcpserver

# Run with HTTP transport
MCP_TRANSPORT=http MCP_PORT=3005 FALKORDB_HOST=localhost FALKORDB_PORT=6379 npx -y @falkordb/mcpserver

Using a .env file:

# Using dotenv-cli to load environment variables from .env
npx dotenv-cli -e .env -- npx @falkordb/mcpserver

This is useful for:

  • Quick testing and development
  • Running the server standalone without Claude Desktop
  • Custom integrations and scripting

Docker Compose

Run FalkorDB and the MCP server together:

cp .env.example .env   # create env file; edit to set MCP_API_KEY, FALKORDB_PASSWORD, etc.
docker compose up -d

Note: Skipping the .env file leaves variables like MCP_API_KEY and FALKORDB_PASSWORD empty, which disables API key authentication and uses no database password.

This starts FalkorDB with health checks and persistent volumes, plus the MCP server pre-configured to connect to it.

The MCP server runs in HTTP transport mode and is exposed on localhost:3000 by default. To connect a client, configure it to use:

  • Transport: http
  • URL: http://localhost:3000
  • API Key: Set via the MCP_API_KEY environment variable (optional)

See docker-compose.yml for the exact port and configuration values.

Installation

  1. Clone and install:

    git clone https://github.com/FalkorDB/FalkorDB-MCPServer.git
    cd FalkorDB-MCPServer
    npm install
    
  2. Configure environment:

    cp .env.example .env
    

    Edit .env:

    # Environment Configuration
    NODE_ENV=development
    
    # FalkorDB Configuration
    FALKORDB_HOST=localhost
    FALKORDB_PORT=6379
    FALKORDB_USERNAME=    # Optional
    FALKORDB_PASSWORD=    # Optional
    FALKORDB_DEFAULT_READONLY=false  # Set to 'true' for read-only mode (useful for replicas)
    
    # Logging Configuration (optional)
    ENABLE_FILE_LOGGING=false
    
  3. Build the project:

    npm run build
    

🤖 Claude Desktop Integration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "falkordb": {
      "command": "node",
      "args": [
        "/absolute/path/to/falkordb-mcpserver/dist/index.js"
      ]
    }
  }
}

Restart Claude Desktop and you'll see the FalkorDB tools available!

📚 Available MCP Tools

Once connected, you can ask Claude to:

🔍 Query Graphs

"Show me all people who know each other"
"Find the shortest path between two nodes"
"What relationships does John have?"
"Run a read-only query on the replica instance"

Note: The query_graph tool now supports a readOnly parameter to execute queries in read-only mode using GRAPH.RO_QUERY. This is ideal for:

  • Running queries on replica instances
  • Preventing accidental write operations
  • Ensuring data integrity in production environments

There's also a dedicated query_graph_readonly tool that always executes queries in read-only mode.

Parameterized queries: The query_graph and query_graph_readonly tools accept an optional params object so values can be passed separately from the query text (referenced as $name), instead of string-concatenating them into Cypher. This avoids query-injection risks and malformed queries. For example, a query of MATCH (p:Person {name: $name}) RETURN p with params: { "name": "Alice" }. Parameter names (including nested map keys) must be valid identifiers. Note: FalkorDB does not allow parameters in LIMIT/SKIP clauses.

📝 Manage Data

"Create a new person named Alice who knows Bob"
"Add a 'WORKS_AT' relationship between Alice and TechCorp"

📊 Explore Structure

"List all available graphs"
"Show me the schema of the movies graph"
"What properties do Person nodes usually have in the movies graph?"
"What properties are on ACTED_IN relationships in the movies graph?"
"Delete the old_test graph"

Schema discovery: FalkorDB is schemaless, so three tools help an agent orient itself before querying:

  • get_graph_schema — returns node labels, relationship types, and (optionally) the connection topology. Each connection is { source, relationship, target } where source and target are arrays of node labels (a node may have multiple labels) and relationship is the relationship type. Topology is derived from a bounded sample of relationships (connectionSampleSize, default 10000) and can be turned off with includeConnections: false on very large graphs.
  • get_node_schema / get_relationship_schema — sample up to sampleSize (default 100) nodes/relationships of a given label/type and rank their property keys by frequency, returning the actual sampledCount alongside requestedSampleSize. Useful for spotting property naming drift.

All three schema tools always execute read-only (GRAPH.RO_QUERY), so they are safe to run against replica/read-only deployments.

A typical orientation workflow is: list_graphs → get_graph_schema → get_node_schema / get_relationship_schema → query_graph.

🛠️ Development

Commands

# Development with hot-reload
npm run dev

# Development with TypeScript execution (faster startup)
npm run dev:ts

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage report
npm run test:coverage

# Lint code
npm run lint

# Lint and auto-fix issues
npm run lint:fix

# Build for production
npm run build

# Start production server
npm start

# Inspect MCP server with debugging tools
npm run inspect

# Clean build artifacts
npm run clean

# Full CI pipeline (test, lint, build)
npm run prepublish

Project Structure

src/
├── index.ts                   # MCP server entry point
├── services/                  # Core business logic
│   ├── falkordb.service.ts   # FalkorDB operations
│   └── logger.service.ts     # Logging and MCP notifications
├── mcp/                      # MCP protocol implementations
│   ├── tools.ts             # MCP tool definitions
│   ├── resources.ts         # MCP resource definitions
│   └── prompts.ts           # MCP prompt definitions
├── errors/                   # Error handling framework
│   ├── AppError.ts          # Custom error classes
│   └── ErrorHandler.ts      # Global error handling
├── config/                   # Configuration management
│   └── index.ts             # Environment configuration
├── models/                   # TypeScript type definitions
│   ├── mcp.types.ts         # MCP protocol types
│   └── mcp-client-config.ts # Configuration models
└── utils/                    # Utility functions
    └── connection-parser.ts  # Connection string parsing

🔧 Advanced Configuration

Transport Modes

The server supports two transport modes:

stdio (default)

Used for direct integration with AI clients like Claude Desktop. Communication happens via standard input/output.

MCP_TRANSPORT=stdio

Streamable HTTP

Exposes the MCP server over HTTP for remote or networked access. Supports multiple concurrent sessions via the MCP Streamable HTTP protocol.

MCP_TRANSPORT=http
MCP_PORT=3000
MCP_API_KEY=your-secret-api-key  # Optional but recommended

When using HTTP transport, clients connect by sending a POST request with an initialize message. The server returns an Mcp-Session-Id header that must be included in subsequent requests. API key authentication is enforced via the Authorization: Bearer <key> header when MCP_API_KEY is set.

Testing HTTP transport:

  1. Start the server:

    MCP_TRANSPORT=http MCP_PORT=3000 npm start
    
  2. Use the MCP Inspector to connect:

    npx @modelcontextprotocol/inspector --transport streamable-http --url http://localhost:3000
    

Note: npm run inspect uses stdio transport. For HTTP, start the server and inspector separately as shown above.

API Key Authentication:

When MCP_API_KEY is set, all HTTP requests must include an Authorization header:

MCP_TRANSPORT=http MCP_API_KEY=my-secret-key npm start

Clients must then send:

Authorization: Bearer my-secret-key

Requests without a valid key receive a 401 Unauthorized response. Auth is only enforced in HTTP mode — stdio mode ignores MCP_API_KEY since only the parent process can communicate.

Using with Docker

Using pre-built images from Docker Hub:

# Use the latest stable release
docker pull falkordb/mcpserver:latest
docker run -p 3000:3000 \
  -e FALKORDB_HOST=host.docker.internal \
  -e FALKORDB_PORT=6379 \
  -e MCP_API_KEY=your-secret-key \
  falkordb/mcpserver:latest

# Or use the edge version (latest main branch)
docker pull falkordb/mcpserver:edge

# Or pin to a specific version
docker pull falkordb/mcpserver:1.0.0

Building locally:

docker build -t falkordb-mcpserver .
docker run -p 3000:3000 \
  -e FALKORDB_HOST=host.docker.internal \
  -e FALKORDB_PORT=6379 \
  -e MCP_API_KEY=your-secret-key \
  falkordb-mcpserver

Or use with docker-compose alongside FalkorDB:

services:
  falkordb:
    image: falkordb/falkordb:latest
    ports:
      - "6379:6379"

  mcp-server:
    image: falkordb/mcpserver:latest  # or use 'build: .' to build locally
    ports:
      - "3000:3000"
    environment:
      - FALKORDB_HOST=falkordb
      - FALKORDB_PORT=6379
      - MCP_TRANSPORT=http
      - MCP_PORT=3000
      - MCP_API_KEY=your-secret-key
    depends_on:
      - falkordb

Using with Remote FalkorDB

For cloud-hosted FalkorDB instances:

FALKORDB_HOST=your-instance.falkordb.com
FALKORDB_PORT=6379
FALKORDB_USERNAME=your-username
FALKORDB_PASSWORD=your-secure-password

Read-Only Mode for Replica Instances

If you're connecting to a FalkorDB replica instance or want to ensure no write operations are performed, you can enable read-only mode by default:

FALKORDB_DEFAULT_READONLY=true

This will make all queries execute using GRAPH.RO_QUERY by default. You can still override this per-query by setting the readOnly parameter in the query_graph tool.

Use cases:

  • Replica instances: Prevent writes to read replicas in replication setups
  • Production safety: Ensure critical data isn't accidentally modified
  • Reporting/analytics: Run queries for dashboards without risk of data changes
  • Multi-tenant environments: Provide read-only access to certain users

Running Multiple Instances

You can run multiple MCP servers for different FalkorDB instances:

{
  "mcpServers": {
    "falkordb-dev": {
      "command": "node",
      "args": ["path/to/server/dist/index.js"],
      "env": {
        "FALKORDB_HOST": "dev.falkordb.local",
        "FALKORDB_DEFAULT_READONLY": "false"
      }
    },
    "falkordb-prod-replica": {
      "command": "node", 
      "args": ["path/to/server/dist/index.js"],
      "env": {
        "FALKORDB_HOST": "replica.falkordb.com",
        "FALKORDB_DEFAULT_READONLY": "true"
      }
    }
  }
}

📖 Example Usage

Here's what you can do once connected:

// Claude can help you write queries like:
MATCH (p:Person)-[:KNOWS]->(friend:Person)
WHERE p.name = 'Alice'
RETURN friend.name, friend.age

// Or create complex data structures:
CREATE (alice:Person {name: 'Alice', age: 30})
CREATE (bob:Person {name: 'Bob', age: 25})
CREATE (alice)-[:KNOWS {since: 2020}]->(bob)

// And even analyze your graph:
MATCH path = shortestPath((start:Person)-[*]-(end:Person))
WHERE start.name = 'Alice' AND end.name = 'Charlie'
RETURN path

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 License

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

🙏 Acknowledgments

🔗 Resources


Made with ❤️ by the FalkorDB team & Katie Mulliken

版本与发布记录

@falkordb/mcpserver 共发布 8 个版本,首次发布于 2026/02/23;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.3.0latest2026/07/014 个月前
1.2.32026/06/304 个月前
1.2.22026/04/286 个月前
1.2.12026/02/248 个月前
1.2.02026/02/248 个月前
1.1.12026/02/248 个月前

关于 @falkordb/mcpserver 的常见问题

@falkordb/mcpserver 是什么?

Model Context Protocol server for FalkorDB graph databases - enables AI assistants to query and manage graph data using natural language

如何安装 @falkordb/mcpserver?

在项目目录运行 npm install @falkordb/mcpserver,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 falkordb-mcp,可以用 npx falkordb-mcp 直接运行。

@falkordb/mcpserver 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/falkordb__mcpserver 是否存在。

@falkordb/mcpserver 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@falkordb/mcpserver 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@falkordb/mcpserver 可以商用吗?

@falkordb/mcpserver 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@falkordb/mcpserver 的下载量有多少?

根据 npm 官方下载统计,@falkordb/mcpserver 在 2026/10/14 – 2026/11/12 这 30 天内被下载 13,184 次,日均约 439 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@falkordb/mcpserver 还在维护吗?

最新版本 1.3.0 发布于 2026/07/01(4 个月前);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/02/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。