vibecheck0.3.0
Reference

MCP tools & hub API

Reference for project-scoped MCP tools, browser routes, leases, and configuration.

Run npx -y @wcgw/vibe-check-mcp@0.3.0 hub once. MCP clients spawn npx -y @wcgw/vibe-check-mcp@0.3.0 connect and expose the tools below.

Project selection

Every project-scoped tool accepts optional project_id: string. It may be omitted only when exactly one active project exists or the session already owns a lease. Multiple active projects without a selection return project-ambiguous; an unknown value returns project-not-found.

Tools

ToolParametersReturns
list_projectsActive project summaries with URL, last seen, issue count, queue depth, and agent state.
get_performance_snapshotproject_id?Latest VibeSnapshot, or no-snapshot.
get_detected_issuesproject_id?, severity?, detector?{ count, issues } for one project.
get_fix_suggestionsproject_id?, issue_idMarkdown suggestion, or issue-not-found.
watch_performanceproject_id?, timeout_seconds? (1–300, default 30)Acquires the lease and returns the next project snapshot, or watch-timeout.
watch_for_issueproject_id?, timeout_seconds? (1–300, default 30)Acquires the lease and returns one queued widget dispatch plus its suggestion, or watch-timeout.
acknowledge_issueproject_id?, issue_id{ acknowledged: true, projectId, issue_id }.
resolve_issueproject_id?, issue_id{ resolved: true, projectId, issue_id }.
release_projectReleases the current session's lease.

One session cannot select a different project while it owns a lease; the result is session-already-watching. A healthy owner blocks another session with lease-conflict.

Browser API

RouteMethodResponse
/api/healthGET{ status: "ok", service: "vibe-check-hub", version }.
/api/snapshotPOSTAccepts { projectId, instanceId, pageUrl, snapshot }; returns { received: true, projectId }.
/api/projects/:projectId/statusGET{ projectId, state, queueDepth, leaseExpiresAt, conflictAt }.
/api/projects/:projectId/dispatchPOSTAccepts { projectId, instanceId, issue }; returns a DispatchIssueResponse.

Browser routes allow CORS. /internal/* is reserved for the local bridge and rejects requests carrying a browser Origin header.

Dispatch result codes are dispatched, unconfigured, hub-offline, agent-not-watching, queue-full, invalid-issue, and failed. The per-project queue holds at most 10 issues.

Lease timing

EventTiming
Bridge heartbeatevery 5 seconds
Widget reports watcher staleafter 10 seconds
Lease expires and may be reclaimedafter 15 seconds
Conflict warning retained30 seconds

Environment

RoleVariableDefault
hubVIBE_CHECK_HOST127.0.0.1
hubVIBE_CHECK_PORT4200
connectVIBE_CHECK_HUB_URLhttp://127.0.0.1:4200

Keep the hub local

It is an unauthenticated development service. The default loopback bind is intentional; do not expose it to a public interface.