React Development Workflow MCP Server
Allows creating Git branches with proper naming conventions (feat/ or fix/) based on task information.
Provides tools to check for code quality issues in a branch and automatically fix common SonarQube issues.
Enables fetching task details from Zoho Projects and updating task status (Open, In Progress, Completed).
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., "@React Development Workflow MCP ServerFetch Zoho task 123 and create a feature branch."
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.
React Development Workflow MCP Server
A Model Context Protocol (MCP) server implementation in TypeScript that streamlines the React development workflow by integrating Zoho Projects, Git, and SonarQube tools.
What is MCP?
The Model Context Protocol (MCP) is a standard for connecting AI assistants with data sources and tools. This server provides an integrated workflow for React developers to manage tasks, create branches, and ensure code quality in real-time.
Related MCP server: Error Tracker MCP Server
Features
This server provides the following tools:
Core Workflow Tools
fetch_zoho_task: Fetch task details from Zoho Projects by task ID
create_feature_branch: Create git branches (feat/ or fix/) based on task information
check_sonarqube_issues: Check for SonarQube code quality issues in a branch
auto_fix_sonarqube_issues: Automatically fix common SonarQube issues detected in code
update_task_status: Update task status in Zoho Projects (Open, In Progress, Completed)
generate_implementation_report: Generate a summary report of implementation and quality fixes
Utility Tools
get_time: Get the current time, optionally in a specific timezone
echo: Echo back a message
Workflow Overview
The typical workflow is:
fetch_zoho_task - Retrieve task details from Zoho Projects
create_feature_branch - Create a git branch with proper naming convention
Check code during implementation - While implementing, continuously use check_sonarqube_issues
auto_fix_sonarqube_issues - Fix detected quality issues in real-time
update_task_status - Update Zoho with progress
generate_implementation_report - Create a final report of work completed
Installation
Clone this repository
Install dependencies:
npm install
Building
Build the TypeScript code:
npm run buildSetup & Configuration
Before using this MCP, you need to set up:
Zoho Projects - API credentials for fetching tasks
SonarQube - Project configuration and authentication token
Git - User configuration for branch creation
See CONFIGURATION.md for detailed setup instructions.
⚠️ Security: Always keep credentials in .env.local (not committed). See SECURITY.md for best practices.
Usage
Quick Start
Configure credentials (see CONFIGURATION.md)
Start the MCP server:
npm startUse with Claude Code by adding to
.claude/settings.json
Running the Server
npm startOr for development with automatic rebuilding:
npm run devThe server will run on stdio and communicate using the MCP protocol.
Workflow Example
See WORKFLOW.md for a complete example of how to use this MCP in your React development workflow.
Using with VS Code
This project includes a .vscode/mcp.json configuration file that allows you to debug the MCP server directly in VS Code. The server will be available as "workflow-mcp" in your MCP client.
Development
Project Structure
mcp-demo/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript (generated)
├── .github/
│ └── copilot-instructions.md # GitHub Copilot instructions
├── .vscode/
│ └── mcp.json # VS Code MCP configuration
├── package.json
├── tsconfig.json
└── README.mdAdding New Tools
To add a new tool:
Define a Zod schema for input validation
Add the tool definition to the
ListToolsRequestSchemahandlerImplement the tool logic in the
CallToolRequestSchemahandler
Example:
// 1. Define schema
const MyToolSchema = z.object({
input: z.string().describe("Input parameter"),
});
// 2. Add to tools list
{
name: "my_tool",
description: "Description of what the tool does",
inputSchema: {
type: "object",
properties: {
input: {
type: "string",
description: "Input parameter",
},
},
required: ["input"],
},
}
// 3. Handle the tool call
case "my_tool": {
const parsed = MyToolSchema.parse(args);
return {
content: [
{
type: "text",
text: `Result: ${parsed.input}`,
},
],
};
}Dependencies
@modelcontextprotocol/sdk: MCP SDK for TypeScript
zod: Schema validation library
typescript: TypeScript compiler
@types/node: Node.js type definitions
Scripts
npm run build- Compile TypeScript to JavaScriptnpm start- Run the compiled servernpm run dev- Build and run the servernpm test- Run tests (placeholder)
License
ISC
Documentation
CONFIGURATION.md - Setup and configuration guide
WORKFLOW.md - Complete workflow examples
TOOLS.md - Detailed tool reference
External Resources
About This Project
This MCP was built to solve a real React development workflow problem:
The Problem: Developers waste 2-3 hours per week context-switching between Zoho Projects, Git, and SonarQube while implementing features.
The Solution: A single integrated MCP that:
Fetches tasks from Zoho
Creates proper git branches
Continuously checks code quality
Fixes issues in real-time
Updates task status automatically
Generates implementation reports
Time Saved: 2-3 hours per week per developer
Available Tools
13 toolsauto_fix_sonarqube_issuesC
Automatically fix common SonarQube issues
| Name | Required | Description | Default |
|---|---|---|---|
| issues | Yes | List of issues to fix | |
| fileType | No | File type being fixed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits on its own. It only states the tool 'fixes' issues, but does not clarify whether it modifies files in place, whether changes are reversible, any permissions needed, or what happens with unsupported issues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler words. It is front-loaded with the core action, but is so brief that it sacrifices valuable details that could be included without compromising conciseness.
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 tool is moderately complex (accepts an array of issue objects and an optional file type, likely modifies files), but no output schema exists and the description does not explain return values, side effects, failure modes, or requirements. This is insufficient for an agent to safely invoke the tool without more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with basic descriptions ('List of issues to fix', 'File type being fixed'), so the baseline is 3. The tool description adds no extra meaning beyond the schema and does not explain the expected structure of the 'issues' array or the effect of different fileType values.
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 uses a specific verb ('Automatically fix') and a resource ('common SonarQube issues'), clearly indicating the tool's goal. It is distinct from sibling tools like check_sonarqube_issues, though it doesn't specify what 'fix' entails or which exact issues are addressed.
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 guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical workflows (e.g., after running check_sonarqube_issues), or scenarios where this tool would be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_pr_statusB
Check the status of a pull request
| Name | Required | Description | Default |
|---|---|---|---|
| branchName | Yes | Branch name to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'check the status' without specifying what statuses are returned, whether authentication is needed, or how failures (e.g., nonexistent branch) are handled. This is minimal and lacks meaningful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema, but the description still omits what the status output looks like (e.g., open/merged/closed) and any expected behavior. This is a clear gap, making it minimally viable but incomplete.
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 100% with 'Branch name to check' for the single parameter. The description adds no additional meaning beyond the schema, so the baseline score of 3 applies.
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 'Check the status of a pull request' clearly states the specific action (check) and resource (pull request status). This distinguishes it from sibling tools like create_pull_request or merge_pull_request, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as using it before merging to verify readiness. No exclusions or alternative tool mentions are present, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_sonarqube_issuesB
Check SonarQube for code quality issues in a branch
| Name | Required | Description | Default |
|---|---|---|---|
| branchName | No | Git branch name to analyze | |
| projectKey | Yes | SonarQube project key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation via 'check' but does not explicitly state that it is non-destructive or safe to call. It also does not reveal what the tool returns (e.g., a list of issues, a status) or any side effects, which is a significant gap given the absence of annotations and output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of nine words, with no redundancy or filler. All words contribute to the meaning, and the key action and resource are front-loaded. It is an example of under-specification rather than unnecessary verbosity, but as a concise summary it earns a high score.
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 tool has no annotations, no output schema, and a very brief description. It fails to specify what 'check' means in terms of return behavior—whether it returns the issues, a summary, or just a status. Given the sibling tool auto_fix_sonarqube_issues, an agent might need to know if this tool just reports issues; the description does not clarify this, leaving a critical gap for decision-making.
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 100%, so both parameters are already described in the input schema. The description adds minimal extra meaning: 'in a branch' maps to the branchName parameter, but it does not clarify parameter usage beyond what the schema provides. Baseline 3 is appropriate because the schema does the heavy lifting.
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 uses a specific verb-resource combination: 'Check SonarQube for code quality issues in a branch.' It clearly distinguishes itself from siblings like auto_fix_sonarqube_issues by indicating a read-only 'check' rather than a fix operation, and from generate_implementation_report by focusing on SonarQube issues specifically.
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 guidance is provided on when to use this tool versus alternatives. It does not mention that auto_fix_sonarqube_issues should be used when fixing is needed, nor does it explain any prerequisites or context where this tool is appropriate. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_and_pushB
Commit changes and push to GitHub branch
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Files to commit (if empty, commits all) | |
| branch | Yes | Branch to push to | |
| message | Yes | Commit message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It doesn't disclose side effects like modifying the remote repository, requiring authentication, or behavior when files list is empty (despite schema noting it). It is a minimal action statement without broader 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean, front-loaded sentence with no wasted words. However, it is extremely terse and could benefit from a bit more context, so not a perfect 5.
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?
This is a mutation without annotations or output schema. The description doesn't cover usage, prerequisites, or potential side effects. While schema covers parameters, the description is too thin for an operation that modifies repository state.
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 100%, so each parameter is already documented. The description adds no additional parameter semantics beyond what the schema provides, earning the baseline score.
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 a specific verb ('Commit') and resource ('changes', 'GitHub branch'), accurately distinguishing this from sibling tools like create_pull_request or create_feature_branch.
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 guidance on when to use this tool vs alternatives. It lacks any context about development workflow or exclusions, such as when to use create_feature_branch or create_pull_request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_feature_branchB
Create a git branch (feat/ or fix/) based on task details
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Branch type: feature or fix | |
| taskId | Yes | Task ID | |
| taskName | Yes | Task name/title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states 'Create a git branch'. It omits side effects such as whether it checks out the branch, pushes to remote, or fails if the branch already exists.
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 sentence that is front-loaded with the action and resource, with no filler or 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?
Despite the three documented parameters, the description lacks operational context such as the exact branch naming format, whether the branch is pushed, and error handling, making it incomplete for reliable invocation.
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 coverage is 100% with clear descriptions for type, taskId, and taskName. The description adds minimal value beyond implying the branch prefix maps to the type parameter, so baseline 3 is appropriate.
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 uses a specific verb 'Create' with resource 'git branch', specifies branch prefixes 'feat/ or fix/', and references task details, clearly distinguishing it from sibling tools like create_pull_request.
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 when-to-use or alternative guidance is provided. It does not state prerequisites, when to prefer create_pull_request, or conditions for not using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_github_releaseC
Create a release on GitHub
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Release tag (e.g., v1.0.0) | |
| body | Yes | Release notes | |
| draft | No | Create as draft release | |
| title | Yes | Release title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states 'Create a release,' implying a mutation, but does not disclose side effects (e.g., creating a Git tag, publishing vs. draft behavior, permission requirements, or what the response includes). The behavior is opaque beyond the literal action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that immediately conveys the purpose. There is no extraneous information or repetition. It is front-loaded and easy to parse.
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 tool has 4 parameters, no output schema, and no annotations. A single sentence is insufficient to cover prerequisites, return values, or behavioral nuances. It does not even mention that draft releases are possible (which the schema reveals). The description is minimal but inadequate for a 4-parameter mutation tool.
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 100%, and each parameter has a clear description. The tool description adds no extra meaning beyond the schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Create a release on GitHub.' It distinguishes itself from sibling tools like create_pull_request or commit_and_push by naming a specific GitHub feature. However, it is generic and does not mention release-specific fields (tag, title, body) that the schema provides.
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 guidance is provided on when to use this tool versus alternatives. There is no mention of typical scenarios (e.g., tagging a new version) or exclusions (e.g., use create_pull_request for code changes). The description is a bare statement with no context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pull_requestB
Create a pull request on GitHub
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | PR description | |
| draft | No | Create as draft PR | |
| title | Yes | PR title | |
| sourceBranch | Yes | Source branch | |
| targetBranch | No | Target branch (default: main) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Create a pull request on GitHub', which restates the tool's action without disclosing side effects, permission requirements, or what happens on success/failure. This adds minimal behavioral context beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and very concise, not verbose. It earns its place by stating the core action, though it lacks elaboration. It is appropriately sized for a straightforward tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should provide more context about behaviors, requirements, or return values. It does not explain prerequisites like branch existence or authentication, nor what the PR object looks like on success. This is insufficient for a tool with 5 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage of parameter descriptions, so the baseline is 3. The description adds no additional parameter meaning, but it does not mislead either.
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 creates a pull request on GitHub, using a specific verb and resource. It distinguishes from siblings like check_pr_status and merge_pull_request, but does not explicitly contrast them or add scope details.
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?
Usage is implied: use when you want to create a pull request. There is no explicit guidance about when not to use it or which alternative to choose, but the action purpose is clear enough for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
echoA
Echo back a message
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message to echo back |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden. It states the core behavior ('echo back a message') but does not disclose any additional traits such as return format or side effects. For a trivial tool this is acceptable, but it adds no insight beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, four-word sentence that is maximally concise and front-loaded. Each word is necessary and there is no wasted content.
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 tool is extremely simple with one parameter and no output schema. The description is brief but sufficient for the trivial purpose; the return behavior (echoing the message) is self-evident from the tool name and description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter 'message' with a clear description. The tool description adds no additional semantic meaning beyond what the schema already provides, so the baseline 3 is appropriate.
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 'Echo back a message' clearly states the tool's function with a specific verb ('echo') and resource ('message'). It is immediately distinguishable from the listed sibling tools, which are unrelated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It simply states the function without contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_zoho_taskB
Fetch task details from Zoho Projects by task ID
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID from Zoho Projects | |
| projectKey | No | SonarQube project key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only states 'Fetch task details' without explicitly confirming read-only behavior, error handling, or response format. The projectKey parameter, described as a 'SonarQube project key' in the schema, remains unexplained, adding confusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core function without unnecessary detail.
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 is minimal for a tool with no annotations and no output schema. It fails to specify what 'task details' are returned, how errors are handled, or why projectKey is needed, leaving significant gaps for an agent relying solely on this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters with 100% description coverage. The tool description adds 'by task ID', which is redundant with the schema's 'Task ID from Zoho Projects'. It does not clarify the role of projectKey or its relevance to Zoho Projects.
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 uses the specific verb 'Fetch' with the resource 'task details from Zoho Projects' and the key 'by task ID', clearly defining the tool's scope. It is easily distinguished from sibling tools like update_task_status and generate_implementation_report.
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?
There is no guidance on when to use this tool versus alternatives. The verb 'Fetch' implies a read operation, but no explicit context, exclusions, or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_implementation_reportC
Generate a summary report of implementation and fixes
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID | |
| duration | No | Implementation duration | |
| taskName | Yes | Task name | |
| branchName | Yes | Git branch name | |
| issuesFixed | Yes | Number of SonarQube issues fixed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states the action without revealing side effects, output format, or whether it's read-only. The tool could generate a file, print to stdout, update a task, or have other effects—none of which are disclosed. This is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single declarative sentence that is front-loaded with the verb and resource. It contains no redundant or filler content, making it concise and easy to parse. However, it is so brief that it sacrifices usefulness for brevity, but conciseness rewards economy, hence a 4.
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 tool has 5 parameters (4 required), no output schema, and no annotations. The description tells the agent only that a report will be generated, but not what the report contains, how it is returned, or what the agent should do with the output. This is critically incomplete for a tool with moderate complexity and no additional structured metadata to rely on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema includes descriptions for all 5 parameters (100% coverage), so the schema itself already provides baseline meaning. The tool description adds no parameter-specific information, but since schema coverage is complete, the baseline score of 3 is appropriate.
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 action ('Generate') and the object ('summary report of implementation and fixes'), which distinguishes it from sibling tools like create_pull_request or check_sonarqube_issues. However, 'summary report' is somewhat vague and doesn't specify the report's audience or format, though it's specific enough to identify the tool's basic function.
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 gives no indication of when to use this tool versus alternatives. There is no mention of prerequisites, typical workflow placement, or exclusions (e.g., 'use this after auto_fix_sonarqube_issues'). The absence of any contextual guidance leaves the agent guessing about the appropriate invocation scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timeA
Get the current time, optionally in a specific timezone
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | Timezone (e.g., 'UTC', 'America/New_York') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries responsibility for behavioral disclosure. It mentions the optional timezone, which is a key behavior, but does not explain the default timezone, return format, or any other behavioral details. For a simple read-only tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly conveys the essential information without any filler. It is appropriately sized for a simple tool and front-loads the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description covers the essential use case. It does not detail default timezone behavior or output format, but these omissions are unlikely to prevent correct invocation for most simple use cases. The overall completeness is high for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the 'timezone' parameter with examples and indicates it's optional (0 required parameters). The description adds 'optionally' which reiterates the schema, providing marginal added meaning. With 100% schema coverage, a baseline of 3 is appropriate.
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 function with a specific verb ('Get') and resource ('current time'). It also distinguishes itself from sibling tools, none of which are time-related. The optional timezone parameter is highlighted, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (whenever current time is needed) but provides no explicit guidance or exclusions. There are no similar sibling tools, so ambiguity is low, but the description does not articulate usage context beyond the basic function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_pull_requestC
Merge a pull request
| Name | Required | Description | Default |
|---|---|---|---|
| branchName | Yes | Branch to merge | |
| mergeStrategy | No | Merge strategy | |
| deleteAfterMerge | No | Delete branch after merge |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It simply states 'Merge a pull request' without disclosing that this is a write/destructive operation, whether the branch is deleted by default, or any side effects. The meaning of mergeStrategy and deleteAfterMerge is left entirely to the schema.
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 extremely concise and front-loaded, but it essentially restates the tool name without adding value. It is not poorly structured, but it lacks the richness expected to make every word informative.
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?
This is a mutation tool with no annotations and no output schema, so the description needs to provide more context. It omits behavior around merge strategies, branch deletion, failure conditions, and the meaning of the return value, making the tool under-specified for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters with 100% coverage, so the schema provides the parameter meaning. The description adds no additional context about how branchName, mergeStrategy, or deleteAfterMerge are used, but it does not need to compensate because the schema is complete.
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 'Merge a pull request' clearly states the action and target resource. It is not vague, but it does not add any information beyond what the tool name already implies, and it does not mention that the merge is identified by a branch name or distinguish it from sibling tools beyond the verb.
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?
There is no guidance on when to use this tool versus alternatives like create_pull_request or check_pr_status. No prerequisites, exclusions, or conditions are provided, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_statusB
Update task status in Zoho Projects
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Task status | |
| taskId | Yes | Task ID from Zoho | |
| message | No | Status update message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the sole source of behavioral context. It simply restates the action 'Update' without disclosing side effects, permissions, reversibility, or any operational constraints. This is essentially a tautology of the tool name and fails to inform the agent about the impact of the 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?
The description is a single, concise sentence that is front-loaded with the core purpose. It contains no redundant or extraneous information, earning its place efficiently.
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?
Although the tool is simple and the schema covers parameter semantics, the lack of annotations and output schema means the description must explain the operation's broader context. It does not mention what happens after the update, whether the message parameter is required for a valid update, or any integration specifics. This leaves critical gaps for an agent deciding to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the parameters are already well-documented (e.g., status enum values, taskId source, message meaning). The description adds no parameter-specific meaning beyond what the schema provides, which aligns with the baseline of 3 for high coverage situations.
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 'Update task status in Zoho Projects' clearly states the specific verb (update) and resource (task status in Zoho Projects). It distinguishes itself from sibling tools, which primarily handle GitHub PRs, repository operations, or fetching tasks, none of which perform status updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing an existing task or the implications of changing status. No exclusions or when-not-to-use scenarios are offered, which leaves the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action and resource: GitHub operations (create/check/merge PR, create release), SonarQube (check/fix issues), Zoho (update/fetch task), git (create branch, commit/push), plus reporting and utilities. No two tools have overlapping purposes, even the generic get_time and echo are clearly unique.
All tool names follow a consistent snake_case, verb-first pattern (e.g., create_pull_request, check_sonarqube_issues, fetch_zoho_task). Even compound actions like commit_and_push use a clear verb phrase. The naming is uniform and predictable across all 13 tools.
13 tools is well within the ideal 3-15 range and appropriately scoped for a workflow server that integrates multiple systems (GitHub, SonarQube, Zoho, git). Each tool contributes to the workflow without redundancy, and the count feels neither sparse nor bloated.
The tool surface covers the full development lifecycle from feature branch creation, committing/pushing, creating and merging PRs, releasing, checking/fixing SonarQube issues, and updating Zoho tasks. Minor gaps exist such as updating PR details, adding comments/reviews, or reverting changes, but the core workflow is well covered.
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
Track stories, organize sprints, and manage project workflows across your team
DORA OS Conductor — 16-tool meta-orchestrator for DORA compliance workflow automation.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceIntegrates Jira and GitLab to enable AI agents to seamlessly manage issues, create branches, and automate SRE workflows from issue detection to fix deployment. Features AI-powered analysis for intelligent code generation and comprehensive automation across both platforms.
- AlicenseNot gradedqualityDmaintenanceAutomates error tracking workflow by finding code owners in Bitbucket, retrieving related pull requests, and creating assigned JIRA tickets for code errors.13MIT
- AlicenseBqualityDmaintenanceEnables execution of terminal commands, git operations, and automated setup of React, Vue, and Next.js projects with VSCode integration.721MIT
- AlicenseBqualityCmaintenanceAutomates the conversion of Figma designs into TypeScript React components and integrates with GitHub to create pull requests for the generated code. It includes visual regression testing with Playwright and accessibility validation to ensure implementations match the original designs.525MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/rushit-simform/react-workflow-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server