This MCP server provides visualization tools for Neo4j query results, allowing you to create interactive graphs, tables, charts, and timelines from your Neo4j data.
- Interactive Graph Networks: Create D3.js-powered network visualizations of nodes and relationships
- ReactFlow Lineage Visualizations: Advanced lineage diagrams with hierarchical grouping, filtering, and interactive exploration
- Data Tables: Generate formatted HTML tables from query records
- Charts: Create intelligent, interactive chart visualizations with automatic type detection
- Timelines: Create timeline visualizations (extensible)
{
mcpServers: {
"neo4j-visualizer": {
"command": "npx",
"args": ["mcp-neo4j-visualizer"]
}
}
}
Main visualization tool that can create different types of visualizations based on your data.
Parameters:
data
(required): Neo4j query results containing nodes, relationships, or recordstype
(required): Type of visualization ('graph', 'table', 'chart', 'timeline')title
(optional): Title for the visualization (default: 'Neo4j Query Results')width
(optional): Width in pixels (default: 800)height
(optional): Height in pixels (default: 600)outputPath
(optional): File path to save the HTML visualization
Specialized tool for creating interactive network graphs.
Parameters:
nodes
(required): Array of Neo4j nodesrelationships
(required): Array of Neo4j relationshipstitle
(optional): Title for the graphwidth
(optional): Width in pixelsheight
(optional): Height in pixelsoutputPath
(optional): File path to save the HTML
Specialized tool for creating formatted data tables.
Parameters:
records
(required): Array of query result recordstitle
(optional): Title for the tableoutputPath
(optional): File path to save the HTML
Generate React component code for embedding visualizations in your UI.
Parameters:
data
(required): Neo4j query resultstype
(required): Visualization type ('graph', 'table', 'chart', 'timeline')componentName
(optional): Name for the React component (default: 'Neo4jVisualization')width
(optional): Width in pixels (default: 800)height
(optional): Height in pixels (default: 600)
Get processed data and D3.js code for direct integration into existing React components.
Parameters:
data
(required): Neo4j query resultstype
(required): Visualization type ('graph', 'table', 'chart', 'timeline')
Create interactive ReactFlow-based lineage visualizations with advanced features for data lineage exploration.
Parameters:
nodes
(required): Array of Neo4j nodesrelationships
(required): Array of Neo4j relationshipslineageConfig
(optional): Configuration object for lineage visualizationdirection
(optional): Layout direction ('LR', 'TB', 'RL', 'BT') - default: 'LR'groupByProperty
(optional): Property name to group nodes by (creates parent-child relationships)showHierarchy
(optional): Enable hierarchical parent-child grouping - default: trueenableFiltering
(optional): Enable node/edge type filtering - default: trueenableExpansion
(optional): Enable expand/collapse functionality - default: truenodeSpacing
(optional): Spacing between nodes in pixels - default: 100rankSpacing
(optional): Spacing between ranks/levels in pixels - default: 150
title
(optional): Title for the visualization (default: 'Neo4j ReactFlow Lineage')width
(optional): Width in pixels (default: 1200)height
(optional): Height in pixels (default: 800)outputPath
(optional): File path to save the HTML visualization
The chart visualization system (type: 'chart'
) provides intelligent, interactive charts with automatic type detection:
-
Bar Chart (Default)
- Used for categorical data
- Interactive hover tooltips
- Color-coded bars
- Rotated labels for better readability
-
Pie Chart
- Automatically selected for categorical data with ≤10 categories and positive values
- Interactive slices with hover effects
- Built-in legend
- Percentage labels on slices
-
Line Chart
- Used for sequential/time-series data
- Smooth curve interpolation
- Interactive data points
- Ideal for trend visualization
-
Scatter Plot
- Used when data contains x,y coordinates
- Color-coded points
- Interactive tooltips showing coordinates
- Perfect for correlation analysis
-
Histogram
- Automatically selected for continuous numeric data with wide ranges (>20 data points)
- Configurable bins
- Shows data distribution
- Interactive bin tooltips
The chart system automatically processes different Neo4j data structures:
{
"records": [
{"name": "Product A", "sales": 150, "profit": 30},
{"name": "Product B", "sales": 200, "profit": 45},
{"name": "Product C", "sales": 120, "profit": 25}
]
}
// Creates bar chart using first numeric field (sales)
{
"nodes": [
{"id": "1", "labels": ["Person"], "properties": {"name": "Alice"}},
{"id": "2", "labels": ["Person"], "properties": {"name": "Bob"}},
{"id": "3", "labels": ["Company"], "properties": {"name": "ACME"}}
]
}
// Creates pie chart showing: Person: 2, Company: 1
{
"relationships": [
{"type": "WORKS_FOR", "startNodeId": "1", "endNodeId": "3"},
{"type": "KNOWS", "startNodeId": "1", "endNodeId": "2"},
{"type": "WORKS_FOR", "startNodeId": "2", "endNodeId": "3"}
]
}
// Creates bar chart showing: WORKS_FOR: 2, KNOWS: 1
- Interactive Tooltips: Hover over any chart element to see detailed information
- Modern Styling: Professional design with smooth animations and transitions
- Responsive Design: Charts adapt to different screen sizes
- Color Schemes: Uses D3's Category10 color palette for consistency
- Automatic Scaling: Smart axis scaling and formatting
- Error Handling: Graceful handling of empty or invalid data with informative messages
// First, get data from Neo4j using the neo4j-query MCP server
// Then visualize it with the neo4j-visualizer
// Sample data structure:
const sampleData = {
nodes: [
{
id: "1",
labels: ["Person"],
properties: { name: "Alice", age: 30 }
},
{
id: "2",
labels: ["Person"],
properties: { name: "Bob", age: 25 }
}
],
relationships: [
{
id: "r1",
type: "KNOWS",
startNodeId: "1",
endNodeId: "2",
properties: { since: "2020" }
}
]
};
// Use the visualize_neo4j_results tool:
{
"data": sampleData,
"type": "graph",
"title": "Social Network",
"width": 1000,
"height": 700,
"outputPath": "/path/to/social_network.html"
}
// Sample records data:
const records = [
{ name: "Alice", age: 30, city: "New York" },
{ name: "Bob", age: 25, city: "San Francisco" },
{ name: "Charlie", age: 35, city: "Chicago" }
];
// Use the create_data_table tool:
{
"records": records,
"title": "User Data",
"outputPath": "/path/to/user_table.html"
}
// Sample data for database schema lineage
const lineageData = {
nodes: [
{
id: "1",
labels: ["Database"],
properties: {
name: "ProductionDB",
type: "PostgreSQL",
environment: "production"
}
},
{
id: "2",
labels: ["Table"],
properties: {
name: "users",
database: "ProductionDB",
schema: "public"
}
},
{
id: "3",
labels: ["Table"],
properties: {
name: "orders",
database: "ProductionDB",
schema: "public"
}
},
{
id: "4",
labels: ["Column"],
properties: {
name: "user_id",
table: "users",
type: "integer",
primary_key: true
}
}
],
relationships: [
{
id: "r1",
type: "CONTAINS",
startNodeId: "1",
endNodeId: "2",
properties: {}
},
{
id: "r2",
type: "CONTAINS",
startNodeId: "1",
endNodeId: "3",
properties: {}
},
{
id: "r3",
type: "HAS_COLUMN",
startNodeId: "2",
endNodeId: "4",
properties: {}
}
]
};
// Use the create_reactflow_lineage tool:
{
"nodes": lineageData.nodes,
"relationships": lineageData.relationships,
"lineageConfig": {
"direction": "LR",
"groupByProperty": "database",
"showHierarchy": true,
"enableFiltering": true,
"enableExpansion": true,
"nodeSpacing": 120,
"rankSpacing": 180
},
"title": "Database Schema Lineage",
"width": 1400,
"height": 900,
"outputPath": "/path/to/schema_lineage.html"
}
The ReactFlow lineage visualization provides advanced features for exploring complex data relationships:
- Hierarchical Grouping: Automatically groups related nodes (e.g., tables within databases)
- Interactive Filtering: Filter nodes and edges by type with real-time statistics
- Expand/Collapse: Show or hide grouped items for better overview
- Drag & Drop: Rearrange nodes for optimal layout
- Node Details Panel: Click any node to see detailed properties
- Minimap Navigation: Overview map for large graphs
- Zoom Controls: Smooth zooming and panning
- Download Functionality: Export visualization as SVG
- Responsive Design: Adapts to different screen sizes
- Custom Node Types: Different visual styles for different node types
- Edge Labels: Relationship types displayed on connections
- Color Coding: Consistent colors for node types with legend
// Example 1: Sales data (creates bar chart)
const salesData = {
"records": [
{"product": "Laptop", "sales": 150, "profit": 30},
{"product": "Phone", "sales": 200, "profit": 45},
{"product": "Tablet", "sales": 120, "profit": 25},
{"product": "Watch", "sales": 180, "profit": 40}
]
};
// Use the visualize_neo4j_results tool:
{
"data": salesData,
"type": "chart",
"title": "Product Sales Analysis",
"width": 900,
"height": 600,
"outputPath": "/path/to/sales_chart.html"
}
// Example 2: Node distribution (creates pie chart)
const nodeData = {
"nodes": [
{"id": "1", "labels": ["Person"], "properties": {"name": "Alice"}},
{"id": "2", "labels": ["Person"], "properties": {"name": "Bob"}},
{"id": "3", "labels": ["Company"], "properties": {"name": "ACME"}},
{"id": "4", "labels": ["Company"], "properties": {"name": "TechCorp"}},
{"id": "5", "labels": ["Person"], "properties": {"name": "Charlie"}}
]
};
// This automatically creates a pie chart showing node type distribution
{
"data": nodeData,
"type": "chart",
"title": "Database Node Distribution",
"outputPath": "/path/to/node_distribution.html"
}
The server is designed to be extensible. You can:
- Add new visualization types by extending the
type
enum and adding new methods - Customize chart implementations in
createChartVisualization()
andcreateTimelineVisualization()
- Add new styling options by modifying the HTML templates
- Integrate with other visualization libraries by updating the dependencies and templates
neo4j-visualizer/
├── src/
│ └── index.ts # Main server implementation
├── build/
│ └── index.js # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md
To modify the server:
- Edit
src/index.ts
- Run
npm run build
to compile - The MCP settings will automatically use the updated version
- Server not connecting: Check that the build path in MCP settings matches the actual build output
- Visualization not rendering: Ensure your data structure matches the expected format
- Missing dependencies: Run
npm install
in the server directory
You can now use commands like:
- "Create a graph visualization of the Neo4j query results"
- "Generate a table from the database records"
- "Visualize the relationship network and save it to a file"
The visualizer will work seamlessly with your existing Neo4j infrastructure!