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 
typeenum 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 buildto 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 installin 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!