Data MCP Server
README.md
# Data MCP Server
A Model Context Protocol (MCP) server for scientific data introspection and visualization. Provides comprehensive analysis of VTK datasets with format-specific metadata extraction and interactive 3D visualization.
## โจ Features
- **10 MCP Tools** for complete dataset analysis
- **Format-Adaptive Metadata** - Specialized handlers for VTI, VTU, VTP formats
- **Interactive 3D Visualization** using Trame/VTK
- **Memory-Efficient Architecture** with automatic cleanup
- **Comprehensive Component Analysis** with detailed statistics
## ๐ Quick Start
### 1. Setup Environment
```bash
# Clone or navigate to the project directory
cd data-mcp
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On macOS/Linux
# .venv\Scripts\activate # On Windows
# Install dependencies
pip install -r requirements.txt
pip install -e .
```
### 2. Run Basic Demo
```bash
# Test MCP server functionality
python examples/walkthrough/demo_mcp_usage.py
```
### 3. Sample Data
Pre-generated VTK files in `examples/sample_data/`:
- `gaussian_simple.vti` - 3D structured grid (20ร15ร12)
- `wave_pattern.vti` - Wave pattern data
### 4. Interactive Visualization
```bash
# Launch 3D viewer (opens at localhost:8080)
python -c "
from src.data_mcp.viewers.vtk_viewer import VTKViewer
VTKViewer.show_file('examples/sample_data/gaussian_simple.vti')
"
```
### 5. Start MCP Server
```bash
# Start the MCP server (requires MCP client to connect)
python -m data_mcp.server
```
## ๐ MCP Client Configuration
### Connecting MCP Clients
Use the provided `mcp_client_config.json` to connect MCP-compatible clients:
```json
{
"mcpServers": {
"data-mcp": {
"command": "python",
"args": ["-m", "data_mcp.server"],
"cwd": "/Users/patrick.oleary/code/AI Experiments/data-mcp",
"env": {}
}
}
}
```
### Supported MCP Clients
- **Claude Desktop** - Anthropic's desktop application
- **Custom MCP applications** - Built with MCP client libraries
- **Development tools** - IDEs and testing frameworks with MCP support
### Integration Steps
1. **Copy the config** to your MCP client's configuration directory
2. **Update the `cwd` path** to match your project location
3. **Restart your MCP client** to register the server
4. **Access via client** - The server will appear as "data-mcp" with 10 available tools
## ๐งช Testing & Examples
### Comprehensive Walkthrough
```bash
# Test all 10 MCP tools with detailed output
python examples/walkthrough/manual_tool_test.py
# Test format-specific metadata adaptation
python examples/walkthrough/test_format_adaptation.py
```
### Integration Tests
```bash
# Full MCP workflow testing
python tests/integration/test_full_mcp_workflow.py
# Real MCP client connection test
python tests/integration/test_real_mcp_client.py
```
## ๐ฏ Available MCP Tools
- `upload_dataset` - Load and register dataset files
- `list_datasets` - Show all loaded datasets
- `query_dataset` - Get comprehensive dataset information
- `get_schema` - Extract detailed schema information
- `list_components` - Show available data arrays/components
- `get_component_info` - Get detailed component information
- `get_statistics` - Calculate statistics for components
- `visualize_dataset` - Launch interactive 3D viewer
- `suggest_visualizations` - Get visualization recommendations
- `remove_dataset` - Remove dataset from memory
## ๐ Usage Examples
### Programmatic Usage
```python
from data_mcp.formats.vtk_factory import VTKHandlerFactory
from data_mcp.core.dataset import Dataset
from data_mcp.viewers.vtk_viewer import VTKViewer
# Load dataset with format-specific handler
handler = VTKHandlerFactory.create_handler("path/to/file.vti")
dataset = Dataset("path/to/file.vti", handler)
dataset.introspect()
# Get comprehensive information
info = dataset.get_info()
components = dataset.list_components()
stats = dataset.get_statistics("temperature")
# Launch interactive viewer (convenience method)
VTKViewer.show_file("path/to/file.vti") # Opens at localhost:8080
# Or create viewer with dataset
viewer = VTKViewer(dataset=dataset)
viewer.show()
```
### MCP Client Usage
Connect via MCP client and use these tools:
- Upload datasets, query metadata, analyze components
- Get format-specific information (VTI/VTU/VTP)
- Launch interactive 3D visualizations
- Calculate detailed statistics
## ๐๏ธ Architecture
### Format Handler Inheritance System
- **BaseVTKHandler** - Common VTK functionality
- **VTKImageDataHandler** (.vti) - Structured grids with spacing/dimensions
- **VTKUnstructuredGridHandler** (.vtu) - Irregular meshes with cell analysis
- **VTKPolyDataHandler** (.vtp) - Surface meshes with topology analysis
- **VTKHandlerFactory** - Automatic handler selection by file extension
### Supported Formats
Currently supports VTK formats with format-specific metadata:
- **`.vti`** - ImageData (regular grids, voxel data)
- **`.vtu`** - UnstructuredGrid (irregular meshes, FEM data)
- **`.vtp`** - PolyData (surface meshes, CAD data)
### Memory Management
- **Automatic cleanup** after dataset introspection
- **Stored component data** for efficient access
- **Handler recycling** to prevent memory bloat
## ๐ Project Structure
```
data-mcp/
โโโ README.md # Project documentation
โโโ MCP_WALKTHROUGH.md # Comprehensive walkthrough guide
โโโ pyproject.toml # Python packaging configuration
โโโ requirements.txt # Dependencies
โโโ src/data_mcp/ # Main package
โ โโโ server.py # MCP server implementation
โ โโโ core/ # Core functionality
โ โ โโโ dataset.py # Dataset abstraction with cleanup
โ โ โโโ introspector.py # Dataset analysis engine
โ โ โโโ schema.py # Schema representation
โ โ โโโ visualizer.py # Visualization engine
โ โโโ formats/ # Format handlers (inheritance system)
โ โ โโโ base.py # Base format handler interface
โ โ โโโ vtk_base.py # Base VTK handler
โ โ โโโ vtk_imagedata.py # VTI handler (structured grids)
โ โ โโโ vtk_unstructured.py # VTU handler (irregular meshes)
โ โ โโโ vtk_polydata.py # VTP handler (surface meshes)
โ โ โโโ vtk_factory.py # Handler factory
โ โโโ viewers/ # Trame-based visualization
โ โ โโโ vtk_viewer.py # VTK 3D viewer
โ โโโ utils/ # Utilities
โ โโโ file_utils.py # File handling
โโโ examples/ # Usage examples
โ โโโ basic_usage.py # Basic programmatic usage
โ โโโ walkthrough/ # Walkthrough examples
โ โ โโโ demo_mcp_usage.py # Basic MCP demo
โ โ โโโ manual_tool_test.py # All 10 tools test
โ โ โโโ test_format_adaptation.py # Format adaptation demo
โ โโโ sample_data/ # Sample VTK files
โ โโโ gaussian_simple.vti # 3D structured grid
โ โโโ wave_pattern.vti # Wave pattern data
โโโ tests/ # Test suite
โโโ integration/ # Integration tests
โโโ test_formats/ # Format handler tests
```
## ๐ง Current Status
- **โ
10/10 MCP Tools Working** (100% success rate)
- **โ
Format-Adaptive Metadata** for VTI/VTU/VTP files
- **โ
Memory-Efficient Architecture** with automatic cleanup
- **โ
Interactive 3D Visualization** via Trame/VTK
- **โ
Production-Ready** for scientific data workflows
## ๐ Documentation
- **[MCP_WALKTHROUGH.md](MCP_WALKTHROUGH.md)** - Complete step-by-step walkthrough
- **[examples/walkthrough/](examples/walkthrough/)** - Hands-on examples and demos
- **[USAGE_GUIDE.md](USAGE_GUIDE.md)** - Basic usage guide
## ๐ค Contributing
This project demonstrates a production-ready MCP server with:
- Format-adaptive metadata extraction
- Memory-efficient architecture
- Comprehensive testing suite
- Interactive visualization capabilities
For extending to new formats, follow the inheritance pattern established in the VTK handlers.
## ๐ License
MIT License - see LICENSE file for details.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues