Skip to main content
Glama
igor-olikh

OpenSpec MCP Server

by igor-olikh

OpenSpec MCP Server (AI Assistant Plugin)

NPM Version NPM Downloads Official Site

Welcome! This is a simple bridge (plugin) that connects OpenSpec to your favorite AI coding assistant (like IBM Bob, Codex, or Claude Desktop).

What is this and why do I need it?

When you want your AI to build a new feature, you usually just type it into the chat. But as projects grow, the AI can forget things, get confused, or write messy code.

OpenSpec is a system that solves this. It forces the AI to create a clear "specification" (a plan) before it writes any code. It organizes your plan into neat folders (proposal, design, tasks) so you can review it.

However, your AI doesn't automatically know how to use OpenSpec. That is what this server does! It gives your AI the "tools" it needs to automatically create these folders, list tasks, and mark them as complete as it writes code for you.


Related MCP server: Carrot AI PM

How to Connect Your AI

To use this, you need to tell your AI assistant where this server is located. The setup simply depends on which AI assistant you use.

Option 1: Connecting to IBM Bob

If you are using IBM Bob:

  1. In the IBM Bob IDE, click the three dots next to the gear icon in the upper right corner of the chat window and select MCP servers.

  2. Click Open next to "Global MCPs" to edit your settings file (usually saved at ~/.bob/settings/mcp_settings.json).

  3. Add the openspec server to the mcpServers object:

{
  "mcpServers": {
    "openspec": {
      "command": "npx",
      "args": [
        "-y",
        "@igor-olikh/openspec-mcp-server"
      ]
    }
  }
}
  1. Save the file and restart IBM Bob!

Option 2: Connecting to Codex

Codex has a built-in user interface to easily add these plugins. You can add it quickly by running this terminal command:

codex mcp add openspec-server npx -y @igor-olikh/openspec-mcp-server

Or, manually through the Codex User Interface:

  1. Open the "Connect to a custom MCP" box in Codex.

  2. Name: openspec

  3. Mode: Leave as STDIO

  4. Command to launch: npx

  5. Arguments: Click + Add argument twice and paste exactly:

    • First argument: -y

    • Second argument: @igor-olikh/openspec-mcp-server

  6. Working directory: Leave this blank! (This allows Codex to dynamically use OpenSpec inside whichever project you currently have open).

  7. Save it!

Option 3: Connecting to Claude Desktop App

If you prefer using the Claude Desktop application:

  1. Open your Claude configuration file (usually located at ~/Library/Application Support/Claude/claude_desktop_config.json on Mac).

  2. Add the openspec server to it:

{
  "mcpServers": {
    "openspec": {
      "command": "npx",
      "args": [
        "-y",
        "@igor-olikh/openspec-mcp-server"
      ]
    }
  }
}
  1. Save the file and restart Claude Desktop.


How do I use it?

Once connected, you don't need to do anything technical. You just talk to your AI like normal, but ask it to use OpenSpec!

Example Chat Prompts:

  • "Hey Bob, I want to add a dark mode feature to this application. Please use OpenSpec to propose and validate it."

  • "What is the OpenSpec status of our current project?"

  • "List all the OpenSpec changes we are currently working on."

The AI will automatically use the tools below to handle the rest!


For Developers (Under the Hood)

This server exposes the official @fission-ai/openspec CLI commands as Model Context Protocol (MCP) JSON-RPC tools.

Available AI Tools:

  • openspec_init: Starts OpenSpec in a project.

  • openspec_new_change: Creates a folder for a new feature proposal.

  • openspec_status: Checks how much of the feature is done.

  • openspec_validate: Checks if the code matches the plan.

  • openspec_archive: Marks the feature as 100% completed.

  • openspec_list: Shows all current tasks.

  • openspec_show: Reads a specific task.

  • openspec_update: Updates OpenSpec rules.

  • openspec_instructions: Reads AI instructions for building parts of the plan.

  • openspec_read_file: Reads any spec artifact directly by name and file type — much faster than show, no subprocess overhead.

  • openspec_refresh_cache: Force-refreshes the cached directory listing if files changed outside OpenSpec tools.

Built-in Prompts:

  • openspec_kickoff: A pre-made prompt that steers the AI into a strict spec-driven workflow from the first turn. Automatically injected when supported by the AI assistant.

Development Setup

If you want to modify this server's code:

  1. npm install (Installs dependencies)

  2. npm run build (Compiles the code)

  3. npm run start (Runs the server to test standard input/output)


Recent Changes

  • Built-in MCP Prompts: The openspec_kickoff prompt automatically steers your AI into a strict spec-driven workflow from the first turn.

  • Direct File Readers with In-Memory Cache: New openspec_read_file tool reads spec artifacts directly via the filesystem, bypassing CLI subprocess overhead. An in-memory cache of the directory structure serves list queries in under 1ms. Cache auto-refreshes after any mutating operation.

Upcoming Features (Planned via OpenSpec)

  • Structured JSON Outputs: Replacing raw terminal output with parsed JavaScript objects, preventing the AI from misreading states and reducing hallucinations.

  • Smart Error Handling: Coaching the LLM when OpenSpec validations fail (e.g. intercepting terminal errors to output: "Hey, you forgot the 'Tasks' header in design.md").

Available Tools

11 tools
openspec_archiveC

Archive a completed change and update main specs

ParametersJSON Schema
NameRequiredDescriptionDefault
skipSpecsNoSkip spec updates
changeNameYesName of the change to archive

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears the full burden of disclosing behavior. It only reveals that main specs will be updated, but does not explain what archiving entails (e.g., whether it's reversible, if it moves/copies data, or requires permissions). This is insufficient for a mutation tool.

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 front-loads the key action and effect. It contains no wasted words and is easy to parse.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description lacks critical behavioral context and usage guidance. It does not address side effects, prerequisites, or the meaning of 'archived', making it incomplete for an agent to safely invoke.

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

Parameters3/5

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

Both parameters (changeName and skipSpecs) are described in the schema with 100% coverage, so the description adds no additional meaning. Baseline score of 3 is appropriate when the schema already documents all parameters.

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 primary action (archive a change) and the secondary effect (update main specs). It uses a specific verb and resource, and the 'archive' action is distinct from sibling tools like openspec_update or openspec_new_change, though it doesn't explicitly call out an alternative.

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?

No guidance on when to use this tool versus alternatives such as openspec_update or openspec_list. The only contextual clue is 'completed change', which implies a prerequisite but does not explain when archiving is appropriate or when to choose a different tool.

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

openspec_initC

Initialize OpenSpec in your project

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoAuto-cleanup legacy files without prompting
toolsNoAI tools to configure non-interactively. Use "all", "none", or a comma-separated list (e.g. "claude,cursor,codex"). Defaults to "claude".claude

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It fails to mention that initialization may alter the project (e.g., creating files, cleaning legacy files via the 'force' parameter), require confirmations, or have side effects. The only behavioral hint comes implicitly from the schema's 'force' parameter, which is not referenced in the description.

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

Conciseness4/5

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

The description is a single, concise sentence with no redundant words. It is front-loaded and readable, but the brevity borders on underspecification, so it earns a 4 rather than a 5.

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

Completeness2/5

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

For a tool that initializes a project, the description is far too thin. It does not explain what is created, whether it is interactive, how the 'tools' parameter affects behavior, or what the expected result is. With no output schema and no annotations, the description leaves substantial gaps for the agent.

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

Parameters3/5

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

Schema description coverage is 100% with clear descriptions for both 'force' and 'tools', including values and defaults. The description itself adds no additional parameter context, but the schema sufficiently documents the parameters; baseline 3 is appropriate.

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 states the specific action ('Initialize OpenSpec') and the target context ('in your project'), which clearly conveys the tool's purpose. It distinguishes itself from siblings like openspec_update and openspec_list by indicating setup rather than ongoing operations, though it lacks specific details about what initialization entails.

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?

No guidance is provided on when to use this tool vs alternatives. There is no mention of prerequisites, first-time setup context, or exclusions (e.g., 'use openspec_update for existing projects'), leaving the agent to infer usage solely from the name 'init'.

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

openspec_instructionsC

Output enriched instructions for an artifact or apply

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonNoOutput as JSON
artifactYesArtifact name (e.g. design.md, tasks.md) or "apply"
changeNameNoChange name

TDQS

C2.9/5.0
Behavior2/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. It states the tool 'outputs' instructions, implying a read-only operation, but does not disclose whether it has side effects, requires specific permissions, or how the output is structured. This is insufficient for a tool with no annotation support.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the primary action and target. It avoids verbosity and directly states the purpose, though it could benefit from slightly more detail without becoming bloated.

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

Completeness2/5

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

Given the simplicity of the tool (3 params, no output schema), the description is still too terse. It lacks context about what 'enriched instructions' means, what 'apply' refers to, and any expected output format or behavior. This is comparable to the 'update_drive' example, which scored 2 for completeness.

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

Parameters3/5

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

The schema descriptions cover 100% of parameters, so the baseline is 3. The tool description 'for an artifact or apply' aligns with the 'artifact' parameter but doesn't add new meaning beyond the schema. The 'json' and 'changeName' parameters are only explained in the schema, which is adequate.

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 tool outputs enriched instructions for an artifact or 'apply'. This action is specific and distinct from sibling tools like openspec_show or openspec_read_file, which likely display or read content. However, the term 'enriched' is somewhat vague, leaving ambiguity about what kind of enrichment is provided.

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. It doesn't mention any prerequisites, exclusions, or specific scenarios. The only hint is the name and phrase 'for an artifact or apply', which implies usage but lacks explicit direction.

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

openspec_listC

List items (changes or specs). Returns a JSON array when --json is used.

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonNoOutput as JSON
specsNoList specs instead of changes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry the burden. It mentions the JSON return behavior, but does not fully disclose whether it's read-only, what the default output format is, or any side effects. The behavioral information 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.

Conciseness5/5

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

The description is concise, front-loaded, and every sentence adds information about the tool's function and output. No wasted words.

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

Completeness2/5

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

Given the sibling tools, the description lacks guidance on how this tool fits in the workflow. It doesn't clarify the difference between listing and showing, or mention any prerequisites or side effects. The tool is simple, but the context is incomplete.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds minimal extra meaning. It implies the default is changes unless specs=true and mentions JSON array output, providing slight value beyond the schema's descriptions.

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 it lists items (changes or specs), identifying a specific verb and resource. It doesn't explicitly distinguish from sibling tools like openspec_show, but the 'list' verb is distinct enough to convey the basic purpose.

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?

No guidance is provided on when to use this tool versus alternatives like openspec_show or openspec_status. The description only states what it does, not when to choose it or when not to use it.

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

openspec_new_changeC

Create a new change directory

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the change
descriptionNoDescription to add to README.md

TDQS

C2.9/5.0
Behavior2/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 disclosing behavioral traits. It only mentions the action of creating a change directory but does not explain side effects, what files are generated, or any side effects. This is minimal and insufficient for a mutation-style tool.

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

Conciseness4/5

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

The description is a single, focused sentence without any fluff, which is efficient. However, it is arguably too terse to be fully informative, so it earns a 4 rather than 5.

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

Completeness2/5

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

Given the tool has two parameters, no output schema, and no annotations, the description is notably incomplete. It does not explain what a 'change directory' is, what gets created, or anything about the surrounding workflow, which would be necessary for an agent to use it correctly in context.

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

Parameters3/5

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

The input schema covers both parameters (name and description) with descriptions, and schema_description_coverage is 100%. The tool description adds no additional parameter semantics, but per rubric, with high coverage this is acceptable. However, it does not compensate for any nuance beyond the schema.

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 'Create a new change directory' clearly states the verb (create) and resource (change directory), making it easy to understand the tool's function. However, it does not explicitly differentiate this from sibling tools like openspec_init, which might also involve creation, so it falls short of a perfect 5.

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 (e.g., openspec_init or openspec_update). There are no exclusions, prerequisites, or contextual cues, leaving the agent without direction on appropriate usage.

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

openspec_read_fileA

Read any OpenSpec artifact directly. Much faster than show — use this when you need file contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesChange or spec name (e.g. "add-dark-mode")
typeNoItem type to disambiguate if a change and spec share the same name. If omitted, prefers changes.
fileTypeYesFile to read

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It conveys a non-mutating, direct read operation and a performance trait ('much faster than show'), but it does not disclose return formatting, error behavior, or whether content is returned verbatim.

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 two sentences long, front-loaded with the core action, and every word earns its place. It efficiently conveys purpose and usage guidance without redundancy.

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?

The tool is a simple file-read operation with a fully documented schema; the description plus schema provide enough context for invocation. It does not mention the output/return value, but for a read-file tool that is largely implied.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters described in the input schema. The description adds no additional parameter context, so the baseline of 3 is appropriate.

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 uses a specific verb and resource: 'Read any OpenSpec artifact directly.' It also distinguishes from the sibling tool `show` by noting it is 'much faster' and for file contents, making the purpose unmistakable.

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?

It explicitly says 'use this when you need file contents' and contrasts with `show` by speed, giving clear context for selection. It does not fully explain when `show` would be preferred, but the directional guidance is sufficient.

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

openspec_refresh_cacheA

Force refresh the cached directory listing. Use if you suspect changes were made outside OpenSpec tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It clarifies the target ('cached directory listing') and the action ('force refresh'), but does not mention potential side effects, safety profile, or whether it returns data. Since this is a simple cache refresh, the lack of deeper detail is acceptable but not fully transparent.

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?

Two concise sentences with no filler. The first sentence states the action; the second gives usage guidance. Every word earns its place.

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 zero-parameter tool with no output schema, the description gives purpose and usage, which is sufficient for an agent to decide when to invoke it. It could mention possible return values, but that is not critical for such a simple action. Overall, the description is complete enough given the tool's simplicity.

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 tool has zero parameters, so the schema already fully covers parameter semantics (vacuously). The description adds no parameter info, which matches the baseline of 4 for tools with no parameters.

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 uses a specific verb ('Force refresh') with a clear resource ('cached directory listing'), which exactly matches the tool name and distinguishes it from siblings like openspec_list (which lists without forcing a cache refresh).

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?

Provides explicit when-to-use context: 'Use if you suspect changes were made outside OpenSpec tools.' This clearly indicates the appropriate situation, though it does not name alternatives or exclusions explicitly.

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

openspec_showB

Show a change or spec. Use type to specify if it is ambiguous.

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonNoOutput as JSON
typeNoItem type: "change" or "spec"
itemNameYesName of the item to show

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry behavioral disclosure. It only mentions ambiguous type resolution but doesn't describe output format, side effects, or prerequisites, leaving the agent with limited behavioral context.

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, front-loaded sentence that wastes no words. It is appropriately concise for a simple show command.

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?

For a simple tool with full schema coverage, the description is minimally adequate but lacks usage guidance relative to siblings and doesn't mention the output behavior. It could be improved with a note about when to use it instead of list or read_file.

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

Parameters3/5

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

The schema covers 100% of parameters with descriptions. The description adds a small clarification about when to use the type parameter, but otherwise relies on the schema.

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 it 'shows a change or spec' with a specific verb and resource. It differentiates from siblings like list or read_file through the 'show' action, though it doesn't explicitly name alternatives.

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?

It provides no guidance on when to choose show over sibling tools like list or read_file. The only usage hint is 'Use type to specify if it is ambiguous,' which is parameter-specific rather than tool-selection guidance.

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

openspec_statusC

Display artifact completion status for a change

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonNoOutput as JSON
changeNameYesChange name to show status for (required by current CLI)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits, but it only says 'Display,' which is a mild implication of a read-only operation. It does not explain what happens for missing changes, the output format beyond 'status,' or any 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.

Conciseness5/5

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

The description is a single short sentence that front-loads the core purpose without any filler or repetition. It is appropriately concise for the tool's simplicity.

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

Completeness2/5

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

The tool has no output schema, so the description should explain what 'status' includes, but it does not. It leaves unanswered questions about the format of the status output, failure handling, and how the json flag affects the result, making it minimally complete for a simple tool.

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

Parameters3/5

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

The schema describes both parameters (changeName and json) with 100% coverage, so the baseline is 3. The description adds little beyond the schema, merely restating that a change is involved and not enriching the json parameter's semantics.

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 uses a specific verb ('Display') and names the resource ('artifact completion status for a change'), clearly stating the tool's function. It does not explicitly distinguish itself from sibling tools like openspec_show, but the intent is unambiguous.

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?

No guidance is provided on when to use this tool versus alternatives such as openspec_show or openspec_list. The description only implies status-checking for a specific change and does not state exclusions, prerequisites, or context.

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

openspec_updateC

Update OpenSpec instruction files

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.6/5.0
Behavior1/5

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

With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It only says 'Update' without explaining whether this modifies files in place, requires existing files, is destructive, or has side effects. There is no mention of permissions, error conditions, or what happens to the files being updated.

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 with no wasted words. It is front-loaded with the action and target. While it is terse, it meets the standard for conciseness, earning a top score for structure.

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

Completeness1/5

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

The tool has no parameters, no output schema, and no annotations, so the description is the only source of information. It fails to explain what 'update' means, the context of instruction files, or how this tool fits into the OpenSpec workflow. Given the sibling tools like openspec_instructions and openspec_refresh_cache, there is ambiguity about the tool's exact role. The description is far from 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, so the description does not need to explain parameter details. Per the rubric, 0 parameters gives a baseline of 4. The description adds nothing about parameter semantics because there are none, but it is not misleading. It would be better if it explained how the update is triggered without parameters, but that is beyond this dimension.

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 uses a specific verb ('Update') and resource ('OpenSpec instruction files'), which clearly states the action and target. It differentiates from sibling tools like openspec_list, openspec_show, and openspec_validate because 'update' implies a write operation. However, it does not elaborate on what 'instruction files' are or the scope of the update, so it stops short of a 5.

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

Usage Guidelines1/5

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

The description provides no information about when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or related tools such as openspec_instructions or openspec_new_change. The agent is left without guidance on choosing this tool among the many siblings.

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

openspec_validateC

Validate a change proposal or spec

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoValidate all changes and specs
jsonNoOutput as JSON
strictNoEnable strict validation mode
itemNameNoName of the change to validate (optional)

TDQS

C2.9/5.0
Behavior2/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. It only says 'validate' but does not explain whether validation is read-only, what side effects might occur, how errors are reported, or whether it modifies anything. This lack of transparency is significant for a tool that could potentially alter state.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no unnecessary words. However, it may be overly terse, sacrificing valuable context for brevity. Still, it earns its place and is not padded.

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

Completeness2/5

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

The tool has four optional parameters and no output schema, so the description should explain the validation workflow and expected outcomes. It does not mention how the flags (all, json, strict, itemName) affect behavior, what a validation report looks like, or how this interacts with other openspec commands. This makes it incomplete for an agent to use correctly.

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

Parameters3/5

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

The input schema provides 100% coverage for all four parameters, each with a description, so the baseline is 3. The textual description adds no additional meaning beyond the schema, but since schema coverage is complete, it does not need to compensate.

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 identifies the action ('validate') and the resource ('a change proposal or spec'), which differentiates it from sibling tools like openspec_list or openspec_show. It is concise and uses a specific verb, but it doesn't elaborate on the scope or variants of validation.

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 gives no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It simply states the function, leaving the context and selection logic entirely to the agent.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv2.2.1
    • First observedopenspec_archive
    • First observedopenspec_init
    • First observedopenspec_instructions
    • First observedopenspec_list
    • First observedopenspec_new_change
    • First observedopenspec_read_file
    • First observedopenspec_refresh_cache
    • First observedopenspec_show
    • First observedopenspec_status
    • First observedopenspec_update
    • First observedopenspec_validate

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, but openspec_show and openspec_read_file overlap in reading file content, though the description notes read_file is faster for raw contents. Other tools like list/status are distinct enough.

Naming Consistency4/5

All tools share the openspec_ prefix and use snake_case. However, verbs (init, list, show) are mixed with nouns (status, instructions) and phrases (new_change). The pattern is consistent in terms of prefix but not strictly verb_noun.

Tool Count5/5

11 tools is well within the ideal range for a domain-specific server. Each tool covers a distinct aspect of OpenSpec project management, from initialization to archiving.

Completeness4/5

The tool set covers the core workflow: initialize, create, view, validate, status, and archive changes. Missing operations like delete or edit change are possible but not obviously required for OpenSpec's workflow, and the surface feels comprehensive.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/igor-olikh/openspec-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server