SOLVRO MCP - Knowledge Graph RAG System
Official┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Frontend │────▶│ ToPWR API │────▶│ MCP Server │────▶│ Neo4j │
│ :80 │ │ :8000 │ │ :8005 │ │ :7687 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
React + Nginx FastAPI FastMCP Knowledge GraphPWrChat UI - React 聊天机器人(会话侧边栏、深色/浅色模式切换、持久化主题)
智能查询路由 - Guardrails 系统确定查询相关性
自然语言转 Cypher - 将问题转换为图查询
知识图谱 RAG - 基于 Neo4j 的检索增强生成
MCP 协议 - 标准模型上下文协议接口
可观测性 - 可选的 Langfuse 追踪集成
Docker 就绪 - 一键部署
快速开始
# Setup
just setup
cp .env.example .env # Edit with your API keys
# Run with Docker
just up # Start Neo4j + MCP Server + API
just logs # View logs
just down # Stop services架构
系统概览
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Frontend │────▶│ ToPWR API │────▶│ MCP Server │────▶│ Neo4j │
│ :80 │ │ :8000 │ │ :8005 │ │ :7687 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
React + Nginx FastAPI FastMCP Knowledge Graph服务 | 端口 | 描述 |
| 80 | PWrChat — 由 Nginx 提供的 React 聊天机器人 UI |
| 8000 | ToPWR 应用的 FastAPI 后端 |
| 8005 | 带有 RAG 流水线的 MCP 服务器 |
| 7474/7687 | 知识图谱数据库 |
RAG 流水线
系统核心是一个基于 LangGraph 的 RAG 流水线,用于智能处理用户查询:
流水线流程:
Guardrails - 快速 LLM 判断查询是否与知识库相关
Cypher 生成 - 精确的 LLM 将自然语言转换为 Cypher 查询
检索 - 在 Neo4j 知识图谱中执行查询
响应 - 返回结构化的上下文数据
数据流水线
用于将文档摄入知识图谱的独立 ETL 流水线:
流水线步骤:
文档加载 - PDF 和文本文档摄入
文本提取 - OCR 和内容提取
LLM 处理 - 从内容生成 Cypher 查询
图填充 - 执行查询以构建知识图谱
配置
将 .env.example 复制为 .env 并进行配置:
########################################
# 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=
########################################
# 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=8005命令
# Docker Stack
just up # Start all services (including frontend at :80)
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 api # Run FastAPI
just kg "query" # Query knowledge graph
# Frontend
just frontend-install # Install npm dependencies
just frontend-dev # Start dev server at :3000 (requires running API)
just frontend-build # Build for production
# 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
just pipeline # Run ETL项目结构
src/
├── mcp_server/ # MCP server + RAG pipeline
├── mcp_client/ # CLI client
├── topwr_api/ # FastAPI backend
├── config/ # Configuration
└── data_pipeline/ # Prefect ETL flows
frontend/
├── src/
│ ├── api/ # API client
│ ├── hooks/ # useUserId, useSessions, useChat, useTheme
│ ├── components/ # Sidebar, Chat, shared UI
│ └── types/ # TypeScript mirrors of backend models
└── package.json # React + Vite + TailwindCSS
docker/
├── compose.stack.yml # Main stack (Neo4j + MCP + API + Frontend)
├── compose.prefect.yml # Data pipeline
├── Dockerfile.mcp # MCP server image
├── Dockerfile.api # FastAPI image
├── Dockerfile.frontend # React + Nginx image
└── nginx.conf # SPA fallback + API proxyAPI 使用
聊天端点
curl -X POST http://localhost:8000/api/chat \
-H "Content-Type: application/json" \
-d '{"user_id": "user1", "message": "Czym jest nagroda dziekana?"}'响应:
{
"session_id": "abc123",
"message": "Nagroda dziekana to wyróżnienie przyznawane...",
"metadata": {
"source": "mcp_knowledge_graph",
"trace_id": "xyz789"
}
}会话管理
# Get session history
curl http://localhost:8000/api/sessions/{session_id}/history
# List user sessions
curl http://localhost:8000/api/users/{user_id}/sessions技术栈
技术 | 用途 |
React 18 + TypeScript | 前端聊天 UI |
Vite + TailwindCSS v3 | 构建工具与样式 |
Nginx | 前端服务 + API 代理 |
FastMCP | 模型上下文协议服务器 |
LangGraph | RAG 状态机 |
LangChain | LLM 编排 |
Neo4j | 知识图谱数据库 |
FastAPI | REST API 后端 |
Langfuse | 可观测性(可选) |
Prefect | 数据流水线编排 |
Docker | 容器化 |
许可证
MIT © Solvro
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Solvro/ml-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server