Skip to main content
Glama
UsmanHWU

SCAL Digital Assistant Suite MCP Server

by UsmanHWU

SCAL Digital Assistant Suite v5.0

Multi-method Special Core Analysis — Relative Permeability & Capillary Pressure
Eclipse-ready .INC · Cydar-aligned QC · LangGraph agent · Streamlit UI · FastAPI · MCP Server


What Is This?

A complete engineering toolkit for generating, quality-controlling, and exporting relative permeability and capillary pressure curves for reservoir simulation. Starting from laboratory endpoint measurements, you choose a Kr model, set parameters, and the suite produces:

  • A validated SWOF or SGOF Eclipse .INC file ready to INCLUDE in your DATA deck

  • A .zip package (INC + Excel report + CSV + QC log + manifest)

  • A structured Cydar-aligned physics QC report (25+ checks across KR/PC/XC/CD categories)

  • A LLM engineering assessment via the LangGraph agent


Related MCP server: Corrosion Engineering MCP Server

What's New in v5.0

Feature

Detail

MCP Server v2024-11-05

Full JSON-RPC 2.0 stdio transport; 6 tools; Claude Desktop ready

Pc-LET model

Lomeland SCA 2008 / Cydar manual p.47; selectable alongside Brooks-Corey

Petroleum Office LET example

Default LET values cross-checked against po.scal.let.relperm blueprint

Brooks-Corey equiv. Corey

nw_equiv = (2+3λ)/λ shown in CLI, INC header, API response

/api/v1/mcp-manifest

HTTP endpoint returns full MCP tool schema for discovery

Pc model field

`pc_model: BC

Philliec459 alignment

Corey formulation cross-checked against Panel implementation


Supported Kr Methods

Method

Reference

Key Params

Best For

Corey

Corey (1954); Philliec459 Panel

nw, no

Clean sands, baseline, screening

LET

Lomeland et al. SCA2005-32; PO Blueprint

Lw/Ew/Tw, Lp/Ep/Tp

Mixed-wet, heterogeneous, S-shaped

Brooks-Corey

Brooks & Corey (1964)

λ (linked kr + Pc)

Physically grounded; tight formations

Burdine

Burdine (1953) Trans. AIME 198

λ

Pore-bundle theory

Chierici

Chierici (1984) SPEJ 24(3)

aw/bw, ap/bp

Fractured/vuggy carbonates

Cydar Modified Corey

CYDAR-SCAL Manual (2025) p.48

α, H, V

Endpoint slope control; CYDAR HM

Supported Pc Models

Model

Formula

When to Use

Brooks-Corey

Pc = Pe × Sw*^(−1/λ)

Default; standard drainage

Pc-LET

Pc = Pc_max × (1−Sw*)^L / [(1−Sw*)^L + E×Sw*^T]

Sigmoidal shape; Cydar recommended

None

Pc = 0

Kr-only export


Key Equations (cross-referenced)

Normalised Saturation

Sw* = (Sw − Swi) / (1 − Swi − Sor)     [Petroleum Office convention]
So* = 1 − Sw*

Corey (1954)

krw = krw_end × Sw*^nw
kro = kro_end × (1−Sw*)^no

Reference: Philliec459 Panel; Petroleum Office scal-corey-let

LET (Lomeland et al. 2005)

krw = krw_end × Sw*^Lw / [Sw*^Lw + Ew×(1−Sw*)^Tw]
kro = kro_end × (1−Sw*)^Lo / [(1−Sw*)^Lo + Eo×Sw*^To]

Petroleum Office example (po.scal.let.relperm): Lo=2.5, Eo=2.0, To=1.5 | Lw=3.0, Ew=1.5, Tw=2.0

Brooks-Corey (1964)

krw = krw_end × Sw*^((2+3λ)/λ)
kro = kro_end × (1−Sw*)^2 × [1 − Sw*^((2+λ)/λ)]
Pc  = Pe × Sw*^(−1/λ)
Equivalent Corey nw = (2+3λ)/λ    [Petroleum Office relationship]

Cydar Modified Corey (manual p.48)

krw = krw_end × [Sw*^(2α)/(2α) + Sw*^α/α + H×Sw*] / norm
kro = kro_end × [(1−Sw*)^(2α)/(2α) + (1−Sw*)^α/α + V×(1−Sw*)] / norm
H = krw slope at Swi  (0 = flat, water-wet)
V = kro slope at 1-Sor

Pc-LET (Cydar manual p.47; Lomeland SCA 2008)

Pc(Sw*) = Pc_max × (1−Sw*)^L / [(1−Sw*)^L + E×Sw*^T]
L ≥ 1  (lower curvature)   E > 0  (elevation)   T ≥ 0.5  (upper curvature)

Architecture

scal-suite-pro/
├── corey_engine.py                 All 6 Kr models + Pc models + Excel + INC export
├── scal_qc.py                      Cydar-aligned QC: KR/PC/XC/CD check suites
├── agents.py                       LangGraph: PhysicsQC → EngineeringQA → ReportSynthesis
├── mcp_scal_server.py              MCP stdio server (JSON-RPC 2.0) + interactive CLI
├── main.py                         FastAPI: /compute-scal /methods /mcp-manifest
├── seria_correlations.py           BSP badin USman empirical correlations
├── Home.py                         Streamlit multi-page entry point
├── pages/
│   ├── app_ui.py                   SCAL engine UI
│   └── seria_ui.py                 badin correlations UI
├── claude_desktop_config_example.json  MCP config for Claude Desktop
├── .env.example
├── Dockerfile
├── docker-compose.yml
└── requirements.txt

Quick Start (Local)

git clone <repo>
cd scal-suite-pro
cp .env.example .env          # add OPENAI_API_KEY (optional — for LLM QA)
pip install -r requirements.txt

# Terminal 1 — FastAPI backend
uvicorn main:app --reload --port 8000

# Terminal 2 — Streamlit frontend
streamlit run Home.py

Open http://localhost:8501 | API docs http://localhost:8000/docs


MCP Server Integration

Run as stdio server

python mcp_scal_server.py --mcp

Interactive CLI (no LLM required)

python mcp_scal_server.py

Connect to Claude Desktop

Edit your Claude Desktop config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "scal-suite": {
      "command": "python",
      "args": ["mcp_scal_server.py", "--mcp"],
      "cwd": "C:/path/to/scal-suite-pro"
    }
  }
}

See claude_desktop_config_example.json for the annotated version.

MCP Tools

Tool

Description

list_kr_methods

Full catalogue: models, equations, typical ranges, wettability guide

compute_scal

Run Kr+Pc simulation → saturation table + Cydar QC report

export_eclipse_deck

Raw SWOF/SGOF .INC text from a supplied table

export_zip_package

Build .zip: INC + XLSX + CSV + QC log + manifest

run_qc_only

QC suite against any external saturation table

get_seria_correlation

BSP badin Seria/West Anduki empirical values

Test a single call

python mcp_scal_server.py --mcp '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
python mcp_scal_server.py --mcp '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_kr_methods","arguments":{}}}'

Docker

cp .env.example .env
docker-compose up --build

Frontend: http://localhost:8501 | Backend docs: http://localhost:8000/docs | MCP manifest: http://localhost:8000/api/v1/mcp-manifest


Eclipse Output

Fluid System

Keyword

Column Order

Oil-Water

SWOF

Sw Krw Kro Pc_ow (bar)

Gas-Water

SGOF

Sg Krg Krw Pc_gw (bar) — ascending Sg

INCLUDE
  'SCAL_FUNCTIONS.INC' /

.zip Package Contents

File

Description

SCAL_FUNCTIONS.INC

Eclipse E100/E300 SWOF/SGOF keyword table

SCAL_Report.xlsx

Saturation table + embedded Kr and Pc line charts

saturation_table.csv

Raw Sw/Kr/Pc values

agent_qc_report.txt

Cydar-aligned QC log (25+ checks)

PACKAGE_MANIFEST.json

Method, endpoints, Pc model, QC status, timestamp, references


QC Checks (Cydar-SCAL aligned)

Category

Codes

Checks

Kr physical

KR-01 → KR-14

Endpoints, monotonicity, crossover, exponent ranges, wettability

Pc physical

PC-01 → PC-07

Monotonicity, sign convention, entry pressure, Leverett J

Cross-checks

XC-01 → XC-03

Amott-Harvey wettability, Rapoport-Leas, capillary number

Cydar-specific

CD-01 → CD-04

LET params, Pc-LET params, Modified Corey H/V/α, dimensionless numbers


API Reference

POST /api/v1/compute-scal

{
  "method":        "LET",
  "system":        "Oil-Water",
  "swc":           0.20,
  "s_res":         0.25,
  "krw_end":       0.30,
  "kr_phase_end":  0.80,
  "pc_model":      "LET",
  "n_points":      30,
  "let_params":    { "Lw": 3.0, "Ew": 1.5, "Tw": 2.0, "Lp": 2.5, "Ep": 2.0, "Tp": 1.5 },
  "pc_let_params": { "pc_max": 5.0, "L": 2.0, "E": 1.0, "T": 2.0 }
}

GET /api/v1/methods — method catalogue with equations
GET /api/v1/mcp-manifest — MCP tool schema + Claude Desktop config snippet


References

F
license - not found
-
quality - not tested
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/UsmanHWU/Agent_Scal_v1.0'

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