Skip to main content
Glama

Defect Vision MCP Agent

Real-time steel surface defect classification system combining a fine-tuned PyTorch computer vision model, a genuine MCP (Model Context Protocol) server, and a LangGraph multi-agent monitoring layer with human-in-the-loop guardrails.

Live Demo: https://defect-vision-mcp-agent-j3eq5p8huviz4hbz495imi.streamlit.app/

Built to close three specific gaps: hands-on PyTorch model training, real MCP protocol integration, and MLOps-style model monitoring — all wired together as one coherent system rather than three disconnected pieces.

Results

Fine-tuned a ResNet18-based classifier (transfer learning, frozen backbone, trained classification head) on the NEU-DET surface defect dataset — 6 classes, 1,800 images (1,440 train / 360 validation, balanced).

Metric

Score

Validation Accuracy

98.89%

Weighted Precision

0.9892

Weighted Recall

0.9889

Weighted F1

0.9888

Per-class performance:

Class

Precision

Recall

F1

crazing

0.98

1.00

0.99

inclusion

1.00

0.95

0.97

patches

1.00

0.98

0.99

pitted_surface

0.97

1.00

0.98

rolled-in_scale

1.00

1.00

1.00

scratches

0.98

1.00

0.99

Related MCP server: Industrial MCP Agent Platform

Architecture

  1. PyTorch Model (model/) — ResNet18-based transfer-learning classifier. Backbone frozen; only the classification head is fine-tuned, converging in 6 epochs on CPU.

  2. MCP Server (mcp_server/) — a real, protocol-compliant MCP server (built on MCPServer from the official mcp SDK, verified against the MCP Inspector) exposing two tools:

    • classify_image(image_path) — runs inference, logs the prediction

    • get_model_metrics() — returns aggregate stats from the prediction log

  3. Multi-Agent Layer (agents/) — LangGraph-orchestrated pipeline with three nodes in sequence:

    • Inference agent — calls the MCP tool to classify an image

    • Guardrail agent — auto-accepts high-confidence predictions; low-confidence predictions are flagged for human review instead of being silently accepted, mirroring a human-in-the-loop pattern rather than blind automation

    • Drift-monitor agent — tracks the rolling ratio of low-confidence predictions and flags DRIFT_DETECTED if it crosses a threshold, signaling the model may need review or retraining

  4. Dashboard (dashboard/) — Streamlit UI showing live prediction counts, average confidence, low-confidence count, a full prediction log, and a confidence-over-time chart.

Setup

pip install -r requirements.txt
cp .env.example .env   # fill in your own GROQ_API_KEY

Train the model

Requires the NEU-DET dataset arranged as:

data/processed/
├── train/<class_name>/*.jpg
└── val/<class_name>/*.jpg
python model/train.py
python model/evaluate.py

Run the MCP server

python mcp_server/server.py

Test it interactively with the MCP Inspector:

npx @modelcontextprotocol/inspector python mcp_server/server.py

Run the agent pipeline

python agents/graph.py

Run the dashboard

streamlit run dashboard/app.py

Run tests

pytest tests/ -v

Tech Stack

Python · PyTorch · torchvision · MCP SDK · LangGraph · LangChain · Streamlit · scikit-learn · GitHub Actions (CI)

Notes

  • data/processed/, model/checkpoints/*.pt, and the live prediction log (logs/predictions.jsonl) are gitignored — not included in this repo. logs/predictions_sample.jsonl is committed separately so the deployed dashboard has sample data to display.

  • Deployed on Streamlit Community Cloud (free tier) — expect a brief cold start if the app has been idle.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers