image-scoring-mcp
Vexlum Scoring MCP — compact search+dispatch on is-be-mcp / is-be-live and gallery is-ui-mcp / is-ui-live.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Vexlum Scoring MCP — compact search+dispatch on is-be-mcp / is-be-live and gallery is-ui-mcp / is-ui-live.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Bump semver + promote CHANGELOG Unreleased via compiled harness. Use for /release, version bumps, or tagging. Runs scripts/agent_skills/release_bump.py; LLM only when Unreleased is ambiguous. Never commit/push unless the user asks.
Vexlum Scoring MCP — compact search+dispatch on is-be-mcp / is-be-live and gallery is-ui-mcp / is-ui-live.
Choose CLI tools and safe patterns before repo work. Install checklist, bounded search/read commands, and confirmation gates. Use when navigating the codebase, running shell commands, or setting up agent tooling on Windows, WSL2, or macOS.
Inspect JSON, YAML, and API responses with jq, yq, dasel, curl, and httpie. Use for package.json, config.json, and backend health checks. Never output secrets or full credential-bearing config.
Backend build, test, lint, and verify workflows via WSL pytest, ruff, doctor, and docker compose. Use before claiming work complete or opening a PR. Do not invent ad hoc Python commands outside documented venvs.
Choose and run the right search tool: rg vs grep vs ast-grep vs fd vs fzf. Bounded repo navigation with ripgrep, fd, tree, bat, and structural search. Use when finding symbols, files, syntax patterns, or deciding which CLI search to use before reading or editing code.
| name | image-scoring-mcp |
| description | Vexlum Scoring MCP — compact search+dispatch on is-be-mcp / is-be-live and gallery is-ui-mcp / is-ui-live. |
Compact contract: docs/technical/MCP_SEARCH_DISPATCH.md. Action registry: mcp/action_registry.json. Full legacy index: .agent/mcp_tools_reference.md. Safe triage: .agent/workflows/safe_mcp_diagnostics.md.
search and dispatch. There is no execute_sql, get_error_summary, or other raw tool name — those are legacy names from modules/mcp_server.py or AGENTS.md.search before dispatch when the action is not already known. Use search(..., include_schemas=True) to read required args.dispatch takes action_id strings in the form category.name (e.g. diagnostics.get_error_summary). Bare legacy names like execute_sql are accepted when they match legacy_tool_name in the registry.unknown_action, read details.suggestions and details.hint in the error envelope — do not guess another category.tool id from AGENTS.md.execute_code are not on compact stdio. Use is-be-live with MCP_SSE_PROFILE=full for the legacy ~54-tool surface.Copy .cursor/mcp.example.json → .cursor/mcp.json. Attach is-be-mcp (WSL + ~/.venvs/tf via run_mcp_compact_wsl.bat); add is-be-live when WebUI is running.
search("why did scoring fail") # step 1 — required when unsure
dispatch("diagnostics.get_error_summary", {}) # step 2 — use action_id from search
Regenerate from overlay: python scripts/generate_mcp_tool_inventory.py --update-action-registry.
| action_id | Use for |
|---|---|
diagnostics.run_doctor | scripts/doctor.py equivalent (no_gpu, json) |
diagnostics.get_error_summary | Failed jobs, missing scores, stale running |
diagnostics.check_database_health | Orphans, duplicates, integrity |
diagnostics.validate_config | Config structure + optional DB ping |
diagnostics.get_database_engine_info | Engine, connector, ping |
diagnostics.verify_environment | Host, Python, deps |
diagnostics.get_model_status | GPU / model load |
diagnostics.diagnose_phase_consistency | Requires image_id; optional folder_path |
diagnostics.get_stale_running_phase_status | IPS rows stuck running |
logs.read_debug_log | Tail debug.log |
logs.get_server_log_tail | Tail webui.log / debug.log |
logs.search_logs | Regex grep on log tails |
config.get_config | Redacted config |
jobs.get_failed_images | Images missing score columns (not per-job failures) |
jobs.get_image_pipeline_failures | job_image_actions failed for one image (image_id or file_path) |
jobs.get_run_diagnostics | Post-run audit (run_id) |
jobs.get_runner_status | In-process runners (WebUI process; often empty on stdio MCP) |
jobs.get_recent_jobs | Job history |
jobs.get_job_details | One job by job_id |
data.query_images | Filtered listing (folder, scores, keywords) |
data.get_image_details | Full row by file_path |
data.get_db_schema | Postgres information_schema (before SQL) |
data.execute_sql | Read-only SELECT / WITH … SELECT (query, optional params) |
data.get_embedding_stats | Embedding coverage |
support.export_debug_bundle | Redacted zip — confirmed=True |
browser.navigate | Playwright — open URL (e.g. WebUI http://127.0.0.1:7860/ui/) |
browser.snapshot | Playwright — accessibility page snapshot |
browser.click | Playwright — click element (target from snapshot) |
browser.run_code_unsafe | Playwright RCE — confirmed=True only |
| Wrong | Right |
|---|---|
dispatch("execute_sql", …) without registry | dispatch("data.execute_sql", …) or legacy name execute_sql (resolved automatically) |
dispatch("data.execute_sql", …) when not in registry | Run registry update; or is-be-live full profile |
dispatch("diagnostics.diagnose_phase_consistency", {"folder_path": "…"}) only | Must include image_id; use data.query_images to find candidates first |
jobs.get_failed_images for one image job trace | jobs.get_image_pipeline_failures with image_id or file_path |
| Raw tool name from AGENTS.md inventory | search("…") → use returned action_id |
| Key | Tools |
|---|---|
is-be-mcp | search, dispatch (stdio; WSL launcher default) |
is-be-live | Same compact tools via SSE; MCP_SSE_PROFILE=full for legacy raw tools + execute_code |
is-ui-mcp | Gallery — search, dispatch |
is-ui-live | Gallery SSE — live IPC when Electron dev is running |
Legacy profile servers (is-be-diag, is-ui-router, …) are not in default configs.
search("scoring failure")
dispatch("diagnostics.get_error_summary", {})
dispatch("jobs.get_failed_images", {"limit": 20})
dispatch("logs.search_logs", {"pattern": "error|failed"})
search("pipeline failures for image")
dispatch("jobs.get_image_pipeline_failures", {"file_path": "/mnt/d/Photos/…/DSC_0001.NEF"})
dispatch("data.get_image_details", {"file_path": "/mnt/d/Photos/…/DSC_0001.NEF"})
search("execute sql")
dispatch("data.get_db_schema", {"table_name_prefix": "image"})
dispatch("data.execute_sql", {"query": "SELECT COUNT(*) FROM images WHERE …", "params": []})
search("export debug bundle")
dispatch("support.export_debug_bundle", {}, confirmed=True)
No separate playwright MCP server — use browser.* actions:
search("browser navigate webui")
dispatch("browser.navigate", {"url": "http://127.0.0.1:7860/ui/"}, dry_run=true)
dispatch("browser.snapshot", {})
Disable with MCP_PLAYWRIGHT_ENABLED=0. Regenerate registry: node scripts/generate_playwright_registry.mjs.
is-ui-mcp → search("gallery status") → dispatch("local.gallery_status", {})is-ui-mcp → dispatch("api.api_health", {}) when backend WebUI is upis-be-mcpRequires WebUI with MCP_SSE_PROFILE=full and ENABLE_MCP_EXECUTE_CODE=1. Assign to result to return a value.