vtk-mcp
mcp
Uyari
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Purpose
This MCP server provides an interface to access and search VTK (Visualization Toolkit) class documentation and examples. It offers tools to retrieve C++ documentation, Python API help, and perform semantic searches over VTK example databases.
Security Assessment
Overall Risk: Low. The tool makes external network requests to fetch online VTK documentation and pull Docker images, which is expected behavior. It does not request any dangerous system permissions, and a light code scan of 12 files found no dangerous patterns, hardcoded secrets, or shell command execution vulnerabilities. The only minor consideration is that utilizing the optional RAG (Retrieval-Augmented Generation) feature requires downloading and running a large, pre-built third-party container image for the embeddings database.
Quality Assessment
The project is maintained under the reputable Kitware organization and is very recently active, with its last push occurring today. It uses the standard, permissive MIT license. However, the tool currently has very low community visibility and adoption, as indicated by only 6 GitHub stars. This means that while the code comes from a known entity, it has not yet been extensively peer-reviewed or battle-tested by the broader open-source community.
Verdict
Safe to use, though you should exercise standard caution when importing the external container image for the RAG features.
This MCP server provides an interface to access and search VTK (Visualization Toolkit) class documentation and examples. It offers tools to retrieve C++ documentation, Python API help, and perform semantic searches over VTK example databases.
Security Assessment
Overall Risk: Low. The tool makes external network requests to fetch online VTK documentation and pull Docker images, which is expected behavior. It does not request any dangerous system permissions, and a light code scan of 12 files found no dangerous patterns, hardcoded secrets, or shell command execution vulnerabilities. The only minor consideration is that utilizing the optional RAG (Retrieval-Augmented Generation) feature requires downloading and running a large, pre-built third-party container image for the embeddings database.
Quality Assessment
The project is maintained under the reputable Kitware organization and is very recently active, with its last push occurring today. It uses the standard, permissive MIT license. However, the tool currently has very low community visibility and adoption, as indicated by only 6 GitHub stars. This means that while the code comes from a known entity, it has not yet been extensively peer-reviewed or battle-tested by the broader open-source community.
Verdict
Safe to use, though you should exercise standard caution when importing the external container image for the RAG features.
MCP server for VTK
README.md
VTK MCP Server
Access VTK class documentation through a Model Context Protocol server.
Installation
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install the package
pip install .
Usage
Server
# Start stdio server (for MCP clients)
vtk-mcp-server
# Start HTTP server for direct access
vtk-mcp-server --transport http --host localhost --port 8000
Client
# Get detailed C++ class information
vtk-mcp-client info-cpp vtkActor
vtk-mcp-client info-cpp vtkPolyData
# Get Python API documentation
vtk-mcp-client info-python vtkSphere
vtk-mcp-client info-python Renderer
# Search for classes containing a term
vtk-mcp-client search Camera
vtk-mcp-client search Filter
# List available tools
vtk-mcp-client list-tools
# Connect to different server
vtk-mcp-client --host localhost --port 8000 info-cpp vtkActor
MCP Tools
The server provides four MCP tools:
get_vtk_class_info_cpp(class_name)- Get detailed C++ documentation for a VTK class from online documentationget_vtk_class_info_python(class_name)- Get Python API documentation using help() functionsearch_vtk_classes(search_term)- Search for VTK classes containing a termvector_search_vtk_examples(query)- Search VTK examples using vector similarity (requires embeddings database)
Vector Search with RAG
The server supports semantic search over VTK Python examples using vector embeddings. This requires the embeddings database.
Downloading the Embeddings Database
The pre-built embeddings database is available as a container image on GitHub Container Registry:
# Using Docker
docker create --name vtk-embeddings ghcr.io/kitware/vtk-mcp/embeddings-database:latest
docker cp vtk-embeddings:/vtk-examples-embeddings.tar.gz .
docker rm vtk-embeddings
# Using Podman
podman create --name vtk-embeddings ghcr.io/kitware/vtk-mcp/embeddings-database:latest
podman cp vtk-embeddings:/vtk-examples-embeddings.tar.gz .
podman rm vtk-embeddings
# Extract the database
tar -xzf vtk-examples-embeddings.tar.gz
Using Vector Search
After downloading and extracting the database, start the server with the database path:
# Install RAG dependencies
pip install -r rag-components/requirements.txt
# Start server with vector search enabled
vtk-mcp-server --transport http --database-path ./db/vtk-examples
# Use vector search with the client
vtk-mcp-client vector-search "render a sphere"
vtk-mcp-client vector-search "read DICOM files" --top-k 10
Docker
Using Pre-built Image
# Run with Docker/Podman
docker run -p 8000:8000 ghcr.io/kitware/vtk-mcp:latest
# Or with Podman
podman run -p 8000:8000 ghcr.io/kitware/vtk-mcp:latest
# Access server at http://localhost:8000/mcp/
Building Locally
# Build image
docker build -t vtk-mcp-server .
# Or with Podman
podman build -t vtk-mcp-server .
# Run container
docker run -p 8000:8000 vtk-mcp-server
Docker Compose
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
Development
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate
# Install in development mode
pip install -e .
# Format and lint
black src/
flake8 src/ --max-line-length=88
# Test the HTTP server and client
vtk-mcp-server --transport http &
vtk-mcp-client info-cpp vtkActor
Testing
Install test dependencies:
pip install -e ".[test]"
Run tests:
# Run all tests
pytest
# Run specific test types using markers
pytest -m unit # Unit tests only
pytest -m integration # Integration tests only
pytest -m http # HTTP transport tests
pytest -m stdio # Stdio transport tests
# Run specific test files
pytest tests/test_server_functions.py # Server unit tests
pytest tests/test_client_no_server.py # Client error handling
pytest tests/test_http_integration.py # HTTP integration
pytest tests/test_stdio_integration.py # Stdio integration
# Useful pytest options
pytest -v # Verbose output
pytest -x # Stop on first failure
pytest --tb=short # Short traceback format
pytest -k "test_name" # Run tests matching pattern
Test Structure
tests/test_server_functions.py- Unit tests for MCP tool functions (no server required)tests/test_client_no_server.py- Client error handling when server unavailabletests/test_http_integration.py- Full integration tests with HTTP transporttests/test_stdio_integration.py- Full integration tests with stdio transporttests/conftest.py- Shared test fixtures and configuration
Release Process
The package version is automatically determined from git tags using hatch-vcs.
Creating a Release
# 1. Ensure all changes are committed
git status
# 2. Create and push a new tag
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin v0.2.0
# 3. Build the package
pip install build hatch-vcs twine
python -m build
# 4. Check the package
twine check dist/*
# 5. Upload to PyPI (or TestPyPI first)
twine upload dist/*
# For TestPyPI: twine upload --repository testpypi dist/*
The version will be automatically set based on the git tag.
Authors
- Vicente Bolea @ Kitware
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi