Omniboard MCP
OfficialThis server provides two MCP tools for accessing actionable Omniboard checks and their results for a resolved project.
List actionable checks: Returns all actionable Omniboard checks that currently have results for the resolved project.
Get check results: Fetches the actionable prompt and check results for a specific check by its name.
Provides integration with GitLab for repository access, cloning, and pushing operations within agentic workflows.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Omniboard MCPlist actionable checks for this project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 tohttps://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 localfile: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/mcpCursor
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:
Inspect the project.
Edit the current workspace.
Run the relevant verification.
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:
implementedneeds_inputverifiedcommittedpushedmr_createddoneblockedfailed
A done progress report includes one of these resolutions:
mergeddismissed, optionally with aresolutionReasonsuch asfalse_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 becauseOMNIBOARD_API_KEYis 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:
The generated checkout's repository-local
user.nameanduser.email.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.emailIf 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.
Call
omniboard_runner_list_agentic_runsto select an active run unless the scheduler already supplies a run key.For manual selection, call
omniboard_runner_list_agentic_run_projectsfor the selected run. Use status filters, pagination, andview: "summary"for compact discovery.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, callomniboard_runner_prepare_next_agentic_run_projectsinstead; it scans and prepares migration workspaces until its requested limit is reached.Give the returned prompt, result context, and workspace path to the connected coding agent.
Run the relevant tests, lint, or build commands inside that workspace.
Call
omniboard_runner_finalize_agentic_run_workspaceseparately for each prepared workspace, with the commit and merge request wording.MCP CLI retains the Git checkout for inspection and recovery but removes its root
node_moduleswhenever 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:
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.
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.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.
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
fulfillmentvalue andtargetedByRunflag so discovery and batch preparation apply the run definition to the correct result variant.offsetandlimit: 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:
List runs and projects for read-only discovery and candidate selection.
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.
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:
Pending projects, including those without stored progress.
Started or published work: in_progress, implemented, verified, committed, pushed, mr_created.
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
Read the run, repository access, MR and CI diagnostics.
Reuse its checkout or clone the source branch if none exists.
Fetch the current source and target (normally main), preserve edits, and rebase.
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 toolsomniboard_get_actionable_check_resultsB
Get actionable prompt and check results for an actionable Omniboard check by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.6- First observed
omniboard_get_actionable_check_results - First observed
omniboard_list_actionable_checks
TDQS
Scored across 2 tools
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.
Both tools follow a consistent 'omniboard_verb_noun' pattern with snake_case, using 'list' and 'get' appropriately for their actions.
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.
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
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
An MCP server that provides Javelin Standalone Guardrails
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceLocal MCP server that allows agents to track documentation coverage on the codebases113MIT
- AlicenseBqualityDmaintenanceMCP Server for Git operations, agent templates, and project utilities.941 npmMIT
- AlicenseNot gradedqualityCmaintenanceLocal-first MCP server that provides project context, verification gates, and structured tools for coding agents to discover knowledge, run diagnostics, and execute allowlisted commands within a repository.16 npmMIT
- AlicenseNot gradedqualityCmaintenancePyPI-launched MCP server that exposes a living project model and outcome telemetry as read-only resources for MCP-aware clients.21 PyPI1Apache 2.0