Yellhorn MCP
Yellhorn MCP is a Model Context Protocol server that integrates with GitHub and AI models to assist in software development tasks.
Create Workplans: Generates detailed implementation plans from prompts, considering the entire codebase, and posts them as GitHub issues
Judge Code Diffs: Evaluates git diffs and pull requests against original workplans to ensure alignment with requirements
GitHub Integration: Automatically creates labeled issues and posts feedback as sub-issues
Contextual Exclusion: Uses
.yellhornignorefiles to exclude specific files from AI contextResource Access: List and retrieve workplans by GitHub issue number
Model Support: Works with Gemini and OpenAI models
Analyzes repository content to create context-aware work plans and evaluates code changes through diff analysis against planned implementations.
Allows installation of the Yellhorn MCP server package directly from the Python Package Index.
Supports testing of the MCP server during development.
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., "@Yellhorn MCPcreate a workplan for adding user authentication to our web app"
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.
Yellhorn MCP

A Model Context Protocol (MCP) server that provides functionality to create detailed workplans to implement a task or feature. These workplans are generated with a large, powerful model (such as gemini 2.5 pro or even the o3 deep research API), insert your entire codebase into the context window by default, and can also access URL context and do web search depending on the model used. This pattern of creating workplans using a powerful reasoning model is highly useful for defining work to be done by code assistants like Claude Code or other MCP compatible coding agents, as well as providing a reference to reviewing the output of such coding models and ensure they meet the exactly specified original requirements.
Features
Create Workplans: Creates detailed implementation plans based on a prompt and taking into consideration your entire codebase, posting them as GitHub issues and exposing them as MCP resources for your coding agent
Judge Code Diffs: Provides a tool to evaluate git diffs against the original workplan with full codebase context and provides detailed feedback, ensuring the implementation does not deviate from the original requirements and providing guidance on what to change to do so
Seamless GitHub Integration: Automatically creates labeled issues, posts judgement sub-issues with references to original workplan issues
Context Control: Use
.yellhornignorefiles to exclude specific files and directories from the AI context, similar to.gitignoreMCP Resources: Exposes workplans as standard MCP resources for easy listing and retrieval
Google Search Grounding: Enabled by default for Gemini models, providing search capabilities with automatically formatted citations in Markdown
Automatic Chunking: Handles large codebases that exceed model context limits by intelligently splitting prompts
Rate Limit Handling: Robust retry logic with exponential backoff for rate limits and transient failures
Cost Tracking: Real-time cost estimation and usage tracking for all API calls
Multi-Model Support: Unified interface supporting OpenAI (GPT-4o, GPT-5, o3, o4-mini), xAI Grok (Grok-4, Grok-4 Fast), and Gemini (2.5-pro, 2.5-flash) models with reasoning mode support for GPT-5
Related MCP server: mcp-agent-review
Installation
Project bootstrap (uv)
# Install from source
git clone https://github.com/msnidal/yellhorn-mcp.git
cd yellhorn-mcp
# Provision the environment and install all dependency groups
uv sync --group dev
# Optional: activate the environment for direct shell usage
source .venv/bin/activate
# Verify the CLI entrypoint
uv run yellhorn-mcp --helpuv sync provisions .venv, installs the package in editable mode, and applies the dev
dependency group defined in pyproject.toml.
Install from PyPI
uv pip install yellhorn-mcpConfiguration
The server requires the following environment variables:
GEMINI_API_KEY: Your Gemini API key (required for Gemini models)OPENAI_API_KEY: Your OpenAI API key (required for OpenAI models)XAI_API_KEY: Your xAI API key (required for Grok models)REPO_PATH: Path to your repository (defaults to current directory)YELLHORN_MCP_MODEL: Model to use (defaults to "gemini-2.5-pro"). Available options:Gemini models: "gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite"
OpenAI models: "gpt-4o", "gpt-4o-mini", "o4-mini", "o3", "gpt-4.1"
GPT-5 models: "gpt-5", "gpt-5-mini", "gpt-5-nano" (support reasoning mode for gpt-5 and gpt-5-mini)
xAI Grok models: "grok-4" (256K context) and "grok-4-fast" (2M context)
Deep Research models: "o3-deep-research", "o4-mini-deep-research"
Note: Deep Research models (including GPT-5) automatically enable
web_search_previewandcode_interpretertools for enhanced research capabilities
YELLHORN_MCP_REASONING_EFFORT: Set reasoning effort level for GPT-5 models. Options: "low", "medium", "high". This provides enhanced reasoning capabilities at higher cost for supported models (gpt-5, gpt-5-mini). The effort level determines the amount of compute used for reasoning, with higher levels providing more thorough reasoning at increased cost. The server now forwards this value to every GPT-5 request and cost metrics automatically include the appropriate reasoning premium.YELLHORN_MCP_SEARCH: Enable/disable Google Search Grounding (defaults to "on" for Gemini models). Options:"on" - Search grounding enabled for Gemini models
"off" - Search grounding disabled for all models
ℹ️ Grok models now use the official
xai-sdk; ensure it is installed in the environment (it is included in the project dependencies, but custom deployments should add it explicitly).
The server also requires the GitHub CLI (gh) to be installed and authenticated.
Usage
Getting Started
Codex CLI Setup
Add the server configuration below to your Codex CLI config.toml (~/.config/codex/config.toml by default). Update the GEMINI_API_KEY (or swap in OPENAI_API_KEY/XAI_API_KEY and adjust the model) and REPO_PATH values to match your environment.
[mcp_servers.yellhorn-mcp]
command = "uv"
args = ["run", "yellhorn-mcp"]
env = { "GEMINI_API_KEY" = "your-api-key", "REPO_PATH" = "/path/to/your/repo" }Restart Codex after updating the configuration so it picks up the new MCP server.
VSCode/Cursor Setup
To configure Yellhorn MCP in VSCode or Cursor, create a .vscode/mcp.json file at the root of your workspace with the following content:
{
"inputs": [
{
"type": "promptString",
"id": "gemini-api-key",
"description": "Gemini API Key"
}
],
"servers": {
"yellhorn-mcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "yellhorn-mcp"],
"env": {
"GEMINI_API_KEY": "${input:gemini-api-key}",
"REPO_PATH": "${workspaceFolder}"
}
}
}
}Claude Code Setup
To configure Yellhorn MCP with Claude Code directly, add a root-level .mcp.json file in your project with the following content:
{
"mcpServers": {
"yellhorn-mcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "yellhorn-mcp", "--model", "o3"],
"env": {
"YELLHORN_MCP_SEARCH": "on"
}
}
}
}Tools
curate_context
Analyzes the codebase and creates a .yellhorncontext file listing directories to be included in AI context. This tool helps optimize AI context by understanding the task you want to accomplish and creating a whitelist of relevant directories, significantly reducing token usage and improving AI focus on relevant code.
Input:
user_task: Description of the task you want to accomplishcodebase_reasoning: (optional) Control the level of codebase analysis:"file_structure": (default) Basic file structure analysis (fastest)"lsp": Function signatures and docstrings only (lighter weight)"full": Complete file contents (most comprehensive)"none": No codebase context
ignore_file_path: (optional) Path to ignore file (defaults to.yellhornignore)output_path: (optional) Output path for context file (defaults to.yellhorncontext)depth_limit: (optional) Maximum directory depth to analyze (0 = no limit)disable_search_grounding: (optional) If set totrue, disables Google Search Grounding for this request
Output:
JSON string containing:
context_file_path: Path to the created.yellhorncontextfiledirectories_included: Number of directories included in the contextfiles_analyzed: Number of files analyzed during curation
The .yellhorncontext file acts as a whitelist - only files matching the patterns will be included in subsequent workplan/judgement calls. This significantly reduces token usage and improves AI focus on relevant code.
Example .yellhorncontext output:
src/api/
src/models/
tests/api/
*.config.jscreate_workplan
Creates a GitHub issue with a detailed workplan based on the title and detailed description.
Input:
title: Title for the GitHub issue (will be used as issue title and header)detailed_description: Detailed description for the workplan. Any URLs provided here will be extracted and included in a References section.codebase_reasoning: (optional) Control whether AI enhancement is performed:"full": (default) Use AI to enhance the workplan with full codebase context"lsp": Use AI with lightweight codebase context (function/method signatures, class attributes and struct fields for Python and Go)"none": Skip AI enhancement, use the provided description as-is
debug: (optional) If set totrue, adds a comment to the issue with the full prompt used for generationdisable_search_grounding: (optional) If set totrue, disables Google Search Grounding for this request
Output:
JSON string containing:
issue_url: URL to the created GitHub issueissue_number: The GitHub issue number
get_workplan
Retrieves the workplan content (GitHub issue body) associated with a workplan.
Input:
issue_number: The GitHub issue number for the workplan.disable_search_grounding: (optional) If set totrue, disables Google Search Grounding for this request
Output:
The content of the workplan issue as a string
revise_workplan
Updates an existing workplan based on revision instructions. The tool fetches the current workplan from the specified GitHub issue and uses AI to revise it according to your instructions.
Input:
issue_number: The GitHub issue number containing the workplan to reviserevision_instructions: Instructions describing how to revise the workplancodebase_reasoning: (optional) Control whether AI enhancement is performed:"full": (default) Use AI to revise with full codebase context"lsp": Use AI with lightweight codebase context (function/method signatures only)"file_structure": Use AI with directory structure only (fastest)"none": Minimal codebase context
debug: (optional) If set totrue, adds a comment to the issue with the full prompt used for generationdisable_search_grounding: (optional) If set totrue, disables Google Search Grounding for this request
Output:
JSON string containing:
issue_url: URL to the updated GitHub issueissue_number: The GitHub issue number
judge_workplan
Triggers an asynchronous code judgement comparing two git refs (branches or commits) against a workplan described in a GitHub issue. Creates a placeholder GitHub sub-issue immediately and then processes the AI judgement asynchronously, updating the sub-issue with results.
Input:
issue_number: The GitHub issue number for the workplan.base_ref: Base Git ref (commit SHA, branch name, tag) for comparison. Defaults to 'main'.head_ref: Head Git ref (commit SHA, branch name, tag) for comparison. Defaults to 'HEAD'.codebase_reasoning: (optional) Control which codebase context is provided:"full": (default) Use full codebase context"lsp": Use lighter codebase context (only function signatures for Python and Go, plus full diff files)"file_structure": Use only directory structure without file contents for faster processing"none": Skip codebase context completely for fastest processing
debug: (optional) If set totrue, adds a comment to the sub-issue with the full prompt used for generationdisable_search_grounding: (optional) If set totrue, disables Google Search Grounding for this request
Any URLs mentioned in the workplan will be extracted and preserved in a References section in the judgement.
Output:
JSON string containing:
message: Confirmation that the judgement task has been initiatedsubissue_url: URL to the created placeholder sub-issue where results will be postedsubissue_number: The GitHub issue number of the placeholder sub-issue
File Filtering System
Yellhorn MCP provides a sophisticated multi-layer file filtering system to control which files are included in the AI context. The system follows a priority order to determine file inclusion:
Filter Layers (in priority order)
.yellhorncontextwhitelist: If this file exists and contains patterns, ONLY files matching these patterns are included.yellhorncontextblacklist: Files matching blacklist patterns (starting with!) are excluded.yellhornignorewhitelist: Files matching whitelist patterns (starting with!) are explicitly included.yellhornignoreblacklist: Files matching these patterns are excluded.gitignoreblacklist: Files ignored by git are automatically excluded
Always Ignored Patterns
The following patterns are always ignored regardless of other settings:
.git/- Git metadata__pycache__/- Python cache filesnode_modules/- Node.js dependencies*.pyc- Python compiled files.venv/,venv/- Python virtual environments
File Format
Both .yellhornignore and .yellhorncontext files follow a gitignore-like syntax:
One pattern per line
Lines starting with
#are commentsEmpty lines are ignored
Use
!prefix for whitelist patterns (include explicitly)Directory patterns should end with
/
Example .yellhornignore
# Exclude test files
tests/
*.test.js
# Exclude build artifacts
dist/
build/
# But include important test utilities
!tests/utils/Example .yellhorncontext
# Only include source code and documentation
src/
docs/
README.md
# Exclude generated files even in src
!src/generated/Resource Access
Yellhorn MCP also implements the standard MCP resource API to provide access to workplans:
list-resources: Lists all workplans (GitHub issues with the yellhorn-mcp label)get-resource: Retrieves the content of a specific workplan by issue number
These can be accessed via the standard MCP CLI commands:
# List all workplans
mcp list-resources yellhorn-mcp
# Get a specific workplan by issue number
mcp get-resource yellhorn-mcp 123Development
# Ensure the environment is up to date
uv sync --group dev
# Run tests
uv run --group dev pytest
# Run tests with coverage report
uv run --group dev pytest -- --cov=yellhorn_mcp --cov-report term-missing
# Add or remove dependencies
uv add some-package
uv remove some-package
# Regenerate the lockfile (commit the result)
uv lockCI/CD
The project uses GitHub Actions for continuous integration and deployment:
Testing: Runs automatically on pull requests and pushes to the main branch
Linting with flake8
Format checking with black
Testing with pytest
Publishing: Automatically publishes to PyPI when a version tag is pushed
Tag must match the version in pyproject.toml (e.g., v0.2.2)
Requires a PyPI API token stored as a GitHub repository secret (PYPI_API_TOKEN)
To release a new version:
Update version in pyproject.toml and yellhorn_mcp/__init__.py
Update CHANGELOG.md with the new changes
Commit changes:
git commit -am "Bump version to X.Y.Z"Tag the commit:
git tag vX.Y.ZPush changes and tag:
git push && git push --tags
For a history of changes, see the Changelog.
For more detailed instructions, see the Usage Guide.
License
MIT
Available Tools
5 toolscreate_workplanA
Creates a GitHub issue with a detailed implementation plan.
This tool will:
Create a GitHub issue immediately with the provided title and description
Launch a background AI process to generate a comprehensive workplan
Update the issue with the generated workplan once complete
The AI will analyze your entire codebase (respecting .gitignore) to create a detailed plan with:
Specific files to modify/create
Code snippets and examples
Step-by-step implementation instructions
Testing strategies
Codebase reasoning modes:
"full": Complete file contents (most comprehensive)
"lsp": Function signatures and docstrings only (lighter weight)
"file_structure": Directory tree only (fastest)
"none": No codebase context
Returns the created issue URL and number immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| detailed_description | Yes | ||
| codebase_reasoning | No | full | |
| debug | No | ||
| disable_search_grounding | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does well by disclosing key behaviors: immediate issue creation, background AI process, codebase analysis respecting .gitignore, and return of issue URL/number. It lacks details on permissions, rate limits, or error handling, but provides substantial operational 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 well-structured with bullet points and clear sections, front-loaded with the main purpose. Every sentence adds value, such as explaining the process steps and codebase modes, without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters with 0% schema coverage and an output schema (which handles return values), the description is mostly complete. It covers the tool's process and key parameter semantics but misses some parameter details and behavioral aspects like error cases, making it slightly incomplete for full 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?
Schema description coverage is 0%, so the description must compensate. It explains codebase_reasoning modes in detail (full, lsp, file_structure, none), adding meaning beyond the schema. However, it doesn't clarify title, detailed_description, debug, or disable_search_grounding parameters, leaving some gaps.
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 GitHub issue with an implementation plan, specifying it's for GitHub issues and distinguishes from siblings like get_workplan (retrieval) and revise_workplan (modification). The verb 'creates' and resource 'GitHub issue' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing a detailed implementation plan for a codebase, with context on codebase reasoning modes for different scenarios. However, it doesn't explicitly state when to use this versus alternatives like curate_context or judge_workplan, or any prerequisites for GitHub access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curate_contextA
Analyzes the codebase and creates a .yellhorncontext file listing directories to be included in AI context.
This tool helps optimize AI context by:
Analyzing your codebase structure
Understanding the task you want to accomplish
Creating a .yellhorncontext file that lists relevant directories
Subsequent workplan/judgement calls will only include files from these directories
The .yellhorncontext file acts as a whitelist - only files matching the patterns will be included. This significantly reduces token usage and improves AI focus on relevant code.
Example .yellhorncontext: src/api/ src/models/ tests/api/ *.config.js
| Name | Required | Description | Default |
|---|---|---|---|
| user_task | Yes | ||
| codebase_reasoning | No | file_structure | |
| ignore_file_path | No | .yellhornignore | |
| output_path | No | .yellhorncontext | |
| disable_search_grounding | No | ||
| debug | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it analyzes codebase structure, creates a whitelist file, reduces token usage, and improves AI focus. However, it lacks details on potential side effects (e.g., file overwriting), error handling, or performance characteristics like rate limits, leaving some gaps for a tool with significant impact.
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 well-structured and front-loaded with the core purpose, followed by a bulleted list of steps and benefits. It's appropriately sized for a complex tool, though the example section could be slightly trimmed without losing clarity. Every sentence contributes to understanding, with minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no annotations) and the presence of an output schema (which handles return values), the description is mostly complete. It explains the tool's role, benefits, and output format (.yellhorncontext file). However, it lacks details on parameter interactions or edge cases, which could aid in more robust usage, leaving room for slight improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions analyzing 'codebase structure' and 'the task you want to accomplish,' which loosely relates to parameters like user_task and codebase_reasoning, but doesn't explain specific semantics (e.g., what user_task entails or how ignore_file_path works). The example .yellhorncontext file adds some context but doesn't directly clarify parameters, resulting in marginal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Analyzes the codebase and creates a .yellhorncontext file listing directories to be included in AI context.' It uses specific verbs ('analyzes,' 'creates') and identifies the resource (codebase, .yellhorncontext file), clearly distinguishing it from sibling tools like create_workplan or judge_workplan, which focus on different aspects of the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'This tool helps optimize AI context' and 'Subsequent workplan/judgement calls will only include files from these directories.' It implicitly distinguishes it from siblings by highlighting its role in context curation before other steps, though it doesn't explicitly name alternatives, the context makes the workflow clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workplanB
Retrieves the workplan content (GitHub issue body) for a specified issue number.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a retrieval operation, implying read-only behavior, but doesn't cover critical aspects like authentication requirements, rate limits, error handling (e.g., if the issue doesn't exist), or response format. The mention of 'GitHub issue body' adds some context, but overall, behavioral traits are minimally described for a tool with no annotation coverage.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action ('retrieves') and resource, making it easy to parse. Every part of the sentence adds value, such as specifying 'GitHub issue body,' and there's no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which likely covers return values), the description is somewhat complete but has gaps. It adequately explains what the tool does but lacks usage guidelines, behavioral details (like error cases), and doesn't fully compensate for the 0% schema coverage. For a simple retrieval tool, it's minimally viable but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning by specifying that the 'issue_number' parameter corresponds to a GitHub issue, which clarifies its purpose beyond the schema's generic title. However, with 0% schema description coverage and only one parameter, the baseline is 3, as the schema lacks descriptions but the description provides some compensation. It doesn't detail format constraints (e.g., numeric string) or examples, leaving gaps.
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 ('retrieves') and resource ('workplan content'), specifying it's the GitHub issue body for a given issue number. It distinguishes from siblings like create_workplan or revise_workplan by focusing on retrieval rather than creation or modification. However, it doesn't explicitly differentiate from other read operations like curate_context or judge_workplan, which may also involve reading workplan data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing issue), exclusions (e.g., not for creating or editing), or comparisons to siblings like curate_context or judge_workplan, which might also access workplan content. Usage is implied by the verb 'retrieves,' but no explicit context or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
judge_workplanA
Triggers an asynchronous code judgement comparing two git refs against a workplan.
This tool will:
Create a sub-issue linked to the workplan immediately
Launch a background AI process to analyze the code changes
Update the sub-issue with the judgement once complete
The judgement will evaluate:
Whether the implementation follows the workplan
Code quality and completeness
Missing or incomplete items
Suggestions for improvement
Supports comparing:
Branches (e.g., feature-branch vs main)
Commits (e.g., abc123 vs def456)
PR changes (automatically uses PR's base and head)
Returns the sub-issue URL immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_number | Yes | ||
| base_ref | No | main | |
| head_ref | No | HEAD | |
| codebase_reasoning | No | full | |
| debug | No | ||
| disable_search_grounding | No | ||
| subissue_to_update | No | ||
| pr_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well. It discloses key behavioral traits: the process is asynchronous, creates a sub-issue, launches a background AI analysis, and updates the sub-issue upon completion. It also details what the judgement evaluates (e.g., workplan adherence, code quality) and the immediate return of a sub-issue URL, covering most operational aspects.
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 appropriately sized and front-loaded, starting with the core purpose. Each sentence adds value: the bullet points clarify steps and evaluation criteria, and the final sentence states the return. There is no wasted text, making it efficient and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (asynchronous AI process, 8 parameters) and no annotations, the description is largely complete, covering purpose, behavior, and output. It mentions an output schema exists, so return values need not be detailed. However, it could improve by addressing parameter specifics or error handling, but it's sufficient for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining the types of comparisons supported (branches, commits, PRs), which relates to parameters like base_ref and head_ref. However, it does not detail other parameters (e.g., codebase_reasoning, debug), leaving gaps. The baseline is lowered due to incomplete coverage of the 8 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Triggers an asynchronous code judgement comparing two git refs against a workplan.' It specifies the verb ('triggers'), resource ('code judgement'), and scope ('against a workplan'), distinguishing it from sibling tools like create_workplan or revise_workplan, which focus on workplan creation or modification rather than evaluation.
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 clear context for when to use this tool: for comparing code changes (branches, commits, PRs) against a workplan. It does not explicitly mention when not to use it or name alternatives among siblings (e.g., get_workplan for retrieval), but the focus on judgement implies it's for evaluation scenarios, offering adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revise_workplanA
Updates an existing workplan based on revision instructions.
This tool will:
Fetch the existing workplan from the specified GitHub issue
Launch a background AI process to revise the workplan based on your instructions
Update the issue with the revised workplan once complete
The AI will use the same codebase analysis mode and model as the original workplan.
Returns the issue URL and number immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_number | Yes | ||
| revision_instructions | Yes | ||
| codebase_reasoning | No | full | |
| debug | No | ||
| disable_search_grounding | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and provides good behavioral context: it describes a multi-step process (fetch, AI revision, update), mentions background execution, specifies AI uses same analysis mode/model as original, and notes immediate return of issue URL/number. It doesn't cover permissions, rate limits, or error handling, but adds substantial value beyond basic purpose.
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 well-structured and front-loaded: the first sentence states the purpose, followed by a bulleted list of steps and additional details. Every sentence adds value—no repetition or waste—making it efficient 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?
Given 5 parameters with 0% schema coverage, no annotations, and an output schema (which handles return values), the description does well by explaining the core process and key parameters. It could improve by covering optional parameters and more behavioral aspects like error cases, but it's largely complete for a mutation tool with output schema support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly explains 'issue_number' (fetches from GitHub issue) and 'revision_instructions' (basis for AI revision), covering the two required parameters. However, it doesn't address optional parameters like 'codebase_reasoning' or 'debug', leaving some gaps in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Updates an existing workplan based on revision instructions.' It specifies the verb ('Updates'), resource ('existing workplan'), and distinguishes from siblings like 'create_workplan' (creates new) and 'get_workplan' (reads only). The three-step breakdown further clarifies the scope.
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 by mentioning it updates an existing workplan from a GitHub issue, suggesting it's for revisions after creation. However, it lacks explicit guidance on when to use this vs. alternatives like 'create_workplan' for new workplans or 'judge_workplan' for evaluation, and doesn't mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct primary purpose: create_workplan initiates planning, curate_context manages codebase context, get_workplan retrieves plans, judge_workplan evaluates implementations, and revise_workplan updates plans. There is minor potential overlap between create_workplan and revise_workplan (both generate/update workplans), but their distinct triggers and descriptions help differentiate them effectively.
All tools follow a consistent verb_noun naming pattern (e.g., create_workplan, judge_workplan, revise_workplan). The verbs are clear and descriptive, and the snake_case style is uniformly applied across all five tools, making the set predictable and easy to navigate.
With 5 tools, the server is well-scoped for its purpose of managing AI-driven workplan creation and evaluation in GitHub contexts. Each tool serves a specific, necessary function in the workflow, from planning to context curation to judgement, without redundancy or bloat, fitting a typical range for focused MCP servers.
The tool set covers the core lifecycle of workplan management: creation (create_workplan), retrieval (get_workplan), revision (revise_workplan), and evaluation (judge_workplan), with context optimization (curate_context) as a supporting function. A minor gap exists in direct deletion or archiving of workplans, but agents can likely handle this through GitHub's native tools, and the coverage supports end-to-end workflows effectively.
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
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for generating rough-draft project plans from natural-language prompts.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that provides dynamic codebase context to Claude Code through tools like hybrid search, recent changes, and symbol definitions, enhancing AI-assisted coding with local RAG.8MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides agentic code review powered by OpenAI-compatible models, designed for use with Claude Code.1MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that integrates Google Gemini CLI with Claude Code for AI-powered development assistance, enabling code review, bug analysis, feature planning, and code explanation without requiring an API key.8MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables Claude Code to interact with Google's Gemini API for code analysis, chat, and summarization tasks.70MIT
Appeared in Searches
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/msnidal/yellhorn-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server