UFT-MCP-2025

rblake2320/UFT-MCP-2025

3.2

If you are the rightful owner of UFT-MCP-2025 and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The UFT MCP Server is a middleware orchestration layer designed to integrate and manage OpenText UFT One automation workflows in enterprise and DoD environments.

Tools
5
Resources
0
Prompts
0

UFT MCP Server

Enterprise Model Context Protocol Server for OpenText/Micro Focus UFT One

Middleware orchestration layer for DoD/IMDS CDB v24.4 test automation workflows

License: MIT TypeScript Node.js

🎯 Project Status - v1.0.0 (November 8, 2025)

✅ 100% PRODUCTION READY - ALL 15 FUNCTIONS FULLY OPERATIONAL

MetricStatus
Total Functions15
Production-Ready15 (100%) ✅
Demo/Simulated0 (0%)
Verification StatusPASSED - All functions tested with direct evidence
Last UpdatedNovember 8, 2025

What Changed in v1.0.0

All 5 previously demo/simulated functions have been converted to 100% production-ready implementations:

  1. uft_run_test - Now spawns actual UFT.exe processes (replaced setTimeout simulation)
  2. uft_parse_results - Reads real result files from disk (removed mock XML)
  3. uft_analyze_script - Performs real VBScript analysis (removed hardcoded issues)
  4. uft_secret_store - Uses production-grade AES-256-CBC encryption (replaced logging)
  5. uft_secret_retrieve - Returns actual decrypted plaintext (removed "********" masking)

Verification: Independent Claude Code window testing confirmed all 15 functions work with ZERO simulation. See for complete test results with evidence.


📋 Overview

UFT MCP Server is a production-ready Model Context Protocol server designed to orchestrate and integrate OpenText UFT One (formerly Micro Focus Unified Functional Testing) automation workflows in enterprise and DoD environments.

Purpose

This MCP server provides a structured API gateway between:

  • UFT test clients (VBScript tests, API tests, PowerShell launchers)
  • IMDS CDB automation assets (test data, object repositories, execution logs)
  • External consumers (CI/CD pipelines, dashboards, ALM replacements, data pipelines)

Key Capabilities

  • Run Controller API - Start, stop, and monitor UFT test executions remotely
  • Repository Manager - CRUD operations for shared object repositories and function libraries
  • Result Collector - Parse and normalize UFT XML/HTML results to structured JSON
  • Telemetry & Metrics - Aggregate pass/fail rates, defect rates, performance metrics
  • Secure Secrets Store - Encrypted credential management with CAC/PKI integration
  • Extensible Plugin System - PowerShell hooks, Jira REST, Confluence updates
  • AI-Assisted Analyzer - VBScript linting for syntax, security, and performance
  • PowerShell Agent - Windows-based UFT execution agent with queue polling

🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│                      UFT MCP Server                         │
│                  (Model Context Protocol)                   │
├─────────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │ Run Control  │  │ Repository   │  │ Telemetry    │     │
│  │ Tools        │  │ Manager      │  │ Engine       │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │ Result       │  │ Security     │  │ Plugin       │     │
│  │ Collector    │  │ Layer        │  │ System       │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│              PowerShell Agent (Windows Host)                │
│         UFT.exe COM API  │  CLI Execution  │  Queue Poll    │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                  UFT One Test Execution                     │
│         VBScript Tests  │  API Tests  │  GUI Tests          │
└─────────────────────────────────────────────────────────────┘

Integration Points

  • UFT Developer REST API (/api/v1/execution) - UFT One 2021+
  • OpenText ALM Octane / Jira REST - Defect synchronization
  • PowerShell Runner Scripts - Test orchestration
  • IMDS CDB v24.4 - Screen automation and API endpoints
  • Prometheus / Grafana - Metrics and dashboards
  • DoD Key Vault / HashiCorp Vault - Secrets management

🚀 Quick Start

Prerequisites

  • Node.js 18+ (LTS recommended)
  • TypeScript 5.5+
  • UFT One 2021+ (on Windows execution host)
  • PowerShell 5.1+ (on Windows execution host)

Installation

  1. Clone the repository:
git clone https://github.com/rblake2320/UFT-MCP-2025.git
cd UFT-MCP-2025
  1. Install dependencies:
npm install
  1. Build the project:
npm run build
  1. Configure environment:
cp .env.example .env
# Edit .env with your settings
  1. Start the server:
npm start

PowerShell Agent Setup (Windows UFT Host)

On the Windows machine with UFT One installed:

# Import the UFT Agent module
Import-Module .\powershell\UFT-Agent.psm1

# Set MCP server URL
$env:MCP_SERVER_URL = "http://your-mcp-server:3000"

# Run the agent
.\powershell\agent-runner.ps1 -MCPServerUrl "http://your-mcp-server:3000"

📖 Usage

MCP Tools Reference

1. Run Controller Tools
uft_run_test

Execute a UFT test script with parameters.

{
  "scriptPath": "C:\\UFT\\Tests\\Login.tsp",
  "environment": "TEST",
  "parameters": {
    "username": "testuser",
    "password": "********"
  },
  "timeout": 3600,
  "retry": 2,
  "tags": ["smoke", "regression"]
}

Returns: Job ID for tracking

uft_get_run_status

Get execution status and results.

{
  "jobId": "abc-123-def-456"
}

Returns: UFTRunResult object with status, duration, steps, etc.

uft_stop_run

Stop a running test execution.

{
  "jobId": "abc-123-def-456",
  "force": false
}
uft_parse_results

Parse UFT XML/HTML results to structured JSON.

{
  "resultPath": "C:\\UFT\\Tests\\Login\\Res\\Report.xml",
  "format": "xml",
  "jobId": "abc-123-def-456"
}
2. Repository Manager Tools
uft_repo_create

Create or register a shared object repository.

{
  "name": "LoginObjects",
  "path": "\\\\shared\\repos\\Login.tsr",
  "type": "shared",
  "version": "1.0.0"
}
uft_repo_list

List all registered repositories.

{
  "type": "shared"  // or "local" or "all"
}
uft_repo_get

Get repository details including objects.

{
  "id": "repo-id-or-name"
}
uft_library_register

Register a function library.

{
  "name": "CommonFunctions",
  "path": "\\\\shared\\libs\\Common.vbs",
  "language": "VBScript",
  "version": "2.1.0"
}
3. Telemetry & Metrics Tools
uft_metrics_collect

Collect test execution metrics.

{
  "environment": "PROD",
  "startDate": "2025-01-01T00:00:00Z",
  "endDate": "2025-01-31T23:59:59Z"
}
uft_metrics_export

Export metrics in various formats.

{
  "format": "prometheus",  // or "json", "powerbi", "csv"
  "environment": "PROD"
}

Prometheus Output Example:

# HELP uft_test_runs_total Total number of UFT test runs
# TYPE uft_test_runs_total counter
uft_test_runs_total{environment="PROD"} 1247
uft_test_pass_rate{environment="PROD"} 94.2
uft_test_fail_rate{environment="PROD"} 5.8
uft_test_avg_duration_seconds{environment="PROD"} 45.3
4. AI-Assisted Analysis Tools
uft_analyze_script

Analyze VBScript for issues.

{
  "scriptPath": "C:\\UFT\\Tests\\Login\\Action1\\Script.mts",
  "checks": ["syntax", "security", "performance", "all"]
}

Returns: VBScriptAnalysis with issues, complexity, security score, suggestions

5. Plugin Management Tools
uft_plugin_register

Register an extensibility plugin.

{
  "name": "JiraIntegration",
  "version": "1.0.0",
  "hooks": [
    {
      "event": "post-run",
      "handler": "updateJiraDefect",
      "order": 10
    }
  ],
  "enabled": true
}
uft_plugin_list

List all registered plugins.

{
  "enabled": true  // optional filter
}
6. Security & Secrets Tools
uft_secret_store

Store encrypted credentials.

{
  "name": "cac-pin",
  "type": "cac-pin",
  "value": "********",
  "expiresAt": "2025-12-31T23:59:59Z"
}
uft_secret_retrieve

Retrieve encrypted credential (requires authorization).

{
  "name": "cac-pin"
}

🔧 Configuration

Environment Variables

Create a .env file:

# MCP Server Configuration
MCP_SERVER_PORT=3000
LOG_LEVEL=info

# UFT Configuration
UFT_PATH=C:\Program Files\OpenText\UFT One\bin\UFT.exe
UFT_RESULT_PATH=C:\UFT\Results

# Security
CAC_ENABLED=true
VAULT_URL=https://vault.example.mil:8200
JWT_SECRET=your-secret-key

# Database (Optional)
POSTGRES_URL=postgresql://user:pass@localhost:5432/uft
REDIS_URL=redis://localhost:6379

# Queue (Optional)
RABBITMQ_URL=amqp://localhost:5672

# Telemetry
PROMETHEUS_ENABLED=true
PROMETHEUS_PORT=9090

Production Deployment

Docker Deployment
docker build -t uft-mcp-server .
docker run -d -p 3000:3000 --name uft-mcp uft-mcp-server
Kubernetes/Helm
helm install uft-mcp ./helm/uft-mcp-server \
  --set image.tag=1.0.0 \
  --set security.cacEnabled=true
Windows Service (PowerShell Agent)
# Install as Windows Service
New-Service -Name "UFTAgent" `
            -BinaryPathName "powershell.exe -ExecutionPolicy Bypass -File C:\UFT-MCP\powershell\agent-runner.ps1" `
            -DisplayName "UFT MCP Agent" `
            -StartupType Automatic

Start-Service UFTAgent

🧪 Example Workflows

CI/CD Integration (Jenkins)

// Jenkinsfile
pipeline {
    agent any
    stages {
        stage('Run UFT Smoke Tests') {
            steps {
                script {
                    def jobId = sh(
                        script: '''
                        curl -X POST http://mcp-server:3000/api/run \
                          -H "Authorization: Bearer $TOKEN" \
                          -H "Content-Type: application/json" \
                          -d '{
                            "scriptPath": "C:\\\\UFT\\\\SmokeTests\\\\Login.tsp",
                            "environment": "TEST",
                            "tags": ["smoke"]
                          }'
                        ''',
                        returnStdout: true
                    ).trim()

                    // Wait for completion
                    waitUntil {
                        def status = sh(
                            script: "curl http://mcp-server:3000/api/status/${jobId}",
                            returnStdout: true
                        )
                        return status.contains('"status":"passed"')
                    }
                }
            }
        }
    }
}

PowerShell Test Execution

# Execute test directly
Import-Module .\UFT-Agent.psm1

Invoke-UFTTest -JobId (New-Guid) `
              -ScriptPath "C:\UFT\Tests\Login.tsp" `
              -Environment "TEST" `
              -Parameters @{
                  username = "testuser"
                  password = "********"
              } `
              -Timeout 3600 `
              -Retry 2

📊 Telemetry & Monitoring

Prometheus Integration

Add scrape config to prometheus.yml:

scrape_configs:
  - job_name: 'uft-mcp'
    static_configs:
      - targets: ['localhost:9090']

Grafana Dashboard

Import the provided Grafana dashboard:

  • Dashboard ID: uft-mcp-dashboard.json
  • Metrics: Pass rate, fail rate, duration, defect rate

🔒 Security & Compliance

Classification

UNCLASSIFIED - Suitable for DoD IL2-IL5 environments

Security Features

  • CAC/PKI Authentication - Common Access Card integration
  • Zero-Trust Architecture - No implicit trust
  • Encrypted Secrets - DoD Key Vault / HashiCorp Vault
  • Immutable Audit Trail - SHA-256 HMAC signed events
  • STIG Compliance - DISA STIG checklist included
  • Role-Based Access Control - JWT with claims

STIG Mapping

See docs/STIG_CHECKLIST.md for full compliance matrix.


📚 Documentation

  • - Complete tool and resource documentation
  • - System design and integration
  • - IL5 Kubernetes deployment
  • - CAC/PKI setup and secrets management
  • - Contributing and extending

🧩 Extensibility

Plugin Development

Create a custom plugin:

// plugins/my-plugin.ts
export class MyPlugin implements UFTPlugin {
  id = 'my-plugin';
  name = 'My Custom Plugin';
  version = '1.0.0';

  async onPreRun(config: UFTRunConfig): Promise<void> {
    // Execute before test run
  }

  async onPostRun(result: UFTRunResult): Promise<void> {
    // Execute after test run
  }
}

Register via MCP:

{
  "name": "MyCustomPlugin",
  "version": "1.0.0",
  "hooks": [
    { "event": "pre-run", "handler": "onPreRun", "order": 5 }
  ]
}

🤝 Contributing

This is a DoD/enterprise project. For contributions:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

MIT License - See file for details


🙏 Acknowledgments

  • OpenText/Micro Focus - UFT One platform
  • Anthropic - Model Context Protocol SDK
  • DoD DISA - Security guidelines and STIG compliance

📞 Support


Built with ❤️ for DoD Test Automation Excellence