Skip to main content
Glama
omniboard-dev

Omniboard MCP

Official

Omniboard MCP CLI

Omniboard MCP CLI is a local stdio MCP server that exposes agentic check runs to coding agents. It calls the independently reusable Agentic Runner workflow through the Omniboard API's /mcp-cli endpoints.

This package is separate from the MCP Hosted server exposed directly by the Omniboard API at /mcp-hosted. MCP Hosted uses bearer authentication and scoped mcp-hosted API keys; this package uses a full-access mcp-cli API key.

In this document, MCP Hosted and MCP CLI name the two Omniboard integrations. A coding client is the external MCP host, such as Codex, Claude Code, or Cursor; protocol terms such as stdio and structuredContent describe the transport and wire format rather than another Omniboard component.

One agentic run consists of one prompt and its tracked progress. Tools identify a run with its runKey.

Delivery goal

The MCP server sends its prime directive to the coding client during initialization: deliver the requested migration until an open, green, mergeable MR exists. Use that goal to resolve ambiguous next steps within the user's scope and constraints. Before publication, run all applicable local build, lint, unit-test and end-to-end checks using the project's existing commands. A failing check starts a repair loop: read its output, fix migration-related code or tests, rerun the failing check, then rerun all applicable checks until they pass. Preserve coverage and keep checks enabled with their assertions intact. Run analyzer validation separately when available. Once all applicable checks pass, finalize the workspace and publish the MR. When a sandbox or permission restriction prevents a check from running, rerun the same check through the coding client's approval flow when available. If access remains unavailable, report the concrete blocker and leave publication pending. Keep reporting implementation progress while diagnosing and repairing failed checks. Use failed, blocked or needs_input when work needs external action or a scope decision, and include the concrete blocker, commands and failure evidence, attempted repairs, and the exact action needed to resume. Report unrelated failures separately for a scope decision. After publication, wait for running CI and repair failed CI or conflicts. Once the MR is green and mergeable, no further agent work remains. Merging belongs to the user or consuming team. Recover disposable runner state and closed MRs as needed. Duplicate effort is an accepted efficiency tradeoff. When external requirements prevent progress, report the concrete blocker and continue other actionable projects.

Related MCP server: agent-services-mcp

Environment

OMNIBOARD_API_KEY_MCP_CLI is required and should be passed through the coding client's MCP server configuration. MCP CLI uses it to read agentic runs, retrieve repository access when required, and report run progress.

Optional

  • OMNIBOARD_API_URL: overrides the Omniboard API URL. It defaults to https://api.omniboard.dev.

  • OMNIBOARD_API_KEY: enables analyzer validation in developer-local mode. Omit it when connected agents should not run @omniboard/analyzer.

  • OMNIBOARD_MCP_CLI_ALLOW_LOCAL_TRANSPORTS=true: permits local file: repositories and loopback HTTP Git/GitLab endpoints for isolated local tests. Leave it unset in normal runner deployments.

Registering the MCP CLI server

The server uses the stdio transport defined by MCP. Instantiate it only in projects that use Omniboard MCP CLI. Do not add it to a user-level or global configuration: coding harnesses may start the server for every project, wasting resources and exposing irrelevant tools. Keep the API key in the harness-specific project or local configuration and do not commit it.

Claude Code

From the relevant project root, add a local-scoped server. See the Claude Code MCP configuration for scope and management options.

claude mcp add --env OMNIBOARD_API_KEY_MCP_CLI=your-api-key --scope local omniboard -- npx -y @omniboard/mcp

Cursor

Create .cursor/mcp.json in the relevant project. See the Cursor MCP configuration for project and global configuration locations.

{
  "mcpServers": {
    "omniboard": {
      "command": "npx",
      "args": ["-y", "@omniboard/mcp"],
      "env": { "OMNIBOARD_API_KEY_MCP_CLI": "your-api-key" }
    }
  }
}

Codex

Create .codex/config.toml in the relevant project, not ~/.codex/config.toml. See the Codex project configuration and MCP configuration documentation.

[mcp_servers.omniboard]
command = "npx"
args = ["-y", "@omniboard/mcp"]

[mcp_servers.omniboard.env]
OMNIBOARD_API_KEY_MCP_CLI = "your-api-key"

Developer-local mode

Developer-local mode is for an agent already working inside the repository that should be changed. The server resolves the current directory as an Omniboard project, exposes agentic runs for that project, and reports progress against the local workspace.

This mode does not create or manage another checkout. The connected agent owns the normal development workflow:

  1. Inspect the project.

  2. Edit the current workspace.

  3. Run the relevant verification.

  4. Use the local progress tools to report milestones.

Local and dedicated modes use the same provider-refreshed continuation decision and agent instructions. They differ only in how the working checkout is obtained. Analyzer validation is available only when OMNIBOARD_API_KEY is configured and the continuation decision permits work.

Tools

omniboard_local_list_agentic_runs

Lists agentic runs for the resolved current project. Pass checkName to scope the list to one agentic check.

omniboard_local_get_agentic_run

Returns one agentic run by runKey, including its prompt, progress, and agent instructions. It refreshes provider state, returns the shared continuation decision, and reports the run as in_progress idempotently only when that decision permits work.

omniboard_local_report_agentic_run_progress

Reports a workflow milestone for one run. Supported milestones are:

  • implemented

  • needs_input

  • verified

  • committed

  • pushed

  • mr_created

  • done

  • blocked

  • failed

A done progress report includes one of these resolutions:

  • merged

  • dismissed, optionally with a resolutionReason such as false_positive

The legacy merged status remains accepted for backward compatibility.

The tool can also report repository, commit, merge request, pipeline, verification, error, note, and metadata details. The optional notes field accepts Markdown; plain text remains valid Markdown.

omniboard_local_validate_agentic_run

Validates one run by runKey. The server resolves the check name, runs the analyzer when OMNIBOARD_API_KEY is available, and evaluates whether the check still matches.

Reported progress statuses are:

  • implemented: validation started, or it was skipped because OMNIBOARD_API_KEY is not configured.

  • verified: the check no longer matches.

  • needs_input: the check still matches.

  • failed: analyzer validation failed.

Explicit retries create an instruction with a separate disposition. The API reassesses current applicability and provider facts; only accepted guidance is included in prepared workspace instructions. MCP reports in_progress only after the workspace is successfully acquired and prepared. Every matched-project response includes fulfilled, unfulfilled, and unchecked projects. Each project carries its current fulfillment group so the run prompt can add, remove, or otherwise change code for the relevant result variant.

If the continuation decision does not permit validation, the tool returns skipped: true without reporting another progress status.

Dedicated runner mode

Dedicated runner mode is for a consumer-operated automation process that handles agentic work across projects. A scheduler, queue worker, CI job, cron process, or similar coordinator selects runs and projects. Scheduling and concurrency stay outside the MCP CLI server.

The MCP CLI server prepares and finalizes runner-owned checkouts. Before preparation, it refreshes the selected run and project against its Git provider and decides whether to continue from the canonical Omniboard progress status and provider metadata. The connected coding agent performs the requested code change inside the returned workspace and runs the relevant project verification before finalization.

Workspace layout

The MCP CLI process working directory is the root of the consumer's automation project. On first preparation, the server creates:

.omniboard/
  mcp/
    .gitignore
    workspaces/

The generated .gitignore excludes workspaces/. If the file already exists, its content is preserved and only the missing runtime entry is added.

Each migration uses a stable checkout under workspaces/. Compatible checkouts retain local edits and dependencies across restart. Runner checkouts are disposable: missing or incompatible metadata causes a fresh clone from the existing source branch, or from the latest target when that branch no longer exists. Older checkouts are not required for recovery.

Git and the provider supply current facts. Progress is reporting, not permission to work. There are no execution API calls, renewable leases, heartbeat deadlines, or work budgets. Small metadata under .git/omniboard-runner.json retains the source SHA and any preserved stash so interrupted Git operations can resume.

Git commit identity

Finalization resolves Git commit identity in this order:

  1. The generated checkout's repository-local user.name and user.email.

  2. The global Git configuration for the operating-system user that runs MCP CLI.

Generated checkouts do not inherit repository-local Git configuration from the automation project that contains .omniboard/.

For local use, a global Git identity is normally sufficient:

git config --global user.name "Tomas Trajan"
git config --global user.email "tomas@example.com"

CI jobs commonly start with a clean home directory, so configure the identity before starting MCP CLI. Run the configuration as the same user and with the same HOME as the MCP CLI process:

git config --global user.name "Omniboard Automation"
git config --global user.email "automation@example.com"
git config --global --get user.name
git config --global --get user.email

If neither checkout-local nor global identity is available, Git rejects the commit and workspace finalization fails. MCP CLI does not accept author-name or author-email tool inputs and does not provide a hard-coded fallback identity.

GitLab CI

Configure a bot identity in before_script before the command that starts MCP CLI:

variables:
  OMNIBOARD_GIT_USER_NAME: 'Omniboard Automation'
  OMNIBOARD_GIT_USER_EMAIL: 'automation@example.com'

default:
  before_script:
    - git config --global user.name "$OMNIBOARD_GIT_USER_NAME"
    - git config --global user.email "$OMNIBOARD_GIT_USER_EMAIL"

The values may instead come from protected GitLab CI/CD variables when the identity should not be repeated in the pipeline file.

GitHub Actions

Add an identity configuration step before the step that starts MCP CLI:

- name: Configure Git identity for Omniboard MCP CLI
  shell: bash
  run: |
    git config --global user.name "Omniboard Automation"
    git config --global user.email "automation@example.com"

Repository or organization variables can be substituted for the literal values when the same automation identity is shared by multiple workflows.

Workflow

See the four-outcome workflow and flowcharts. The API supplies the canonical decision; preparation adds local workspace facts.

  1. Call omniboard_runner_list_agentic_runs to select an active run unless the scheduler already supplies a run key.

  2. For manual selection, call omniboard_runner_list_agentic_run_projects for the selected run. Use status filters, pagination, and view: "summary" for compact discovery.

  3. Select one project and call omniboard_runner_prepare_agentic_run_workspace. Preparation refreshes only that run and project against its Git provider before deciding whether work should continue. For batch selection, call omniboard_runner_prepare_next_agentic_run_projects instead; it scans and prepares migration workspaces until its requested limit is reached.

  4. Give the returned prompt, result context, and workspace path to the connected coding agent.

  5. Run the relevant tests, lint, or build commands inside that workspace.

  6. Call omniboard_runner_finalize_agentic_run_workspace separately for each prepared workspace, with the commit and merge request wording.

  7. MCP CLI retains the Git checkout for inspection and recovery but removes its root node_modules whenever work stops. A later preparation reinstalls dependencies as needed, or recreates a missing checkout from DB execution state at a new generation.

Repository access and safety

MCP CLI applies repository safeguards in this order:

  1. Preparation performs a read-only GitLab permission preflight before creating a workspace. It verifies project visibility, repository and merge request availability, archive state, and effective push and merge request permissions.

  2. MCP CLI retrieves repository access only for credentialed Git operations. Repository and GitLab API URLs must use HTTPS by default. Local file: repositories and loopback HTTP endpoints require the explicit local-test setting described above.

  3. MCP CLI supplies credentials through a temporary Git askpass helper. Credentials are never embedded in clone URLs, written to DB execution state, or returned from MCP CLI tools.

  4. Finalization retrieves fresh repository access, validates the effective repository and workspace paths, disables repository-controlled credential helpers and Git hooks, and pushes to the validated repository URL rather than a mutable remote.

Project policy or branch protection can still change after the permission preflight.

Tools

Every MCP CLI tool declares an output schema and returns the same JSON object in both the MCP protocol's structuredContent and a JSON text content block. New clients can consume and validate structuredContent directly. Existing clients that parse the text block remain compatible.

omniboard_runner_list_agentic_runs

Lists every active agentic run available to the MCP CLI key. Use it when an external scheduler has not already selected a run.

omniboard_runner_list_agentic_run_projects

Lists checked Omniboard projects for an agentic check or run. Pass runKey to target one run, or checkName to discover projects and active runs for a check. Fulfilled projects are returned by default. This operation does not resolve the MCP CLI process working directory or report progress.

Available query controls are:

  • statuses: filters by canonical stored progress status.

  • Fulfilled, unfulfilled, and unchecked projects are returned together. Each project carries its fulfillment value and targetedByRun flag so discovery and batch preparation apply the run definition to the correct result variant.

  • offset and limit: page the filtered result.

  • view: "summary": omits project result payloads and expanded run metadata while retaining repository, progress, merge request, pipeline, and error details.

Pagination fields are:

  • total: number of filtered projects.

  • unfilteredTotal: total returned by the API before filtering.

  • returned: number of projects on the current page.

  • hasMore: whether another page is available.

Listing is side-effect free with respect to agentic-run and project state: it reads stored progress and does not refresh providers, record snapshots, prepare workspaces, or report progress. Stored provider details can therefore be stale. Workspace preparation and batch execution select every project whose current result variant is targeted by the run, including unfulfilled and unchecked projects when the run definition targets those variants.

Use the tools in this order:

  1. List runs and projects for read-only discovery and candidate selection.

  2. Prepare one selected project, or call the batch preparation tool when ready to acquire work. The API handles pending retry assessments and dismissed-MR cleanup independently, then refreshes candidates before authorizing work.

  3. List again only when an updated stored overview is needed after preparation.

Project state and retry tools

  • omniboard_runner_get_project_state: read stored facts and the API decision.

  • omniboard_runner_refresh_project_state: refresh provider facts and reconcile applicability, retries, and dismissal cleanup without preparing a checkout.

  • omniboard_runner_request_project_retry: record explicit operator guidance for reassessment; it does not force work on a ready MR.

This release requires the matching API and manual database migration described in the workflow contract. Missing API workflow decisions are contract errors; MCP does not derive a fallback decision.

omniboard_runner_prepare_next_agentic_run_projects

Prepare up to limit actionable migrations (default one, maximum ten). For "continue" or "do the next 10", fill the batch in this order:

  1. Pending projects, including those without stored progress.

  2. Started or published work: in_progress, implemented, verified, committed, pushed, mr_created.

  3. Recovery work: failed, blocked, needs_input.

Merged and dismissed migrations are excluded. Request an explicit retry to reconsider dismissed work; progress reports cannot reopen terminal migrations.

Within each group, order by Analyzer source size. Failed preparations, merged changes, green mergeable MRs, and work waiting for CI or approval do not consume the actionable limit; keep scanning the remaining groups. Waiting returns before checkout operations and preserves retained local edits. Failed CI or conflicts make published work actionable again. Already-merged progress is excluded.

Explicit statuses replace the default groups and use source-size ordering: ["pending"] requests only new work; ["failed", "blocked"] requests repairs. Existing work remains selectable after its analyzer result changes. A prepared batch is not a completed migration batch: continue each selected project until an open, green, mergeable MR exists, and report remaining waits or blockers.

omniboard_runner_prepare_agentic_run_workspace

  1. Read the run, repository access, MR and CI diagnostics.

  2. Reuse its checkout or clone the source branch if none exists.

  3. Fetch the current source and target (normally main), preserve edits, and rebase.

  4. Return the workspace, prompt and any conflicts for the agent to resolve.

Complete and dismissed decisions stop before checkout work. Waiting decisions report their reason. Green mergeable MRs and CI/approval waits leave the checkout untouched. An unfinished closed/declined MR can be replaced; dismissed work first requires an explicit retry. A conflicting rebase returns the same workspace for repair.

An existing MR supplies the source branch; otherwise use retained progress, explicit input, the run/prompt, or a stable run-key default. The commit message comes from the run/prompt or run key. Continue using the repository already recorded for the migration even when the project lists several repositories. Only repositories registered for the selected project may be used.

omniboard_runner_finalize_agentic_run_workspace

After resolving conflicts and running relevant checks, finalize the checkout. Finalization refreshes source and target, continues pending rebases, commits local changes and pushes the same branch. Rewritten history uses Git's expected-source SHA check to avoid overwriting a push that arrived while publication was running. It reuses an open MR or creates a replacement when the previous MR is closed or declined. A conflict returns completed: false with files to resolve. If the checkout had to be recreated or synchronization changed HEAD, finalization returns completed: false so the agent can reapply the prompt and run checks before publishing. Successful publication returns completed: true, published: true.

After publication, wait while CI runs. Repair failed CI and rebase conflicts on the existing MR until it is green and mergeable, then no further agent work remains. Keep the mr_created milestone and derive waiting from provider facts. The MCP does not expose a merge tool; merging belongs to the user or consuming team. A later human merge is recorded only after provider confirmation.

Compatibility heartbeat and release tools

Heartbeat is a no-op. Release only forgets in-process context. Neither is required; neither deletes the checkout or dependencies. Restarting preparation resumes the same checkout using Git and the retained stash/source references.

omniboard_runner_report_agentic_run_progress

Reports a dedicated-runner milestone for an explicit runKey and projectName without resolving the MCP CLI process working directory as an Omniboard project. It supports the same repository, commit, merge request, pipeline, verification, error, note, and metadata details as developer-local progress reporting, including Markdown in the optional notes field.

Available Tools

2 tools
omniboard_get_actionable_check_resultsB

Get actionable prompt and check results for an actionable Omniboard check by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'Get' implies a safe, read-only operation, which is sufficient for this simple retrieval tool. However, the description does not confirm idempotency, error behavior (e.g., if name is invalid), or any potential side effects. Given the tool's simplicity, this is minimally acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the tool's purpose. Every word serves a function, with no redundancy or extraneous information. It is optimally front-loaded and fits the context of a simple retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, lack of output schema, and existence of a sibling tool for listing, the description covers the basic functionality. However, it does not explain the relationship to the sibling tool (e.g., that 'name' should come from the list), nor does it describe the return value structure. It is adequate but leaves room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema defines only one required parameter 'name' with minimal constraints. The description adds that the tool gets results 'by name' but does not clarify the expected format, sources for valid names (e.g., from the sibling tool), or any constraints beyond the schema. Schema description coverage is 0%, so the description should compensate more, especially since the parameter is critical.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'actionable prompt and check results' for a specific check by name. It effectively distinguishes the 'get details' function from its sibling tool 'omniboard_list_actionable_checks' (list vs. retrieve). Minor repetition of 'actionable' slightly reduces clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. Although the sibling tool name implies a list operation, the description does not explicitly recommend using this tool after listing or indicate any prerequisites. No 'when to use' or 'when not to use' information is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

omniboard_list_actionable_checksA

List actionable Omniboard checks that currently have results for the resolved project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, authentication requirements, or side effects. For a tool with no annotations, the description carries full burden but fails to add transparency beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the purpose directly without any extraneous information. It is appropriately front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters and no output schema, the description sufficiently states what the tool does, though it omits details about the output structure. Given the low complexity and the information available, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and 100% schema description coverage. According to the rubric, zero parameters baseline is 4, and the description does not need to add parameter info as there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list', the resource 'actionable Omniboard checks', and the scope 'currently have results for the resolved project'. It effectively distinguishes from the sibling tool 'omniboard_get_actionable_check_results' which retrieves results for specific checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (listing checks with results) but does not explicitly state when not to use this tool or mention the sibling as an alternative. The context is clear enough for an agent to infer appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.6
    • First observedomniboard_get_actionable_check_results
    • First observedomniboard_list_actionable_checks

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: one lists checks and the other retrieves results for a specific check. There is no confusion or overlap.

Naming Consistency5/5

Both tools follow a consistent 'omniboard_verb_noun' pattern with snake_case, using 'list' and 'get' appropriately for their actions.

Tool Count2/5

With only two tools, the server is too thin for a meaningful Omniboard service. Most similar servers would require at least 5-10 tools to cover basic operations.

Completeness2/5

The tool surface only covers listing and retrieving check results. Missing are tools for creating, updating, deleting, or triggering checks, leaving significant gaps in lifecycle coverage.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers