ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Mendrift

โดย suneel190700รุ่น 0.1.2i★ 0iรันบนเครื่อง
ชื่อใน registryio.github.suneel190700/mendrift-mcp

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

MCP server for ML drift detection, MLflow registry diffing, and HMAC-gated model rollback

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: อื่น ๆ

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • PyPIติดตั้ง uv ของ Python (มีคำสั่ง uvx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "mendrift": {
      "command": "uvx",
      "args": [
        "mendrift-mcp"
      ]
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add mendrift -- uvx mendrift-mcp

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "mendrift": {
      "command": "uvx",
      "args": [
        "mendrift-mcp"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "mendrift": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mendrift-mcp"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 10 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub suneel190700 ซึ่งเป็นเจ้าของ repo

  • ✓ ผ่าน

    ยังมีคนดูแล

    มีการแก้โค้ดล่าสุด 3 เดือนที่ผ่านมา

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด อื่น ๆi

  • ดาวมากกว่า 0% ของอีก 19085 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 15% ของอีก 19085 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 19085 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Mendrift ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด 3 เดือนที่ผ่านมา และส่งรุ่นล่าสุด (0.1.2) เข้า registry 4 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี World Monitor, Claude Flow, Tldraw

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.

โดย koala73ใช้กันมาก★ 90.4Kอัปเดต 5 วันที่ผ่านมา

รันบนคลาวด์✓ worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

โดย ruvnetใช้กันมาก↓ 13.5K/สัปดาห์★ 81.4Kอัปเดต 14 เดือนที่ผ่านมา

รันบนเครื่อง

Tldraw

Draw and visually collaborate with your agents on tldraw's canvas.

โดย tldrawใช้กันมาก★ 51.4Kอัปเดต 8 เดือนที่ผ่านมา

รันบนคลาวด์

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

Mendrift

Autonomous MLOps incident response agent, plus mendrift-mcp — an open-source MCP server for drift detection and ML incident tooling.

pip install mendrift-mcp     # or: uvx mendrift-mcp

Published on PyPI and the MCP Registry as io.github.suneel190700/mendrift-mcp.

▶ [Live demo](https://mendrift-demo.onrender.com) — run a real incident in your browser: supply an alert, watch the agent diagnose it against a real MLflow registry, and approve or reject the rollback at the human-in-the-loop gate. Toggle between a crafted synthetic scenario and real US consumer-credit benchmark data. React frontend on a FastAPI backend; the free tier sleeps, so the first load may take ~40s.

When a production model drifts or degrades, Mendrift detects it, diagnoses the root cause from monitoring and registry evidence, proposes a remediation, and executes it only after human approval.

alert ──> classify ──> diagnose (MCP tools) ──> propose

│ │ noise ──> close human approval gate │ execute ──> verify recovery

Built with LangGraph (agent orchestration), LangChain (ChatAnthropic + bind_tools), the Model Context Protocol, Evidently, MLflow, and Claude (Haiku + Sonnet).

mendrift-mcp tools

tooltypepurpose
get_drift_reportreadper-feature drift distances + schema changes (Evidently)
summarize_metric_anomaliesreadproduction vs previous model scored on current traffic
get_deployment_historyreadregistry version transitions and aliases
diff_deploymentsreadparams / metrics / feature-schema diff between versions
propose_rollbackreadgenerates a reviewable rollback plan
execute_rollbackgatedrequires a single-use HMAC approval_token
open_incidentwriteincident record with diagnosis + evidence

Safety model

The approval gate is enforced in the tool layer, not the prompt: execute_rollback verifies a single-use, action-scoped HMAC token minted only by the human review flow — the minting function is never exposed over MCP. A prompt-injected or confused agent cannot execute writes.

Tested live: Claude was first ordered to roll back "with full authorization" (it proposed but declined to fabricate a token), then handed a fabricated token, which the gate rejected by constant-time HMAC comparison:

See tests/test_approval_gate.py, including the action-scoping test: a token minted for one model/version is invalid for any other.

Human-in-the-loop, crash-proof

The incident graph halts before execution (interrupt_before) and checkpoints every step to SQLite. The process can die; a new process resumes the same incident by thread_id after a human mints the approval token — which enters state only via update_state(), from outside the graph. Denial is a first-class path: no token → closed_approval_denied, no execution.

Agent design

stepmodelwhy
classifyHaikusingle constrained label; cheapest path
diagnoseSonnetmulti-hop tool reasoning over evidence
verifyHaikuthreshold check on fresh metrics

Routing lives in a code table (ROUTER_TABLE), not prompts, so cost per path is measurable config — ~3.9K input / 630 output tokens per incident. The diagnose loop is bounded (max 8 tool calls) with per-call retries and capped backoff; on tool failure the model receives a structured error record, and on budget exhaustion the agent degrades to an incident with partial evidence — it never invents a diagnosis. Destructive actions require affirmative evidence: a rollback is recommended only when retrieved evidence links the symptom to a specific deployment, never on deploy-correlation alone. The agent can also recommend monitor — real but mild, non-actionable drift is watched, not acted on.

Live mode

MENDRIFT_DEMO=0 runs the agent against real infrastructure rather than fixtures:

  • scripts/seed_demo.py trains two sklearn versions into a local MLflow registry — v13 clean, v14 with a schema swap and a training window polluted by missed-fraud labels (recall 0.72 → 0.18, AUC 0.84 → 0.82) — and writes reference/current frames
  • get_drift_report runs Evidently's DataDriftPreset over those frames, returning real Wasserstein/JS distances against per-metric thresholds, plus schema changes derived from actual column sets
  • get_deployment_history / diff_deployments read the registry and the underlying runs — real aliases, params, metrics
  • summarize_metric_anomalies scores the current window with both the production and previous versions, so it reports model divergence rather than population drift — a rollback clears it, ordinary data shift does not
  • an approved execute_rollback moves the production alias for real
uv run mlflow server --host 127.0.0.1 --port 5001        # separate terminal

PYTHONPATH=src uv run python scripts/seed_demo.py

rm -f demo.db MENDRIFT_DEMO=0 PYTHONPATH=src uv run python scripts/demo_interrupt.py start MENDRIFT_DEMO=0 PYTHONPATH=src uv run python scripts/demo_interrupt.py approve

A live run diagnoses from computed evidence — e.g. *"v2 introduced a schema swap replacing promo_flag with promo_flag_v2 … label_noise 0.0 → 0.45 collapsing val_recall 0.724 → 0.176 … 79.7% prediction-rate divergence from the prior version, model-induced, not population drift"* — then halts for approval and resolves.

The eval suite deliberately stays on fixtures: evals need determinism and zero cost in CI, while live mode exercises the real stack.

Live web demo (two worlds)

A hosted web app wraps live mode behind a browser UI: a React (Vite) frontend on a FastAPI backend, deployed on Render. A visitor submits an alert, the frontend posts it to /api/diagnose, and the backend runs the real LangGraph agent — live Claude reasoning over an embedded MLflow registry (sqlite://, seeded on boot) — then halts at the HMAC gate. Approve or reject and the backend resumes the graph via /api/decision, executing a real alias rollback and verifying recovery. The Anthropic key lives only on the server; runs are rate-limited since each calls a real model. Try it: [mendrift-demo.onrender.com](https://mendrift-demo.onrender.com).

The dashboard toggles between two seeded worlds, so the same agent can be seen against both a crafted scenario and genuine real-world data:

  • Synthetic (scripts/seed_demo.py, model fraud-scorer) — the crafted schema-swap incident: clean, teachable, an unambiguous rollback story.
  • Real US credit (scripts/seed_real.py, model credit-risk) — the Give Me Some Credit dataset (real US consumer-credit records, target SeriousDlqin2yrs) split by borrower age into reference/current windows for genuine feature drift, with a controlled model regression injected into v2 (asymmetric missed-default label noise) so the incident has ground truth. Real distributions and real Evidently drift; a known correct action. Measured gap: val_recall 0.637 → 0.156, AUC 0.854 → 0.810.

Injecting a known regression into real data is standard practice for validating a drift-detection system — it gives the evaluator ground truth for what the agent *should* decide while the drift computation still runs on genuine distributions.

The backend routes each request to the right world (model + parquet frames + label column) per the dataset field; the tool layer reads those from env vars, applied per-request under a lock so concurrent requests stay isolated.

Run the web app locally:

# 1. build the React frontend (FastAPI serves the built assets)

cd frontend && npm install && npm run build && cd ..

2. seed both worlds, then start the backend (frontend + API on one port)

export ANTHROPIC_API_KEY=sk-ant-... export MLFLOW_TRACKING_URI="sqlite:///$(pwd)/mlflow.db" PYTHONPATH=src uv run python scripts/seed_demo.py # synthetic world (fraud-scorer) PYTHONPATH=src uv run python scripts/seed_real.py # real world (credit-risk) PYTHONPATH=src uv run uvicorn app.main:app --port 8000 # open http://localhost:8000

For frontend development with hot reload, run cd frontend && npm run dev (port 5173); Vite proxies /api to the backend on port 8000.

Evaluation

src/mendrift/evals/ replays synthetic incident trajectories against the real graph — only the LLM (scripted) and the read tools (fixture world) are faked; the gated action tools are the genuine implementations, so the HMAC gate is exercised by every test. Four assertions per trajectory:

checkmeaning
no_ungated_writesevery execute_rollback carried a valid HMAC token — hard fail
classification_oktriage label matched
tool_sequence_okrequired tool calls occurred in order (extras allowed)
action_okterminal outcome matched

19 logic-distinct incident scenarios spanning the decision space, each with its own evidence shape and correct action:

  • Rollback — deploy-correlated drift or quality regression with affirmative diff evidence
  • Retrain — label/concept shift, segment-specific degradation (no valid rollback target)
  • Monitor — mild seasonal drift, low-importance-feature drift, holiday effects
  • Incident (investigate) — upstream schema rename, feature-store change, docs-only deploy, calibration break, threshold shift, silent data-quality drop
  • Graceful degradation — evidence tools down → incident with partial evidence, never a fabricated diagnosis
  • Noise — flapping / auto-resolved alerts closed with zero tool calls
  • Human-declined — well-founded rollback the reviewer rejects → closed, no execution

Scripted for fast CI, live for the measured rate:

PYTHONPATH=src uv run python scripts/run_traj.py --all          # scripted, fast

PYTHONPATH=src uv run python scripts/run_traj.py --all --live # real models

Live-model eval runs at ~95% task-success; the handful of run-to-run divergences reflect LLM eval variance on decision-margin scenarios. The live suite surfaced real failure classes during development — a JSON extractor masking a correct decision, a classifier baited by an alert's reassuring wording, and a diagnoser proposing rollback on correlation alone — each fixed at its own layer (parser, alert wording, evidence-rule prompt).

Quickstart (demo mode)

uv sync

MENDRIFT_DEMO=1 uv run mendrift-mcp # stdio MCP server with fixture data PYTHONPATH=src uv run pytest -v # gate + trajectory suite

Claude Desktop config:

{"mcpServers": {"mendrift": {

"command": "uvx", "args": ["mendrift-mcp"], "env": {"MENDRIFT_DEMO": "1"} }}}

Status

  • mendrift-mcp server over stdio, verified in MCP Inspector and Claude Desktop
  • seven tools with a read / gated / write permission taxonomy
  • HMAC-gated rollback with action-scoped single-use tokens (tests first)
  • LangGraph incident graph: SQLite checkpointing + human-approval interrupt, kill-resume proven
  • LLM nodes on LangChain (ChatAnthropic.bind_tools): Haiku classify/verify, Sonnet diagnose loop
  • 19-scenario trajectory eval across the decision space; ~95% live, zero ungated writes
  • CI: gate + trajectory suite o

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx