Mcp operations
Invoke version operations via the versions MCP server — tool naming, parameter conventions, server configuration, and batch patterns.From its SKILL.md
npx -y skills add scagogogo/versions-skills --skill mcp-operationsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `versions-mcp --transport sse --port 8080`.
SKILL.md
10.5 KB, ~3.1k tokens by cl100k_base, as published. Nobody here has run it
MCP Operations
Setup: See
/installationfor one-time MCP server binary install and configuration.
Layers: MCP (AI tools) — this skill covers MCP-specific patterns. For domain logic, see the corresponding version-* skill.
When to Use
- Invoking version operations as MCP tools from an AI agent
- Configuring the versions MCP server (stdio vs SSE transport)
- Understanding MCP tool naming conventions and parameter formats
- Composing multiple MCP tool calls to accomplish a multi-step task
- Working with the structured JSON responses from MCP tools
Decision Tree
Need to configure the MCP server?
→ Add to settings.json mcpServers block
Need to run the server over network (not local)?
→ Use --transport sse --port <port>
Need to find the right tool for a task?
→ All tools are prefixed version_ — see Tool Catalog below
Need to batch multiple operations?
→ Make sequential tool calls, passing results between them
Need file access from MCP?
→ Use version_read_file / version_write_file (operates on server's filesystem)
Task Patterns
Configure the MCP server
Goal: Register the versions MCP server in your AI client.
Claude Code — add to ~/.claude/settings.json (user scope) or .claude/settings.json (project scope):
{
"mcpServers": {
"versions": {
"command": "versions-mcp",
"args": ["--transport", "stdio"]
}
}
}
Cursor — add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"versions": {
"command": "versions-mcp",
"args": ["--transport", "stdio"]
}
}
}
Windsurf — add to .windsurf/mcp.json in your project root:
{
"mcpServers": {
"versions": {
"command": "versions-mcp",
"args": ["--transport", "stdio"]
}
}
}
VS Code (Copilot) — add to .vscode/mcp.json in your project root:
{
"servers": {
"versions": {
"command": "versions-mcp",
"args": ["--transport", "stdio"]
}
}
}
For SSE mode (network-accessible server):
versions-mcp --transport sse --port 8080
Parse and inspect a version
Goal: Get all properties of a version in one call.
version_parse(version_string="v1.2.3-beta1")
version_info(version_string="v1.2.3-beta1")
version_validate(version_string="v1.2.3-beta1")
Use version_info when you need all Is* flags at once. Use version_parse when you only need structural components. Use version_validate for a simple valid/invalid check.
Compare and sort versions
Goal: Compare two versions or sort a list.
version_compare(version1="1.2.3", version2="2.0.0")
version_sort(versions=["2.0.0", "1.0.0", "1.5.0"], descending=false)
Filter versions by criteria
Goal: Filter a list to only stable, prerelease, or constraint-matching versions.
version_filter(versions=["1.0.0-alpha", "1.0.0", "2.0.0-beta", "2.0.0"], stable=true)
version_filter(versions=["1.0.0", "1.5.0", "2.0.0"], constraint=">=1.0.0,<2.0.0")
Find min, max, or latest
Goal: Find the extreme version in a list.
version_min(versions=["1.0.0", "2.0.0", "1.5.0"])
version_max(versions=["1.0.0", "2.0.0", "1.5.0"])
version_latest_stable(versions=["1.0.0-alpha", "1.0.0", "2.0.0-beta", "2.0.0"])
version_latest_prerelease(versions=["1.0.0-alpha", "1.0.0", "2.0.0-beta", "2.0.0"])
Group versions
Goal: Cluster versions by their group ID.
version_group(versions=["1.0.0", "1.0.0-alpha", "1.0.1", "2.0.0", "2.0.0-beta"])
Check constraints and ranges
Goal: Test if a version satisfies a constraint expression or falls in a range.
version_constraint_check(expression=">=1.0.0,<2.0.0", version="1.5.0", type="set")
version_range_query(start="1.0.0", end="3.0.0", versions=["1.0.0", "1.5.0", "2.0.0", "3.0.0", "4.0.0"])
Mutate versions
Goal: Bump, build, or strip versions.
version_bump(version_string="1.2.3", bump_type="patch")
version_build(prefix="v", major=1, minor=2, patch=3, suffix="-alpha1")
version_core(version_string="v1.2.3-beta1")
Set operations
Goal: Remove duplicates or compute set difference/intersection/union.
version_unique(versions=["1.0.0", "2.0.0", "1.0.0", "2.0.0"])
version_set_operation(operation="difference", set_a=["1.0.0", "2.0.0"], set_b=["2.0.0", "3.0.0"])
Read and write version files
Goal: Read versions from or write versions to files on the MCP server's filesystem.
version_read_file(filepath="versions.txt", parse=true)
version_write_file(filepath="sorted.txt", versions=["2.0.0", "1.0.0", "1.1.0"])
Visualize versions
Goal: Generate a text tree of version hierarchy.
version_visualize(versions=["1.0.0", "1.0.1", "1.1.0", "2.0.0"], max_items_per_group=5)
version_visualize(versions=["1.0.0", "1.0.1", "2.0.0"], groups_only=true)
Batch multiple operations
Goal: Compose a multi-step workflow across MCP tool calls.
Example workflow — find the latest stable version in a group:
# Step 1: Group versions
version_group(versions=["1.0.0-alpha", "1.0.0", "1.0.1", "2.0.0-beta", "2.0.0"])
# Step 2: From the "1" group, find latest stable
version_latest_stable(versions=["1.0.0-alpha", "1.0.0", "1.0.1"])
API Reference
Server Configuration
Transport modes:
| Mode | Flag | Use Case |
|---|---|---|
| stdio | --transport stdio (default) | Local AI agent (Claude Code, Cursor, Windsurf, VS Code Copilot) |
| SSE | --transport sse --port <port> | Network-accessible server, shared/team deployments |
Per-client configuration:
| Client | Config file | Key format |
|---|---|---|
| Claude Code | ~/.claude/settings.json or .claude/settings.json | mcpServers.versions |
| Cursor | .cursor/mcp.json (project root) | mcpServers.versions |
| Windsurf | .windsurf/mcp.json (project root) | mcpServers.versions |
| VS Code Copilot | .vscode/mcp.json (project root) | servers.versions |
Tool Catalog
All tools use the version_ prefix. The versions parameter is always a JSON array of strings: ["1.0.0", "2.0.0"].
| Category | Tool | Key Arguments | Returns |
|---|---|---|---|
| Parse & Validate | version_parse | version_string, delimiters? | prefix, numbers, suffix, metadata |
| Parse & Validate | version_validate | version_string | {valid: bool, error: string?} |
| Parse & Validate | version_info | version_string | all Is* flags, segments, suffix info |
| Compare | version_compare | version1, version2 | -1, 0, or 1 |
| Sort & Filter | version_sort | versions, descending? | sorted version list |
| Sort & Filter | version_filter | versions, stable?, prerelease?, major?, minor?, patch?, prefix?, suffix?, constraint? | filtered version list |
| Group & Range | version_group | versions | grouped versions by group ID |
| Group & Range | version_range_query | start, end, versions, include_start?, include_end? | versions in range |
| Constraints | version_constraint_check | expression, version, type? (set/union) | {satisfies: bool} |
| Min/Max | version_min | versions | minimum version |
| Min/Max | version_max | versions | maximum version |
| Min/Max | version_latest_stable | versions | latest stable version |
| Min/Max | version_latest_prerelease | versions | latest prerelease version |
| Set Operations | version_unique | versions | deduplicated list |
| Set Operations | version_set_operation | operation (difference/intersection/union), set_a, set_b | result set |
| Mutation | version_build | prefix?, major?, minor?, patch?, suffix?, numbers? | constructed version |
| Mutation | version_bump | version_string, bump_type (major/minor/patch) | bumped version |
| Mutation | version_core | version_string | core version (suffix stripped) |
| File I/O | version_read_file | filepath, parse? (bool) | parsed versions or raw strings |
| File I/O | version_write_file | filepath, versions | {success, filepath, versions_written} |
| Visualization | version_visualize | versions, max_items_per_group?, groups_only? | tree string + counts |
Common Patterns
# Parse a version
version_parse(version_string="v1.2.3-beta1")
# Compare two versions
version_compare(version1="1.2.3", version2="2.0.0")
# Sort versions
version_sort(versions=["2.0.0", "1.0.0", "1.5.0"])
# Filter stable versions
version_filter(versions=["1.0.0-alpha", "1.0.0", "2.0.0"], stable=true)
# Check constraint
version_constraint_check(expression=">=1.0.0,<2.0.0", version="1.5.0")
# Range query
version_range_query(start="1.0.0", end="3.0.0", versions=["1.0.0", "1.5.0", "2.0.0", "3.0.0", "4.0.0"])
# Group versions
version_group(versions=["1.0.0", "1.0.0-alpha", "2.0.0"])
# Bump version
version_bump(version_string="1.2.3", bump_type="patch")
# Set difference
version_set_operation(operation="difference", set_a=["1.0.0", "2.0.0"], set_b=["2.0.0", "3.0.0"])
Cross-References
- [[cli-operations]] — equivalent operations via the CLI binary
- [[version-check]] —
version_inforeturns all Is* flags - [[version-sorting]] —
version_sortandversion_latest_* - [[version-mutation]] —
version_bump,version_build,version_core - [[version-file-operations]] —
version_read_file,version_write_file - [[version-visualization]] —
version_visualize - [[version-grouping]] —
version_group - [[version-constraints]] —
version_constraint_check - [[version-range-query]] —
version_range_query - [[version-comparison]] —
version_compare
Important Notes
- All tool names are prefixed with
version_to avoid collision with other MCP servers. - The
versionsparameter is always a JSON array of strings:["1.0.0", "2.0.0"]. version_constraint_checktype parameter:set(default, comma-separated AND) orunion(||-separated OR).version_set_operationoperation parameter:difference,intersection, orunion.version_bumpbump_type parameter:major,minor, orpatch.version_read_fileandversion_write_fileoperate on the server's local filesystem, not the client's.- All tools return JSON-formatted results with structured data.
- For SSE transport, the server listens on the specified port and accepts HTTP connections.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most mcp tooling skills give in ~3.1k tokens
Counted across 780 of the 1,136 authors here whose files we hold, read 2026-09-06
- Use Zod for input validationin 34 of 780, across 21 files
- Use stdio for local clientsin 27 of 780, across 10 files
- Restart Claude Code after configurationin 26 of 780, across 23 files
- Verify MCP server connection before using toolsin 23 of 780, across 17 files
- Define input schemas for every toolin 20 of 780, across 11 files
- Use Streamable HTTP for remote clientsin 18 of 780, across 8 files
- Pin SDK version in package.jsonin 17 of 780, across 6 files
- Keep server logic independent of transportin 16 of 780, across 6 files
- Verify SDK methods against official documentationin 15 of 780, across 5 files
- Format evaluation results as an XML filein 15 of 780, across 12 files
- Test servers using the MCP Inspectorin 15 of 780, across 14 files
- Create ten complex and independent evaluation questionsin 14 of 780, across 11 files
Said here and by no other author read
- Prefix all tool calls with version_
- Pass versions as a JSON array of strings
- Compose sequential tool calls for multi-step tasks
- Pass results between sequential tool calls
- Use version_info to retrieve all version flags
- Use version_parse to extract structural components
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.