feat: add StandupCraft and StatusCraft MCP server manifests - #354
feat: add StandupCraft and StatusCraft MCP server manifests#354jabbawocky wants to merge 1 commit into
Conversation
📝 WalkthroughWalkthroughTwo new MCP server registry entries are added: ChangesNew MCP Registry Server Entries
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Suggested labels
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR Summary by QodoAdd StandupCraft and StatusCraft MCP server manifests to registry Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo
1. Invalid env map values
|
| "env": { | ||
| "GITHUB_TOKEN": { | ||
| "description": "GitHub personal access token for fetching GitHub activity (optional — git activity works without it)", | ||
| "required": false | ||
| }, | ||
| "REPOS_DIR": { | ||
| "description": "Directory to scan for git repositories (default: home directory)", | ||
| "required": false | ||
| } | ||
| } |
There was a problem hiding this comment.
1. Invalid env map values 🐞 Bug ≡ Correctness
standupcraft.json defines installations.npm.env values as objects containing description/required, but the schema and runtime config expect env to be a string -> string map, so validation/parsing will fail.
Agent Prompt
## Issue description
`mcp-registry/servers/standupcraft.json` sets `installations.npm.env.GITHUB_TOKEN` and `installations.npm.env.REPOS_DIR` to objects (with `description` and `required`). The registry schema requires `installations.*.env` to be an object whose values are strings.
## Issue Context
- `mcp-registry/schema/server-schema.json` defines `installations.*.env` as `additionalProperties: { "type": "string" }`.
- MCPM runtime config parsing also models env as `Dict[str, str]`.
- Other manifests put variable metadata under top-level `arguments` and keep `installations.*.env` as placeholder string mappings.
## Fix Focus Areas
- mcp-registry/servers/standupcraft.json[26-46]
- mcp-registry/schema/server-schema.json[214-274]
- src/mcpm/core/schema.py[29-33]
## Suggested change shape
- Add a top-level `arguments` object:
- `GITHUB_TOKEN`: { description, required: false, example }
- `REPOS_DIR`: { description, required: false, example }
- Change `installations.npm.env` to string placeholders (or omit entirely if truly unused):
- `"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}", "REPOS_DIR": "${REPOS_DIR}" }`
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| "name": "jabbawocky" | ||
| }, | ||
| "license": "MIT", | ||
| "categories": ["Monitoring", "Developer Tools"], |
There was a problem hiding this comment.
2. Invalid categories values 🐞 Bug ≡ Correctness
statuscraft.json and standupcraft.json use category strings (including "Monitoring" and "Developer Tools") that are not allowed by the registry schema’s enumerated category list, so JSON-schema validation will fail and these manifests will be rejected.
Agent Prompt
## Issue description
`mcp-registry/servers/statuscraft.json` and `mcp-registry/servers/standupcraft.json` set `categories` to values that are not permitted by the enumerated category strings in `mcp-registry/schema/server-schema.json` (notably including "Monitoring" and "Developer Tools"), which causes JSON-schema validation to fail and the manifests to be rejected.
## Issue Context
The repo’s schema validation (`scripts/validate_manifest.py`) enforces `mcp-registry/schema/server-schema.json` (via `jsonschema.validate(...)`) for server JSON files; any `categories` entry not present in the schema’s `categories[].enum` list causes validation failure. The current category values in these manifests include strings that are not in that enum (for example, the schema expects "Dev Tools" rather than "Developer Tools").
## Fix Focus Areas
- mcp-registry/servers/statuscraft.json[13-15]
- mcp-registry/servers/standupcraft.json[13-15]
- mcp-registry/schema/server-schema.json[70-89]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
mcp-registry/servers/standupcraft.json (1)
71-73: ⚡ Quick winAdd date format constraints to date inputs.
Lines 73, 86, and 90 describe ISO dates, but the schema does not enforce it. Add
format(dateordate-time, whichever the server expects) to improve client-side validation and prevent malformed input.Also applies to: 84-90
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@mcp-registry/servers/standupcraft.json` around lines 71 - 73, The date input fields in the standupcraft.json schema (around the "date" field at lines 71-73 and two additional date fields at lines 84-90) specify ISO format in their descriptions but lack the `format` property that enforces this constraint. Add a `format` property with the value "date" or "date-time" (depending on what the server expects) to each date field definition to enable proper client-side validation and prevent malformed input.mcp-registry/servers/statuscraft.json (1)
75-79: ⚡ Quick winHarden
servicesarray validation for batch checks.Line 75 allows an empty list (and duplicates). Consider
minItems: 1anduniqueItems: trueso the contract rejects no-op or redundant requests early.Suggested diff
"services": { "type": "array", "items": {"type": "string"}, + "minItems": 1, + "uniqueItems": true, "description": "List of service IDs or names to check" }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@mcp-registry/servers/statuscraft.json` around lines 75 - 79, The `services` array schema definition lacks validation constraints that would prevent no-op or redundant requests. In the `services` property where type is set to "array" and items is defined as type "string", add two new validation properties: set `minItems` to 1 to ensure at least one service is specified, and set `uniqueItems` to true to prevent duplicate service IDs or names from being passed in the same batch check request.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@mcp-registry/servers/standupcraft.json`:
- Around line 92-95: The report_type field in the schema is defined as a generic
string type, but the description documents specific allowed values (client and
retro) that are not enforced at the schema level. Add an enum property to the
report_type field definition that restricts the accepted values to only the
documented options: client and retro. This will ensure invalid values are
rejected by the schema validation rather than being passed through to tool
execution.
---
Nitpick comments:
In `@mcp-registry/servers/standupcraft.json`:
- Around line 71-73: The date input fields in the standupcraft.json schema
(around the "date" field at lines 71-73 and two additional date fields at lines
84-90) specify ISO format in their descriptions but lack the `format` property
that enforces this constraint. Add a `format` property with the value "date" or
"date-time" (depending on what the server expects) to each date field definition
to enable proper client-side validation and prevent malformed input.
In `@mcp-registry/servers/statuscraft.json`:
- Around line 75-79: The `services` array schema definition lacks validation
constraints that would prevent no-op or redundant requests. In the `services`
property where type is set to "array" and items is defined as type "string", add
two new validation properties: set `minItems` to 1 to ensure at least one
service is specified, and set `uniqueItems` to true to prevent duplicate service
IDs or names from being passed in the same batch check request.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 10f7225f-3593-44ab-94b3-bd661e3079ad
📒 Files selected for processing (2)
mcp-registry/servers/standupcraft.jsonmcp-registry/servers/statuscraft.json
| "report_type": { | ||
| "type": "string", | ||
| "description": "Type of report: 'client' for client report, 'retro' for sprint retrospective" | ||
| } |
There was a problem hiding this comment.
Constrain report_type to documented values.
Line 94 defines allowed values (client/retro) in prose, but the schema accepts any string. Add an enum so invalid values are rejected before tool execution.
Suggested diff
"report_type": {
"type": "string",
- "description": "Type of report: 'client' for client report, 'retro' for sprint retrospective"
+ "enum": ["client", "retro"],
+ "description": "Type of report: 'client' for client report, 'retro' for sprint retrospective"
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "report_type": { | |
| "type": "string", | |
| "description": "Type of report: 'client' for client report, 'retro' for sprint retrospective" | |
| } | |
| "report_type": { | |
| "type": "string", | |
| "enum": ["client", "retro"], | |
| "description": "Type of report: 'client' for client report, 'retro' for sprint retrospective" | |
| } |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@mcp-registry/servers/standupcraft.json` around lines 92 - 95, The report_type
field in the schema is defined as a generic string type, but the description
documents specific allowed values (client and retro) that are not enforced at
the schema level. Add an enum property to the report_type field definition that
restricts the accepted values to only the documented options: client and retro.
This will ensure invalid values are rejected by the schema validation rather
than being passed through to tool execution.
There was a problem hiding this comment.
Pull request overview
Adds two new MCP server manifest entries to the mcp-registry so users can discover and install StandupCraft and StatusCraft via the registry.
Changes:
- Adds a new registry manifest for
statuscraftwith install instructions, examples, and tool metadata. - Adds a new registry manifest for
standupcraftwith install instructions, examples, and tool metadata.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 9 comments.
| File | Description |
|---|---|
| mcp-registry/servers/statuscraft.json | New registry manifest for StatusCraft (install + metadata + tools/examples). |
| mcp-registry/servers/standupcraft.json | New registry manifest for StandupCraft (install + metadata + tools/examples). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "name": "jabbawocky" | ||
| }, | ||
| "license": "MIT", | ||
| "categories": ["Monitoring", "Developer Tools"], |
| { | ||
| "name": "statuscraft", | ||
| "display_name": "StatusCraft", | ||
| "description": "MCP server that checks the live status of 141 major software services in real time. Ask your AI agent 'is GitHub down?' or 'what's wrong with Stripe?' and get a live answer pulled directly from official status pages, including full incident detail when something is broken. Services include AWS, Azure, Cloudflare, GitHub, Anthropic, OpenAI, Stripe, Vercel, Netlify, Linear, and more. No API key required.", |
| }, | ||
| { |
| }, | ||
| { | ||
| "name": "list_services", | ||
| "description": "List all 141 tracked services with their IDs and categories", |
| } | ||
| ], |
| "name": "jabbawocky" | ||
| }, | ||
| "license": "MIT", | ||
| "categories": ["Productivity", "Developer Tools"], |
| "installations": { | ||
| "npm": { | ||
| "type": "npm", | ||
| "command": "npx", | ||
| "args": [ | ||
| "-y", | ||
| "github:jabbawocky/standupcraft" | ||
| ], | ||
| "description": "Run directly via npx — no global install needed", | ||
| "env": { | ||
| "GITHUB_TOKEN": { | ||
| "description": "GitHub personal access token for fetching GitHub activity (optional — git activity works without it)", | ||
| "required": false | ||
| }, | ||
| "REPOS_DIR": { | ||
| "description": "Directory to scan for git repositories (default: home directory)", | ||
| "required": false | ||
| } | ||
| } | ||
| } | ||
| }, |
| "tools": [ | ||
| { | ||
| "name": "generate_standup", | ||
| "description": "Generate a daily standup note from git commits and GitHub activity", | ||
| "inputSchema": { | ||
| "type": "object", | ||
| "properties": { | ||
| "date": { | ||
| "type": "string", | ||
| "description": "Date to generate standup for (ISO format, defaults to today)" | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| { | ||
| "name": "generate_report", | ||
| "description": "Generate a weekly client report or sprint retrospective from git and GitHub activity", | ||
| "inputSchema": { | ||
| "type": "object", | ||
| "properties": { |
| "start_date": { | ||
| "type": "string", | ||
| "description": "Start date for the report period (ISO format)" | ||
| }, | ||
| "end_date": { | ||
| "type": "string", | ||
| "description": "End date for the report period (ISO format)" | ||
| }, | ||
| "report_type": { | ||
| "type": "string", | ||
| "description": "Type of report: 'client' for client report, 'retro' for sprint retrospective" | ||
| } | ||
| } | ||
| } | ||
| } | ||
| ], | ||
| "prompts": [], |
Adds two free MCP servers to the registry:
StandupCraft (
standupcraft)npx -y github:jabbawocky/standupcraftStatusCraft (
statuscraft)npx -y github:jabbawocky/statuscraftBoth are MIT licensed, free, and can be run with a single
npxcommand — no global install needed.Summary by CodeRabbit
Release Notes