SOLVRO MCP - Knowledge Graph RAG System
OfficialUses LangChain for LLM orchestration and chaining within the RAG pipeline to process queries and generate responses.
Implements a state machine architecture for the RAG pipeline with multi-stage processing including guardrails, Cypher generation, retrieval, and response generation.
Provides a RAG system that converts natural language queries into Cypher queries to retrieve information from a Neo4j graph database, with support for dynamic graph schema configuration and intelligent query routing.
Integrates OpenAI models for dual LLM strategy: fast models for guardrails decision-making and accurate models for Cypher query generation and answering.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SOLVRO MCP - Knowledge Graph RAG SystemWhat courses are taught by Professor Kowalski in the Computer Science department?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
backend-mcp (separate repo) │ ml-mcp (this repo, no host ports)
┌─────────────┐ ┌──────────────┐│ ┌─────────────┐ ┌─────────────┐
│ nginx │──▶│ chat-service │┼──▶│ MCP Server │─────────▶│ Neo4j │
│ :8080 │ │ ││ │ :8005 (int.)│ │ :7687 (int.)│
└─────────────┘ └──────────────┘│ └─────────────┘ └─────────────┘
auth + UI agent │ solvro-mcp-internal mcp_networkIntelligent Query Routing - Guardrails system determines query relevance
Natural Language to Cypher - Converts questions to graph queries
Knowledge Graph RAG - Retrieval-Augmented Generation with Neo4j
MCP Protocol - Standard Model Context Protocol interface
Observability - Optional Langfuse tracing integration
Docker Ready - One command deployment
Quick Start
# Setup
just setup
cp .env.example .env # Edit with your API keys
# Run with Docker
just up # Neo4j + MCP Server, reachable only by backend-mcp (no host ports)
just up-dev # same, plus 127.0.0.1 ports for local work
just logs # View logs
just down # Stop servicesRelated MCP server: Unreal Engine Knowledge Graph MCP Server
Architecture
System Overview
backend-mcp (separate repo) │ ml-mcp (this repo, no host ports)
┌─────────────┐ ┌──────────────┐│ ┌─────────────┐ ┌─────────────┐
│ nginx │──▶│ chat-service │┼──▶│ MCP Server │─────────▶│ Neo4j │
│ :8080 │ │ ││ │ :8005 (int.)│ │ :7687 (int.)│
└─────────────┘ └──────────────┘│ └─────────────┘ └─────────────┘
auth + UI agent │ solvro-mcp-internal mcp_networkService | Container port | Reachable from | Description |
| 8005 |
| FastMCP server exposing |
| 7474/7687 |
| Knowledge graph database |
The chat UI and the HTTP API that users talk to live in backend-mcp; this repository is the
graph, the retrieval pipeline and the ETL that fills it.
Nothing is published on the host. just up-dev layers docker/compose.dev.yml on top, which
republishes the ports on 127.0.0.1 for the Neo4j browser, just kg and uv run dump-graph.
RAG Pipeline
The heart of the system is a LangGraph-based RAG pipeline that intelligently processes user queries:
Pipeline Flow:
Guardrails - Fast LLM determines if query is relevant to knowledge base
Cypher Generation - Accurate LLM converts natural language to Cypher query
Retrieval - Execute query against Neo4j knowledge graph
Response - Return structured context data
Data Pipeline
Separate ETL pipeline for ingesting documents into the knowledge graph:
Pipeline Steps:
Document Loading - PDF and text document ingestion
Text Extraction - OCR and content extraction
LLM Processing - Generate Cypher queries from content
Graph Population - Execute queries to build knowledge graph
Configuration
Copy .env.example to .env and configure:
########################################
# LLM / AI Provider Keys
########################################
# OpenAI API key (optional)
OPENAI_API_KEY=
# DeepSeek API key (optional)
DEEPSEEK_API_KEY=
# Google Generative AI / PaLM API key (optional)
GOOGLE_API_KEY=
# CLARIN LLM API key (optional, used by API & client)
CLARIN_API_KEY=
########################################
# Logging
########################################
# Root log level for every entry point: DEBUG, INFO, WARNING, ERROR or CRITICAL
LOG_LEVEL=INFO
########################################
# Langfuse Observability
########################################
LANGFUSE_SECRET_KEY=
LANGFUSE_PUBLIC_KEY=
LANGFUSE_HOST=https://cloud.langfuse.com
########################################
# Neo4j Database
########################################
# URI used by data pipeline, MCP server and graph config
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=
########################################
# Data Pipeline Runtime Controls
########################################
# Max parallel pages processed per batch
DATA_PIPELINE_MAX_CONCURRENCY=4
# Minutes after which a stuck in-progress hash can be reclaimed
DATA_PIPELINE_CLAIM_STALE_MINUTES=30
########################################
# MCP Server Networking
########################################
# Bind host for the MCP server process
MCP_BIND_HOST=0.0.0.0
# Host/port used by API and MCP client to reach the MCP server
MCP_HOST=127.0.0.1
MCP_PORT=8005Commands
# Docker Stack
just up # Neo4j + MCP server, no host ports
just up-dev # same, plus 127.0.0.1 ports for local work
just down # Stop services
just logs # View logs
just ps # Service status
just nuke # Remove everything
# Local Development
just mcp-server # Run MCP server
just kg "query" # Query knowledge graph
# Quality
just lint # Format & lint
just test # Run tests
just ci # Full CI pipeline
uv run --with pytest python -m pytest tests/data_pipeline/test_pipeline_concurrency.py -q
# Run pipeline concurrency/idempotency tests only
# Data Pipeline
just prefect-up # Start Prefect (UI on 127.0.0.1:4200 only)
just pipeline # Run ETLProject Structure
src/
├── mcp_server/ # MCP server + RAG pipeline
├── mcp_client/ # CLI client
├── config/ # Configuration
└── data_pipeline/ # Prefect ETL flows
docker/
├── compose.stack.yml # Main stack (Neo4j + MCP server, no host ports)
├── compose.dev.yml # Override that republishes the ports on 127.0.0.1
├── compose.prefect.yml # Data pipeline
├── Dockerfile.mcp # MCP server image
└── Dockerfile.prefect # Data pipeline imageQuerying the Server
The server speaks MCP over HTTP at http://mcp-server:8005/mcp on the shared network. From the
host, bring the stack up with just up-dev and use the CLI:
just kg "Czym jest nagroda dziekana?"GET http://127.0.0.1:8005/health answers 200 {"status": "healthy"} once the server can reach
Neo4j, and 503 with a reason otherwise. The user-facing chat endpoint, sessions and
authentication are in backend-mcp.
Tech Stack
Technology | Purpose |
FastMCP | Model Context Protocol server |
LangGraph | RAG state machine |
LangChain | LLM orchestration |
Neo4j | Knowledge graph database |
Langfuse | Observability (optional) |
Prefect | Data pipeline orchestration |
Docker | Containerization |
License
MIT © Solvro
This server cannot be deployed
Maintenance
Related MCP Connectors
Cloud or self-hosted knowledge for AI agents: hybrid search, reranking, GraphRAG, scoped MCP tools.
AI routing, memory, guardrails, and governance. Routes across Claude, GPT, Gemini.
Knowledge graph for AI agents. Query concepts, walk edges, get advisories.
Ingest, manage, and retrieve documents for RAG-powered AI applications
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables storage and retrieval of knowledge in a graph database format, allowing users to create, update, search, and delete entities and relationships in a Neo4j-powered knowledge graph through natural language.5-
- AlicenseNot gradedqualityCmaintenanceEnables intelligent exploration of Unreal Engine documentation through a Neo4j-based knowledge graph. Supports concept relationship searches, learning path discovery, and dependency tracking between engine features using bilingual Chinese-English queries.4 npm7ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Neo4j graph databases through natural language, supporting Cypher queries, schema management, data manipulation, and graph algorithms.MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language querying of a football knowledge graph via Neo4j, generating Cypher queries and answers using LLMs, and also provides tools to build the graph from text.-