Flexible Graphrag

general MCP Server

Python, LlamaIndex, LangChain, Docker Compose: 15 Property Graph, 4 RDF , 10 Vector, OpenSearch, Elasticsearch, Alfresco DBs. 13 data sources (9 auto-sync), KG auto-building, Ontologies, LLMs, Docling or LlamaParse doc processing, GraphRAG, RAG only, Hybrid Search, AI Chat. TypeScript React, Vue, Angular frontends, FastAPI REST backend, MCP Server.

VerifiedReviewed
generalgeneraltypescriptpythondocker
11 views140 stars31 forksApache-2.0

Why This Matters

Discovered via github-seeds:mcp-hot and last synced 3mo ago.

VerifiedReviewed
Source
github-seeds:mcp-hot
Stars
140
Last synced
3mo ago
Install
Check source

Install

Install instructions not detected yet

Check the source repository for the latest setup steps.

View source instructions
21
Tools
0
Resources
0
Prompts
Standard I/O
Transport

Available Tools (21)

Status

Notes

Endpoint

Method

Tool

Purpose

Ready

REST API and MCP Server only

markdown

plaintext` - Control format used for knowledge graph extraction ## Supported File Formats ### Document Formats - **PDF**: `.pdf` - **Docling**: Advanced layout analysis, table extraction, formula recognition, configurable OCR (EasyOCR, Tesseract, RapidOCR) - **LlamaParse**: Automatic OCR within parsing pipeline, multimodal vision processing - **Microsoft Office**: `.docx`, `.xlsx`, `.pptx` and legacy formats (`.doc`, `.xls`, `.ppt`) - **Docling**: DOCX, XLSX, PPTX structure preservation and content extraction - **LlamaParse**: Full Office suite support including legacy formats and hundreds of variants - **Web Formats**: `.html`, `.htm`, `.xhtml` - **Docling**: HTML/XHTML markup structure analysis - **LlamaParse**: HTML/XHTML content extraction and formatting - **Data Formats**: `.csv`, `.tsv`, `.json`, `.xml` - **Docling**: CSV structured data processing - **LlamaParse**: CSV, TSV, JSON, XML with enhanced table understanding - **Documentation**: `.md`, `.markdown`, `.asciidoc`, `.adoc`, `.rtf`, `.txt`, `.epub` - **Docling**: Markdown, AsciiDoc technical documentation with markup preservation - **LlamaParse**: Extended format support including RTF, EPUB, and hundreds of text format variants ### Image Formats - **Standard Images**: `.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.webp`, `.tiff`, `.tif` - **Docling**: OCR text extraction with configurable OCR backends (EasyOCR, Tesseract, RapidOCR) - **LlamaParse**: Automatic OCR with multimodal vision processing and context understanding ### Audio Formats - **Audio Files**: `.wav`, `.mp3`, `.mp4`, `.m4a` - **Docling**: Automatic speech recognition (ASR) support - **LlamaParse**: Transcription and content extraction for MP3, MP4, MPEG, MPGA, M4A, WAV, WEBM ### Processing Intelligence - **Parser Selection**: - **Docling** (default, free): Local processing with specialized CV models (DocLayNet layout analysis, TableFormer for tables), configurable OCR backends (EasyOCR/Tesseract/RapidOCR), optional local VLM support (Granite-Docling, SmolDocling, Qwen2.5-VL, Pixtral) - **LlamaParse** (cloud API, 3 credits/page): Automatic OCR in parsing pipeline, supports hundreds of file formats, fast mode (OCR-only), default mode (proprietary LlamaCloud model), premium mode (proprietary VLM mixture), multimodal mode (bring your own API keys: OpenAI GPT-4o, Anthropic Claude 3.5/4.5 Sonnet, Google Gemini 1.5/2.0, Azure OpenAI) - **Output Formats**: - **Flexible GraphRAG** saves both markdown and plaintext, then automatically selects which to use for processing (knowledge graph extraction, vector embeddings, and search indexing) - defaults to markdown for tables, plaintext for text-heavy docs - override with `PARSER_FORMAT_FOR_EXTRACTION` - **Docling** supports: Markdown, JSON (lossless with bounding boxes and provenance), HTML, plain text, and DocTags (specialized markup preserving multi-column layouts, mathematical formulas, and code blocks) - **LlamaParse** supports: Markdown, plain text, raw JSON, XLSX (extracted tables), PDF, images (extracted separately), and structured output (beta - enforces custom JSON schema for strict data model extraction) - **Format Detection**: Automatic routing based on file extension and content analysis ## Database Configuration Flexible GraphRAG uses three types of databases for its hybrid search capabilities. Each can be configured independently via environment variables. ### Search Databases (Full-Text Search) Set `SEARCH_DB` to select the store and `SEARCH_BACKEND=llamaindex` or `langchain` for the framework. - **BM25 (Built-in)**: Local in-memory BM25 full-text search with TF-IDF ranking - Dashboard: None (file-based) - Configuration: ```bash SEARCH_DB=bm25 BM25_SEARCH_DB_CONFIG={"persist_dir": "./bm25_index"} ``` - **Elasticsearch**: Enterprise search engine with advanced analyzers, faceted search, and real-time analytics - Dashboard: Kibana (http://localhost:5601) - Configuration: ```bash SEARCH_DB=elasticsearch ELASTICSEARCH_SEARCH_DB_CONFIG={"hosts": ["http://localhost:9200"], "index_name": "hybrid_search"} ``` - **OpenSearch**: AWS-led open-source fork with native hybrid scoring (vector + BM25) and k-NN algorithms - Dashboard: OpenSearch Dashboards (http://localhost:5601) - Configuration: ```bash SEARCH_DB=opensearch OPENSEARCH_SEARCH_DB_CONFIG={"hosts": ["http://localhost:9201"], "index_name": "hybrid_search"} ``` - **None**: Disable full-text search (vector search only) - Configuration: ```bash SEARCH_DB=none ``` ### Vector Databases (Semantic Search) Set `VECTOR_DB` to select the store and `VECTOR_BACKEND=llamaindex` or `langchain` for the framework. When switching embedding models, delete existing vector indexes — dimensions differ by provider. See [docs/DATABASES/VECTOR-DATABASES/VECTOR-DIMENSIONS.md](docs/DATABASES/VECTOR-DATABASES/VECTOR-DIMENSIONS.md) for cleanup instructions. #### Supported Vector Databases - **Neo4j**: Can be used as vector database with separate vector configuration - Dashboard: Neo4j Browser (http://localhost:7474) - Configuration: ```bash VECTOR_DB=neo4j NEO4J_VECTOR_DB_CONFIG={"uri": "bolt://localhost:7687", "username": "neo4j", "password": "your_password", "index_name": "hybrid_search_vector"} ``` - **Qdrant**: Dedicated vector database with advanced filtering - Dashboard: Qdrant Web UI (http://localhost:6333/dashboard) - Configuration: ```bash VECTOR_DB=qdrant QDRANT_VECTOR_DB_CONFIG={"host": "localhost", "port": 6333, "collection_name": "hybrid_search"} ``` - **Elasticsearch**: Can be used as vector database with separate vector configuration - Dashboard: Kibana (http://localhost:5601) - Configuration: ```bash VECTOR_DB=elasticsearch ELASTICSEARCH_VECTOR_DB_CONFIG={"hosts": ["http://localhost:9200"], "index_name": "hybrid_search_vectors"} ``` - **OpenSearch**: Can be used as vector database with separate vector configuration - Dashboard: OpenSearch Dashboards (http://localhost:5601) - Configuration: ```bash VECTOR_DB=opensearch OPENSEARCH_VECTOR_DB_CONFIG={"hosts": ["http://localhost:9201"], "index_name": "hybrid_search_vectors"} ``` - **Chroma**: Open-source vector database with dual deployment modes - Dashboard: Swagger UI (http://localhost:8001/docs/) (HTTP mode) - Configuration (Local Mode): ```bash VECTOR_DB=chroma CHROMA_VECTOR_DB_CONFIG={"persist_directory": "./chroma_db", "collection_name": "hybrid_search"} ``` - Configuration (HTTP Mode): ```bash VECTOR_DB=chroma CHROMA_VECTOR_DB_CONFIG={"host": "localhost", "port": 8001, "collection_name": "hybrid_search"} ``` - **Milvus**: Cloud-native, scalable vector database for similarity search - Dashboard: Attu (http://localhost:3003) - Configuration: ```bash VECTOR_DB=milvus MILVUS_VECTOR_DB_CONFIG={"host": "localhost", "port": 19530, "collection_name": "hybrid_search"} ``` - **Weaviate**: Vector search engine with semantic capabilities and data enrichment - Dashboard: Weaviate Console (http://localhost:8081/console) - Configuration: ```bash VECTOR_DB=weaviate WEAVIATE_VECTOR_DB_CONFIG={"url": "http://localhost:8081", "index_name": "HybridSearch"} ``` - **Pinecone**: Managed vector database service optimized for real-time applications - Dashboard: Pinecone Console (web-based) - Configuration: ```bash VECTOR_DB=pinecone PINECONE_VECTOR_DB_CONFIG={"api_key": "your_api_key", "region": "us-east-1", "cloud": "aws", "index_name": "hybrid-search"} ``` - **PostgreSQL**: Traditional database with pgvector extension for vector similarity search - Dashboard: pgAdmin (http://localhost:5050) - Configuration: ```bash VECTOR_DB=postgres POSTGRES_VECTOR_DB_CONFIG={"host": "localhost", "port": 5433, "database": "postgres", "username": "postgres", "password": "your_password"} ``` - **LanceDB**: Modern, lightweight vector database designed for high-performance ML applications - Dashboard: LanceDB Viewer (http://localhost:3005) - Configuration: ```bash VECTOR_DB=lancedb LANCEDB_VECTOR_DB_CONFIG={"uri": "./lancedb", "table_name": "hybrid_search"} ``` #### RAG without GraphRAG For faster document ingest processing (no graph extraction), and hybrid search with only full text + vector, configure: ```bash VECTOR_DB=qdrant # Any vector store SEARCH_DB=elasticsearch # Any search engine PG_GRAPH_DB=none ``` ### Property Graph Databases (Knowledge Graph / GraphRAG) Set `PG_GRAPH_DB` to select the store and `GRAPH_BACKEND=llamaindex` or `langchain` for the framework where both are supported. **LangChain-only** stores (ArangoDB, Apache AGE, HugeGraph, SurrealDB, TigerGraph, Cosmos Gremlin) route property-graph ingestion and retrieval through LangChain adapters regardless of other env defaults. **LlamaIndex-only** stores (Spanner): when `PG_GRAPH_DB=spanner`, startup forces `GRAPH_BACKEND=llamaindex` and ignores `GRAPH_BACKEND=langchain`. - **Neo4j Property Graph**: Primary knowledge graph storage with Cypher querying - Dashboard: Neo4j Browser (http://localhost:7474) - Configuration: ```bash PG_GRAPH_DB=neo4j NEO4J_GRAPH_DB_CONFIG={"uri": "bolt://localhost:7687", "username": "neo4j", "password": "your_password"} ``` - **ArcadeDB**: Multi-model database supporting graph, document, key-value, and search with SQL and Cypher - Dashboard: ArcadeDB Studio (http://localhost:2480) - Configuration: ```bash PG_GRAPH_DB=arcadedb ARCADEDB_GRAPH_DB_CONFIG={"host": "localhost", "port": 2480, "username": "root", "password": "password", "database": "flexible_graphrag", "query_language": "sql"} ``` - **FalkorDB**: High-performance graph database using GraphBLAS; purpose-built for LLM / GraphRAG - Dashboard: FalkorDB Browser (http://localhost:3001) - Configuration: ```bash PG_GRAPH_DB=falkordb FALKORDB_GRAPH_DB_CONFIG={"url": "falkor://localhost:6379", "database": "falkor"} ``` - **Ladybug**: Embedded property graph database (Cypher, single `.lbug` file) with optional structured schema and HNSW vector index on chunks; Explorer UI via Docker (port 7003) - Configuration: ```bash PG_GRAPH_DB=ladybug LADYBUG_GRAPH_DB_CONFIG={"db_dir": "./ladybug", "db_file": "database.lbug", "use_vector_index": true, "has_structured_schema": false, "strict_schema": false} ``` - **MemGraph**: Real-time graph database with streaming support and advanced graph algorithms - Dashboard: MemGraph Lab (http://localhost:3002) - Configuration: ```bash PG_GRAPH_DB=memgraph MEMGRAPH_GRAPH_DB_CONFIG={"url": "bolt://localhost:7687", "username": "", "password": ""} ``` - **NebulaGraph**: Distributed graph database for large-scale data with horizontal scalability - Dashboard: NebulaGraph Studio (http://localhost:7001) - Configuration: ```bash PG_GRAPH_DB=nebula NEBULA_GRAPH_DB_CONFIG={"space": "flexible_graphrag", "host": "localhost", "port": 9669, "username": "root", "password": "nebula"} ``` - **Amazon Neptune**: Fully managed graph database service supporting property graph and RDF models - Dashboard: Graph-Explorer (http://localhost:3007) or Neptune Workbench (AWS Console) - Configuration: ```bash PG_GRAPH_DB=neptune NEPTUNE_GRAPH_DB_CONFIG={"host": "your-cluster.region.neptune.amazonaws.com", "port": 8182} ``` - **Amazon Neptune Analytics**: Serverless graph analytics with openCypher support - Dashboard: Graph-Explorer (http://localhost:3007) or Neptune Workbench (AWS Console) - Configuration: ```bash PG_GRAPH_DB=neptune_analytics NEPTUNE_ANALYTICS_GRAPH_DB_CONFIG={"graph_identifier": "g-xxxxx", "region": "us-east-1"} ``` - **Google Cloud Spanner Graph** *(LlamaIndex only)*: Managed relational + property graph (GQL). Uses `llama-index-spanner` — install with `uv pip install -e ".[spanner-extras]"` then `uv pip uninstall llama-index` (see [Optional](#optional) under Prerequisites). LangChain is not supported for this store (`langchain-google-spanner` pins incompatible `langchain-core`). - Setup: [docs/DATABASES/GRAPH-DATABASES/SPANNER-SETUP.md](docs/DATABASES/GRAPH-DATABASES/SPANNER-SETUP.md) - Configuration: ```bash PG_GRAPH_DB=spanner # GRAPH_BACKEND=llamaindex is forced for Spanner (LlamaIndex-only); langchain is ignored SPANNER_GRAPH_DB_CONFIG={"project_id": "my-gcp-project", "instance_id": "my-spanner-instance", "database_id": "my-database", "graph_name": "knowledge_graph", "credentials_file": "./gcs.json"} ``` - **ArangoDB** *(LangChain only)*: Multi-model database with AQL graph queries - Dashboard: ArangoDB Web UI (http://localhost:8529) - Configuration: ```bash PG_GRAPH_DB=arangodb ARANGODB_GRAPH_DB_CONFIG={"url": "http://localhost:8529", "database": "flexible_graphrag", "username": "root", "password": "password"} ``` - **Apache AGE** *(LangChain only)*: PostgreSQL extension for graph data via Cypher - Dashboard: pgAdmin (http://localhost:5050) - Configuration: ```bash PG_GRAPH_DB=apache_age APACHE_AGE_GRAPH_DB_CONFIG={"host": "localhost", "port": 5434, "database": "flexible_graphrag_age", "username": "postgres", "password": "password", "graph_name": "knowledge_graph"} ``` - **HugeGraph** *(LangChain only)*: Distributed graph database with Gremlin and openCypher - Dashboard: HugeGraph Hubble (http://localhost:8085) - Configuration: ```bash PG_GRAPH_DB=hugegraph HUGEGRAPH_GRAPH_DB_CONFIG={"host": "localhost", "port": 8082, "database": "hugegraph"} ``` - **SurrealDB** *(LangChain only)*: Multi-model database with SurrealQL graph queries - Dashboard: Surrealist (http://localhost:8011) - Configuration: ```bash PG_GRAPH_DB=surrealdb SURREALDB_GRAPH_DB_CONFIG={"url": "ws://localhost:8010/rpc", "namespace": "test", "database": "flexible_graphrag", "username": "root", "password": "root"} ``` - **TigerGraph** *(LangChain only)*: Distributed graph database with GSQL - Dashboard: GraphStudio (http://localhost:14240) - Configuration: ```bash PG_GRAPH_DB=tigergraph TIGERGRAPH_GRAPH_DB_CONFIG={"host": "http://localhost", "port": 14240, "restpp_port": 9002, "database": "MyGraph", "username": "tigergraph", "password": "tigergraph"} ``` - **Cosmos Gremlin** *(LangChain only)*: Azure Cosmos DB for Gremlin API - Configuration: ```bash PG_GRAPH_DB=cosmos_gremlin COSMOS_GREMLIN_GRAPH_DB_CONFIG={"url": "ws://localhost:8182/gremlin"} ``` - **None**: Disable knowledge graph extraction for RAG-only mode - Configuration: ```bash PG_GRAPH_DB=none ``` ## Ontology and RDF Support Flexible GraphRAG supports RDF/RDFS/OWL ontologies to guide knowledge graph extraction, with optional RDF graph store backends. Ontology-guided extraction works with **any** configured store — property graph, RDF graph store, or both. - Load OWL/RDFS ontologies (`owl:Class`, `owl:ObjectProperty`, `owl:DatatypeProperty`, `rdfs:domain`, `rdfs:range`) to constrain entity/relation extraction; OWL is supported but not required - Works with all 15 property graph databases — no RDF store required to use ontology-guided extraction - Full pipeline for all 4 RDF graph stores: UI document ingest → KG extraction → RDF storage; auto incremental sync; Hybrid Search and AI Query/Chat fuse RDF store results alongside vector, BM25, and property graph results - SPARQL 1.1 queries; RDF 1.2 triple terms and relation annotations (`{

Polling

Ready

POST

Export knowledge graph as RDF *(501 stub — not yet implemented)*

cpu

cuda

rapidocr

easyocr

GRAPH_BACKEND

`llamaindex` \

KG_EXTRACTOR_BACKEND

`llamaindex` \

UI

URL

VECTOR_BACKEND

`llamaindex` \

DELETE

Deregister an RDF store

CHUNKER_BACKEND

`llamaindex` \

Variable

Options

GET

List registered RDF stores

cuda

mps` — control GPU vs CPU processing - `SAVE_PARSING_OUTPUT=true` — save intermediate parsing results for inspection (works for both parsers) - `PARSER_FORMAT_FOR_EXTRACTION=auto

SEARCH_BACKEND

`llamaindex` \

tesserocr

ocrmac` - Multi-language support (English, German, French, Spanish, Czech, Russian, Chinese, Japanese, etc.) - Configured via: `DOCUMENT_PARSER=docling` - `DOCLING_DEVICE=auto

RETRIEVAL_FUSION

`llamaindex` \

Works Well With - Skills

schema

When the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user mentions "schema markup," "structured data," "JSON-LD," "rich snippets," "schema.org," "FAQ schema," "product schema," "review schema," "breadcrumb schema," "Google rich results," "knowledge panel," "star ratings in search," or "add structured data." Use this whenever someone wants their pages to show enhanced results in Google. For broader SEO issues, see seo-audit. For AI search

1104 starsHas guide

social

When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms, or wants to do social listening and engagement triage. Also use when the user mentions 'LinkedIn post,' 'Twitter thread,' 'social media,' 'content calendar,' 'social scheduling,' 'engagement,' 'viral content,' 'what should I post,' 'repurpose this content,' 'tweet ideas,' 'LinkedIn carousel,' 'social media strategy,' 'grow my following,' 'Tik

1104 starsHas guide

revops

When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. Also use when the user mentions 'RevOps,' 'revenue operations,' 'lead scoring,' 'lead routing,' 'MQL,' 'SQL,' 'pipeline stages,' 'deal desk,' 'CRM automation,' 'marketing-to-sales handoff,' 'data hygiene,' 'leads aren't getting to sales,' 'pipeline management,' 'lead qualification,' or 'when should marketing hand off to sales.' Use this for anything involving the systems and proc

1104 starsHas guide

referrals

When the user wants to create, optimize, or analyze a referral program, affiliate program, or word-of-mouth strategy. Also use when the user mentions 'referral,' 'affiliate,' 'ambassador,' 'word of mouth,' 'viral loop,' 'refer a friend,' 'partner program,' 'referral incentive,' 'how to get referrals,' 'customers referring customers,' or 'affiliate payout.' Use this whenever someone wants existing users or partners to bring in new customers. For launch-specific virality, see launch.

1104 starsHas guide