iris-execute-mcp
Provides tools for executing ObjectScript commands, invoking class methods, managing globals, retrieving system information, compiling classes and packages, and running unit tests directly on InterSystems IRIS database.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@iris-execute-mcpExecute: WRITE $ZV"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.txtStep 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/directoriesCompile 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.pyExpected output:
INFO - Starting IRIS Execute FastMCP Server
INFO - IRIS Available: True
INFO - ✅ IRIS connectivity test passed
INFO - 🚀 FastMCP server ready for connectionsTest Tools Directly
# Validate MVP implementation
python validate_mvp.pyTool 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 456get_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, timestampCompilation 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 recursionUnit 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 detailsAdvantages 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
/documentationdirectoryMemory Bank: See
/memory-bankfor project context
Status: ✅ All 8 tools operational with DirectTestRunner breakthrough
Last Updated: September 15, 2025
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jbrandtmse/iris-execute-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server