board-spec-mcp
Click on "Install 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., "@board-spec-mcpget spec for machine qrb5165"
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.
board-spec-mcp
MCP server that serves Qualcomm Yocto board specs (machine_creation +
partition_conf fields) from the roshs189/board-spec
git repo — one branch per machine. Built to replace reading a Confluence
"Partition Spec" page in the qcom-yocto-new-machine and
qcom-partition-conf-new-board Claude Code skills.
What it does
Clones/fetches
board-specinto a local cache (~/.cache/board-spec-mcp/repoby default).Reads a board's spec straight from its branch (
origin/<machine>:boards/<machine>/spec.yaml) without checking it out — no working-tree conflicts, always in sync with arefresh_specscall.Validates specs against
schema/board-spec.schema.json(onmain) plus the cross-checks the skills used to do by hand:delta=newpartitions need anotesjustification and must not collide with SoC-mandated names (xbl/tz/hyp/aop/...),partition_files_subdirmust equalpartitions/<machine>/<storage_type>, chip IDs shouldn't collide across boards.
Related MCP server: kube-lint-mcp
Setup (anyone, from scratch)
Requires Python 3.10+ and an SSH key with read access to
github.com/roshs189/board-spec (or set BOARD_SPEC_REPO_URL to a repo you
do have access to — see Configuration below).
git clone <this-repo-url> board-spec-mcp
cd board-spec-mcp
python3 -m venv .venv
.venv/bin/pip install -e .Verify it starts cleanly:
.venv/bin/board-spec-mcp # should hang waiting on stdin — Ctrl-C to exitRegister with Claude Code
Add a .mcp.json in the project you want this available in (or merge into
an existing one):
{
"mcpServers": {
"board-spec": {
"command": "/absolute/path/to/board-spec-mcp/.venv/bin/board-spec-mcp"
}
}
}Restart Claude Code (or run /mcp to reconnect) and the tools below become
available.
Configuration
Environment variables, all optional:
Variable | Default | Purpose |
|
| Remote to clone/fetch |
|
| Local bare-ish clone location |
Set these in the .mcp.json entry's "env" block if you need a fork or a
different cache path:
{
"mcpServers": {
"board-spec": {
"command": "/absolute/path/to/board-spec-mcp/.venv/bin/board-spec-mcp",
"env": { "BOARD_SPEC_REPO_URL": "git@github.com:<you>/board-spec.git" }
}
}
}Tools
list_boards()— every machine with a branch inboard-spec(excludesmain).get_board_spec(machine)— full spec.get_machine_creation_fields(machine)— just themachine_creationsection.get_partition_conf_fields(machine)— just thepartition_confsection.validate_board_spec(machine)—{valid, schema_errors, warnings}.refresh_specs()— fetch latest branches/commits (call after a spec is pushed).
Also exposed as a resource: board-spec://<machine>.
Adding a new board
Specs are human-authored and PR-reviewed in board-spec itself — this server
only reads, never writes. See that repo's README for the branch/PR workflow.
Available Tools
6 toolsget_board_specA
Return the full board spec (machine_creation + partition_conf sections) for a machine.
Raises if no branch named machine exists in the board-spec repo.
| Name | Required | Description | Default |
|---|---|---|---|
| machine | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It states the tool returns data or raises an error, but does not disclose other behaviors like whether it is read-only, required permissions, or side effects.
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?
Two concise sentences, front-loaded with the core purpose, no redundant information.
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 tool has one simple parameter and no output schema, the description covers the basic functionality and an error condition. However, it could add context about the return format and that it is a read operation.
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?
Schema_description_coverage is 0%, but the description adds meaning to the single parameter 'machine' by linking it to a branch name in the repo. However, it doesn't elaborate on format or constraints beyond that.
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 tool returns the full board spec, specifically mentioning the two sections (machine_creation and partition_conf) it includes. This distinguishes it from siblings like get_machine_creation_fields and get_partition_conf_fields that return only partial data.
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 when the full spec is needed and warns of an error condition (no branch named after the machine), but does not explicitly guide when to use this vs. the sibling tools that return subsets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_machine_creation_fieldsB
Return only the machine_creation section of a board's spec.
Use this from the qcom-yocto-new-machine skill instead of parsing a Confluence page's Board Identity / Disk Configuration sections.
| Name | Required | Description | Default |
|---|---|---|---|
| machine | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but lacks details on side effects, idempotency, authentication, or return format. It only states the output is the machine_creation section, which is minimal.
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 two sentences: the first states the purpose concisely, and the second provides usage guidance. Every sentence adds value without redundancy.
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?
Despite low complexity (1 parameter, no output schema), the description does not explain the parameter or output structure, which an agent would need to use the tool correctly. It is adequate but leaves gaps.
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 schema has 0% description coverage for the 'machine' parameter, and the description does not explain what the parameter means or any constraints. It adds no meaning beyond the schema field name.
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 tool returns only the 'machine_creation' section of a board's spec, using a specific verb ('Return') and resource. It distinguishes itself from siblings like 'get_board_spec' which returns the full spec.
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 explicitly advises to use this from the 'qcom-yocto-new-machine skill' instead of manually parsing Confluence pages, providing clear context for when to use this tool and an alternative to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_partition_conf_fieldsA
Return only the partition_conf section of a board's spec.
Use this from the qcom-partition-conf-new-board skill instead of parsing a Confluence page's Partition Table / contents.xml.in Metadata sections.
| Name | Required | Description | Default |
|---|---|---|---|
| machine | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description indicates a read-only retrieval of a specific configuration section, but lacks details on permissions or error states; annotations missing so description carries burden, but is adequate for a simple query.
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?
Two concise sentences front-load the purpose and usage, with no extraneous information.
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?
Sufficient for a simple retrieval tool with one parameter; however, lacks output schema details and error behavior, but the core intent is well-covered.
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?
Single parameter 'machine' has 0% schema description coverage, and the description does not mention or explain the parameter, failing to add any meaning beyond the name.
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?
Describes specific verb 'Return' and resource 'partition_conf section of a board's spec', clearly distinguishing from alternative methods like parsing Confluence pages.
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?
Explicitly states when to use ('from the qcom-partition-conf-new-board skill') and what to avoid ('instead of parsing a Confluence page...'), providing clear context among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_boardsA
List all board (machine) names available as branches in the board-spec repo.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description fully describes the read-only behavior of listing board names. No side effects or additional behaviors are needed for this simple operation.
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?
A single, front-loaded sentence with no wasted words. Every part is necessary and clear.
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 zero parameters and an output schema present, the description is complete. It specifies the return type (board names) and source (branches in board-spec repo). Nothing essential is missing.
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 tool has zero parameters, so baseline 4 applies. The description adds context that the list comes from the board-spec repo branches, which is useful beyond the input schema.
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 it lists all board names from branches in the board-spec repo, using a specific verb and resource. This distinguishes it from sibling tools which retrieve specs, fields, or validate.
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?
No explicit guidance on when to use vs alternatives, but it's implied since siblings have different purposes. The description does not provide when-not context or alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_specsA
Fetch the latest branches/commits from the board-spec remote.
Call this if a spec was just pushed/updated and you need the MCP to see it without restarting the server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral transparency. It states the action and a key benefit (no restart), but does not disclose potential side effects, failure modes, or authorization requirements, which are important for a tool that modifies server state.
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 two concise sentences. It front-loads the core purpose and provides a usage condition, with no redundant information.
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 tool has no parameters and an output schema exists, the description is complete. It tells what the tool does and when to use it, which is sufficient for an AI agent to decide and invoke correctly.
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 tool has no parameters, and schema description coverage is 100%. The description need not add parameter details; baseline of 4 is appropriate as it adds no additional value beyond the schema, but none is needed.
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 tool's action: 'Fetch the latest branches/commits from the board-spec remote.' It uses a specific verb and resource, distinguishing it from sibling tools like get_board_spec or validate_board_spec.
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 explicit when-to-use guidance: 'Call this if a spec was just pushed/updated and you need the MCP to see it without restarting the server.' This indicates a specific scenario, though it does not directly contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_board_specA
Schema-validate a board spec and run the cross-checks the skills used to do by hand against a Confluence page: delta=new partitions must have notes and must not collide with SoC-mandated names (xbl/tz/hyp/aop/...), partition_files_subdir must match partitions//, reference_board should exist, and chip IDs should not collide across boards.
Returns {valid, schema_errors, warnings}. schema_errors block automation; warnings should be surfaced to a human but don't block by themselves.
| Name | Required | Description | Default |
|---|---|---|---|
| machine | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It transparently describes the validation checks performed and the return format (valid, schema_errors, warnings) with behavioral consequences (schema_errors block automation, warnings do not). Missing are potential side effects or authorization needs, but it's a read-only validation tool.
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 concise, comprising a single paragraph that front-loads the main action and lists specific checks. Could be slightly more structured (e.g., bullet points) but is efficient and avoids fluff.
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?
The description explains the validation logic and return format adequately for a simple tool, but it omits the input parameter description and does not mention prerequisites or assumptions about the board spec's existence. Given the context (1 param, no output schema), it is minimally complete but has clear gaps.
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 description does not explain the single required parameter 'machine' (type string). Schema coverage is 0%, so the description should compensate, but it does not mention the parameter at all, leaving the agent to infer its meaning from context.
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 tool's purpose: schema-validate a board spec and run cross-checks. It lists specific checks (delta partitions must have notes, no collisions, etc.) distinguishing it from sibling tools that retrieve or list board specs.
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 for validation but does not explicitly state when to use this tool versus alternatives like get_board_spec or refresh_specs. No guidance on when not to use it or prerequisites.
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.
6 tool updates
v0.1.0- First observed
get_board_spec - First observed
get_machine_creation_fields - First observed
get_partition_conf_fields - First observed
list_boards - First observed
refresh_specs - First observed
validate_board_spec
TDQS
Scored across 6 tools
Each tool has a distinct purpose: retrieving full spec, specific sections, listing boards, refreshing, and validating. No overlap or ambiguity.
All tool names follow a consistent snake_case verb_noun pattern (e.g., get_board_spec, list_boards, validate_board_spec).
Six tools cover the core operations for board spec management without being excessive or insufficient.
The set covers reading, listing, refreshing, and validating specifications. Missing write/create operations, but these may be handled externally via git.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Product Management
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that provides Javelin Standalone Guardrails
Related MCP Servers
- FlicenseAqualityDmaintenanceMCP server for managing Git operations on local repositories, allowing users to list repositories, get and create tags, list commits, push tags, and refresh repositories through a standardized interface.63-
- AlicenseNot gradedqualityAmaintenanceMCP server to lint and validate Kubernetes-related manifests(Helm, FluxCD, ArgoCD, Kustomize, etc.)MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that distributes tool specifications from GitLab repositories to IDEs, dynamically generating MCP tools and serving files via aimcp:// URIs.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for interacting with GitLab API, supporting dynamic tool selection and enterprise-grade security.10MIT