iris-execute-mcp
MCP server for InterSystems IRIS that provides 8 tools including ObjectScript execution, class compilation, and unit testing with a fast DirectTestRunner.
README
IRIS Execute MCP Server
Complete MCP Integration for InterSystems IRIS - 8 Development Tools! š
The IRIS Execute MCP server provides 8 fully functional tools for comprehensive IRIS development integration, including basic operations, compilation tools, and advanced unit testing capabilities with a custom VS Code-friendly TestRunner.
Current Tool Status ā
Basic Tools (5):
- ā execute_command: Direct ObjectScript execution with I/O CAPTURE - Real output capture!
- ā execute_classmethod: Dynamic class method invocation with full parameter support
- ā get_global: Dynamic global retrieval with complex subscripts
- ā set_global: Dynamic global setting with verification
- ā get_system_info: Real-time IRIS system information
Compilation Tools (2):
- ā compile_objectscript_class: Compile one or more ObjectScript classes with error reporting
- ā compile_objectscript_package: Compile all classes in a package recursively
Unit Testing Tool (1):
- ā execute_unit_tests: Lightning-fast unit test execution using DirectTestRunner (VS Code friendly!)
Installation
Prerequisites
- Python 3.8+
- InterSystems IRIS 2024.3 or later
- VS Code with Cline extension
Step 1: Clone and Setup
# Clone the repository
git clone https://github.com/jbrandtmse/iris-execute-mcp.git
cd iris-execute-mcp
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
Step 2: Configure Environment
Create a .env file (copy from .env.example):
IRIS_HOSTNAME=localhost
IRIS_PORT=1972
IRIS_NAMESPACE=HSCUSTOM
IRIS_USERNAME=*username*
IRIS_PASSWORD=*password*
Step 3: Install IRIS Classes
- Open IRIS Studio or VS Code with ObjectScript extension
- Import classes from
src/ExecuteMCP/Core/andsrc/ExecuteMCP/TestRunner/directories - Compile the ExecuteMCP package:
Do $System.OBJ.CompilePackage("ExecuteMCP")
Cline MCP Configuration
Step 1: Open Cline MCP Settings
- Open VS Code with Cline extension
- Open Settings (Ctrl + ,)
- Search for "MCP"
- Find "Cline > MCP: Servers"
- Click "Edit in settings.json"
Step 2: Configuration (All 8 Tools)
Add this to your Cline MCP settings:
{
"iris-execute-mcp": {
"autoApprove": [
"execute_command",
"execute_classmethod",
"get_global",
"set_global",
"get_system_info",
"compile_objectscript_class",
"compile_objectscript_package",
"execute_unit_tests"
],
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "C:/iris-execute-mcp/venv/Scripts/python.exe",
"args": ["C:/iris-execute-mcp/iris_execute_mcp.py"],
"env": {
"IRIS_HOSTNAME": "localhost",
"IRIS_PORT": "1972",
"IRIS_NAMESPACE": "HSCUSTOM",
"IRIS_USERNAME": "*username*",
"IRIS_PASSWORD": "*password*"
}
}
}
Key Configuration Details:
ā
Server Name: iris-execute-mcp
ā
Script Name: iris_execute_mcp.py (consolidated server with all features)
ā
8 Tools: 5 basic + 2 compilation + 1 unit testing tool
ā
Virtual Environment: Uses isolated dependencies for reliability
ā
Environment Variables: Proper IRIS connection configuration
ā
Auto-Approve: All 8 tools approved for seamless AI workflows
Step 3: Restart and Test
- Save the settings.json file
- Restart VS Code completely
- Open a new Cline chat
- Test functionality:
- "Show me IRIS system information"
- "Execute: WRITE $ZV"
- "Execute unit tests for ExecuteMCP.Test.SampleUnitTest"
Verification
Test Server Startup
# Navigate to project directory
cd C:/iris-execute-mcp
# Activate virtual environment
venv\Scripts\activate
# Test server startup
python iris_execute_mcp.py
Expected output:
INFO - Starting IRIS Execute FastMCP Server
INFO - IRIS Available: True
INFO - ā
IRIS connectivity test passed
INFO - š FastMCP server ready for connections
Test Tools Directly
# Validate MVP implementation
python validate_mvp.py
Tool Documentation
Basic Tools
execute_command
Execute ObjectScript commands with I/O capture:
# Examples:
"Execute: WRITE $ZV"
ā Returns actual IRIS version string
"Execute: SET ^MyGlobal = 123"
ā Returns "Command executed successfully"
execute_classmethod
Dynamically invoke ObjectScript class methods:
# Examples:
"Call GetVersion on %SYSTEM.Version"
ā Returns IRIS version details
"Call ABS on %SYSTEM.SQL.Functions with parameter -456"
ā Returns 456
get_global / set_global
Manage IRIS globals dynamically:
# Set a global
"Set global ^MyApp('Config','Version') to '1.0.0'"
# Get a global
"Get the value of ^MyApp('Config','Version')"
get_system_info
Retrieve IRIS system information:
"What version of IRIS is running?"
ā Returns version, namespace, timestamp
Compilation Tools
compile_objectscript_class
Compile one or more ObjectScript classes with comprehensive error reporting.
IMPORTANT: Class names MUST include the .cls suffix for proper compilation.
# Compile single class (note the .cls suffix)
"Compile ObjectScript class MyPackage.MyClass.cls"
ā Returns compilation status and any errors
# Compile multiple classes (all with .cls suffix)
"Compile classes MyPackage.Class1.cls, MyPackage.Class2.cls"
ā Returns status for each class
# Custom compilation flags
"Compile MyPackage.MyClass.cls with flags 'bckry'"
ā b=rebuild, c=compile, k=keep source, r=recursive, y=display info
# Note: If .cls suffix is omitted, it will be automatically added
"Compile MyPackage.MyClass" ā Internally becomes "MyPackage.MyClass.cls"
compile_objectscript_package
Compile all classes in a package recursively:
# Compile entire package
"Compile ObjectScript package MyPackage"
ā Compiles all classes in package and sub-packages
# With custom flags
"Compile package MyPackage with flags 'bc'"
ā Basic compile without recursion
Unit Testing Tool
execute_unit_tests
Execute tests using the DirectTestRunner instead of %UnitTest.Manager.
ā 5,700x Performance Improvement!
This tool provides a VS Code-friendly alternative to the standard %UnitTest.Manager, eliminating file path dependencies and VS Code sync issues. The DirectTestRunner executes tests directly from compiled classes without filesystem interaction, achieving execution times of 6-21ms instead of the previous 60-120 second timeouts.
# Run all tests in a package
"Execute unit tests for ExecuteMCP.Test"
ā Executes all test classes in the package
# Run tests in a specific class
"Execute unit tests for ExecuteMCP.Test.SimpleTest"
ā Executes all test methods in the class
# Run a specific test method
"Execute unit tests for ExecuteMCP.Test.SimpleTest:TestAddition"
ā Executes only the specified test method
# Response includes:
# - Summary with pass/fail counts
# - Individual test results
# - Execution times
# - Full assertion details
Advantages over %UnitTest.Manager:
- ā 5,700x faster: 6-21ms vs 60-120 seconds
- ā No filesystem dependencies (works with VS Code auto-sync)
- ā No ^UnitTestRoot configuration required
- ā Executes from compiled classes directly
- ā Full support for %UnitTest.TestCase and assertion macros
- ā Clean JSON response format
- ā Ultra-lightweight DirectTestRunner implementation
Architecture
Technology Stack
- Python MCP Server: FastMCP framework with STDIO transport
- IRIS Backend: ExecuteMCP.Core.Command, ExecuteMCP.Core.Compile, and ExecuteMCP.Core.DirectTestRunner classes
- DirectTestRunner: Ultra-fast test execution bypassing %UnitTest.Manager complexity
- I/O Capture: Global variable mechanism avoiding STDIO conflicts
- Compilation Engine: $System.OBJ methods with comprehensive error handling
Key Innovations
- I/O Capture Breakthrough: Real output from WRITE commands via ^MCPCapture
- Dynamic Method Invocation: Call any ObjectScript class method by name
- DirectTestRunner: 5,700x faster than %UnitTest.Manager (6-21ms execution)
- Zero Timeout Architecture: All operations complete in <100ms
Performance Metrics
- ā Command Execution: 0ms with I/O capture
- ā Method Invocation: <10ms for complex calls
- ā Global Operations: Sub-millisecond response
- ā Unit Test Execution: 6-21ms (vs 60-120 seconds previously!)
- ā System Info: <50ms full details
Troubleshooting
MCP Connection Issues
If you see "MCP error -32000: Connection closed":
- Restart VS Code completely
- Or disable/enable Cline extension
- Check server is running:
python iris_execute_mcp.py
Tool Not Working
- Verify IRIS classes are compiled:
Do $System.OBJ.CompilePackage("ExecuteMCP") - Check security privileges:
Write $SYSTEM.Security.Check("%Development","USE") - Test backend directly in IRIS terminal
Path Issues
- Use absolute paths in configuration
- Verify virtual environment activation
- Check Python path points to venv Python
Unit Test Issues
Test Discovery Problems
- Symptom: Tests run but report "0 tests found"
- Cause: Test classes not compiled in IRIS
- Solution:
// Compile test classes (VS Code syncs but doesn't compile) Do $System.OBJ.CompilePackage("ExecuteMCP.Test")
Test Spec Format
- Supported Formats:
ExecuteMCP.Test- Run all tests in packageExecuteMCP.Test.SampleUnitTest- Run all tests in classExecuteMCP.Test.SampleUnitTest:TestMethod- Run specific method
Advanced Usage
Combined Workflows
# Complete test workflow with compilation
1. "Compile ObjectScript package ExecuteMCP.Test"
2. "Execute unit tests for ExecuteMCP.Test.SampleUnitTest"
3. "Get global ^TestRunnerResults to see detailed results"
Understanding Test Results
The DirectTestRunner returns structured JSON with detailed test results:
{
"status": "success",
"summary": {
"passed": 5,
"failed": 1,
"errors": 0,
"skipped": 0,
"total": 6
},
"tests": [
{
"class": "ExecuteMCP.Test.SimpleTest",
"method": "TestAddition",
"status": "passed",
"duration": 0.001
}
],
"executionTime": 0.125
}
Contributing
Contributions welcome! Please ensure:
- All tests pass
- Code follows ObjectScript conventions
- MCP tools have proper documentation
- Changes are tested with Cline
License
MIT License - See LICENSE file for details
Version History
- v3.1.3 (September 15, 2025): Enhanced DirectTestRunner with package-level testing support, cleaned up development files
- v3.1.2 (September 15, 2025): Cleaned up duplicate TestManagerCreation() method in Wrapper.cls
- v3.1.1 (September 15, 2025): Fixed ObjectScript assertion macro syntax ($$$AssertFalse ā $$$AssertNotTrue), integrated Perplexity MCP for AI-powered research
- v3.1.0 (January 11, 2025): DirectTestRunner implementation - 5,700x performance improvement!
- v3.0.0 (January 9, 2025): Refactored to 8 development tools, removed deprecated WorkMgr async pattern
- v2.4.0 (January 9, 2025): Added custom TestRunner MCP tool (10 tools total)
- v2.3.1 (January 7, 2025): Added auto-prefix feature for unit test specifications
- v2.3.0 (January 7, 2025): Fixed unit testing with WorkMgr pattern (9 tools total)
- v2.2.0 (January 3, 2025): Added 2 compilation tools
- v2.1.0 (December 30, 2024): Consolidated server with unit testing
- v2.0.0: Added unit testing capabilities
- v1.0.0: Initial 5 basic tools
Support
- GitHub Issues: https://github.com/jbrandtmse/iris-execute-mcp/issues
- Documentation: See
/documentationdirectory - Memory Bank: See
/memory-bankfor project context
Status: ā
All 8 tools operational with DirectTestRunner breakthrough
Last Updated: September 15, 2025
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.