Skip to main content
Glama
VaruniAlwis

plsql-test-mcp

by VaruniAlwis

PL/SQL Test MCP

MCP server for IFS Cloud PL/SQL unit testing — mirrors the architecture of integration-testing-mcp and delegates deploy/run steps to ifs-f1-codegen-dev.

Develop MCP to identify if a function/procedure is unit testable and generate the test.

Workflow

flowchart TD
    A[checkUnitTestability] --> B{Testable?}
    B -->|No| C[annotateIgnoreUnitTest]
    B -->|Yes| D[generateUnitTest]
    D --> E[generate_code / generate_and_deploy via ifs-f1-codegen-dev]
    E --> F[Verify test passes]
    C --> E

Related MCP server: mcp-playwright-test

Tools

Tool

Description

checkUnitTestability

Parse .plsql/.plsvc and assess pltst testability

annotateIgnoreUnitTest

Add @IgnoreUnitTest <reason> before a method

generateUnitTest

Analyze method body, generate deploy-safe mocks, data-driven FOR loops, and assertions

processUnitTestCoverage

Batch: annotate all non-testable methods + generate all missing auto-safe tests for one file

runUnitTest

Return generate_and_deploy instructions for ifs-f1-codegen-dev

runPlsqlTestWorkflow

End-to-end: check → annotate OR generate → run prep

getIgnoreUnitTestRules

List supported ignore reasons

Supported @IgnoreUnitTest reasons

Reason

When to use

TrivialFunction

Simple getter/pass-through

MethodOverride

@Override CRUD/framework methods

DMLOperation

INSERT/UPDATE/DELETE/MERGE in body

NoOutParams

Procedure with no OUT/IN OUT params

DynamicStatement

EXECUTE IMMEDIATE / dynamic SQL

BLOBDataType / CLOBDataType

Large object types

PLSQLInSQL

PL/SQL embedded in SQL views

PipelinedFunction

Pipelined table functions

Cursor integration

Add to Cursor MCP settings:

{
  "mcpServers": {
    "plsql-test": {
      "command": "node",
      "args": ["C:/ifsapps-new/plsql-test-mcp/dist/index.js"]
    }
  }
}

Or after publishing:

{
  "mcpServers": {
    "plsql-test": {
      "command": "npx",
      "args": ["-y", "@ifs/plsql-test-mcp@0.1.0"]
    }
  }
}

Development

cd c:/ifsapps-new/plsql-test-mcp
npm install
npm run build
npm start

Deploy-safe generation (v0.1.4)

The generator avoids patterns that break AV_*_TST compilation:

  • No UTF-8 BOM on written .pltst files

  • VARCHAR2(2000) for all generated IS-section locals (bare VARCHAR2 causes PLS-00215)

  • Pre-write validation rejects bare VARCHAR2, BOM, and post-loop generated tests

  • Skips %ROWTYPE return types and SELECT * INTO %ROWTYPE (manual test required)

  • Skips CRUD modify methods using Get_Object_By_Id___ + Unpack___

  • Expression SELECT columns (round(cast(...))) mapped to safe mock column names

  • FOR loop column order matches IFS convention: expected_ | input_param_

  • Not-found cases stay inside the FOR loop (no post-loop statements)

  • Skips @IgnoreUnitTest when the method already has a UNITTEST block

  • Special mocks for Get_Wp_Id, Has_Skills_Assigned_In_Turn, Get_Fault_Id_From_Record_Id, Get_AOS_Days, Get_Hm_Contract_Id_By_Barcode

Batch coverage example

processUnitTestCoverage({
  sourceFile: "C:/ifsapps-new/workspace/adcom/source/adcom/database/AvFault.plsql",
  workspace: "C:/ifsapps-new/workspace",
  jiraKey: "PJZ-12345",
  confirmed: true
})

Example

Analyze McprActivityRelation.plsql:

checkUnitTestability({
  sourceFile: "C:/ifsapps-new/workspace/prjrep/source/prjrep/database/McprActivityRelation.plsql",
  methodName: "Is_Circular_Link___"
})

Generate test:

generateUnitTest({
  sourceFile: ".../McprActivityRelation.plsql",
  methodName: "Is_Circular_Link___",
  workspace: "C:/ifsapps-new/workspace",
  jiraKey: "PJZ-12345",
  confirmed: true
})

Run via ifs-f1-codegen-dev:

generate_and_deploy({
  input_files: [".../McprActivityRelation.plsql", ".../McprActivityRelation.pltst"],
  environment_key: "26r1-dev-lkp",
  workspace: "C:/ifsapps-new/workspace",
  confirmed: true
})

Note on plvst

IFS uses .pltst files for both .plsql and .plsvc unit tests. No separate .plvst extension exists in the codebase — this MCP targets .pltst.

  • integration-testing-mcp — reference MCP architecture

  • ifs-f1-codegen-dev — code generation, SQLcl deploy, live DB inspect

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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/VaruniAlwis/plsql-test-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server