A Model Context Protocol (MCP) server for executing Julia code through Pluto.jl notebooks. Built with direct integration using the @plutojl/rainbow package.
- Julia Code Execution: Run Julia code with comprehensive result capture
- Type Inference: Automatic type detection for Julia values (Int64, Float64, String, etc.)
- Package Management: Install and list Julia packages
- State Monitoring: Real-time worker status and execution tracking
- Session Management: Persistent Julia sessions across requests
- Error Handling: Robust error capture and reporting
- MCP Compliance: Full Model Context Protocol implementation
- Node.js 18+
- Julia 1.6+
- Pluto.jl package
-
Install Julia and Pluto.jl:
julia -e 'using Pkg; Pkg.add("Pluto")'
-
Start Pluto server:
julia -e 'using Pluto; Pluto.run(host="127.0.0.1", port=1234, launch_browser=false, require_secret_for_open_links=false, require_secret_for_access=false)'
-
Install and build:
npm install npm run build
Start the MCP server:
npm start
Development mode:
npm run dev
Run tests:
npm run test:integration
julia_execute
- Execute Julia code with full output capturejulia_eval
- Evaluate expressions with type inference
julia_install_package
- Install Julia packagesjulia_list_packages
- List installed packages with status
julia_worker_state
- Get worker status and running cellsjulia_interrupt
- Interrupt long-running executionsjulia_get_cell_result
- Get detailed cell results by ID
// Execute Julia code
{
"method": "tools/call",
"params": {
"name": "julia_execute",
"arguments": {
"code": "x = 5 + 3; println(\"Result: $x\"); x"
}
}
}
// Returns:
{
"result": "8",
"output": "Result: 8\n",
"execution_time": 1234,
"error": null
}
Simplified Design:
- Single
SimplifiedJuliaMCPServer
class - Direct integration with Rainbow's
Host
andWorker
classes - No custom manager layers - reduced from 1080+ to ~600 lines of code
Key Components:
- Rainbow Host: Manages Pluto server connections and worker lifecycle
- Rainbow Worker: Handles code execution and state monitoring
- MCP Protocol: Standard tools/resources/prompts implementation
Environment variables:
PLUTO_HOST
: Pluto server host (default: 127.0.0.1)PLUTO_PORT
: Pluto server port (default: 1234)
npm run build # Compile TypeScript
npm run lint # Run ESLint
npm run format # Format with Prettier
Integration tests cover all 7 MCP tools with detailed console output. Tests require a running Pluto server on localhost:1234.
npm run test:integration
MIT License
- Pluto.jl - Reactive Julia notebooks
- @plutojl/rainbow - Programmatic Pluto API
- Model Context Protocol - Standard for AI-tool integration