Skip to main content
Glama
fovi-llc

Radicle + GitHub MCP Server

by fovi-llc

Radicle + GitHub MCP Server

A Model Context Protocol (MCP) server setup that provides tools for interacting with both Radicle (peer-to-peer code collaboration) and GitHub through a unified interface.

Features

This setup includes two MCP servers:

🌟 Radicle MCP Server (Python)

  • Repository Management: Initialize, clone, and inspect Radicle repositories

  • Synchronization: Sync repositories with the Radicle network

  • Patches & Issues: List and manage patches and issues

  • Node Information: Get node ID and remote information

  • Help System: Access Radicle command documentation

  • πŸ”„ GitHub Integration: Bidirectional sync of issues and PRs between GitHub and Radicle

πŸ™ GitHub MCP Server (Official)

  • Repository Operations: Create, fork, clone GitHub repositories

  • Issue Management: Create, update, and manage GitHub issues

  • Pull Requests: Manage pull requests and reviews

  • File Operations: Read, write, and manage repository files

  • Search: Search repositories, issues, and code

  • User Management: Manage user and organization information

πŸ”— GitHub ↔ Radicle Synchronization

  • Bidirectional Issue Sync: Automatically sync issues between platforms

  • Idempotent Operations: Safe to run multiple times without duplicates

  • Metadata Preservation: Maintains original author, links, and timestamps

  • Mapping Database: Tracks relationships between GitHub and Radicle items

  • MCP Integration: Available as AI assistant tools

Related MCP server: GitHub MCP Server

Available Tools

Repository Operations

  • rad_init: Initialize a new Radicle repository

  • rad_clone: Clone an existing repository by RID

  • rad_status: Get repository status and information

  • rad_sync: Sync repository with the network

  • rad_push: Push changes to the network

Collaboration Features

  • rad_patch_list: List patches (pull requests) in a repository

  • rad_issue_list: List issues in a repository

  • rad_remote_list: List remotes/nodes for a repository

Node & Identity

  • rad_id: Get your Radicle node ID

  • rad_help: Get help for Radicle commands

Prerequisites

  1. Radicle CLI: Ensure the rad command is installed and available in your PATH

    # Install Radicle (see https://radicle.xyz for installation instructions)
    curl -sSf https://install.radicle.xyz | sh
  2. Deno: For running the GitHub MCP server

    # Install Deno
    curl -fsSL https://deno.land/install.sh | sh
  3. Python Environment: Python 3.8+ with the MCP library

    pip install mcp
  4. GitHub Personal Access Token: For GitHub integration

Installation

  1. Clone this repository

  2. Install dependencies:

    pip install -e .
  3. Install the official GitHub MCP server:

    deno install -g --name github-mcp npm:@modelcontextprotocol/server-github
  4. Run the setup script:

    python setup_mcp.py

Usage

Quick Setup

# Set your GitHub token
export GITHUB_PERSONAL_ACCESS_TOKEN=your_token_here

# Run the setup script
python setup_mcp.py

GitHub ↔ Radicle Sync

# Test sync connectivity
python demo_sync.py

# Create a test issue (optional)
python create_test_issue.py

# Run full sync
python github_radicle_sync.py

# Or use CLI interface
python sync_cli.py --repo owner/repo --dry-run
python sync_cli.py --repo owner/repo --issues-only

MCP Integration

The sync functionality is available as MCP tools:

  • github_sync_test: Test connectivity

  • github_sync_issues: Sync issues only

  • github_sync_full: Full bidirectional sync

See SYNC_README.md for detailed sync documentation.

As Standalone Servers

# Radicle MCP Server
python -m radicle_mcp.server

# GitHub MCP Server  
github-mcp

With Claude Desktop

The setup script automatically creates the configuration. Your claude_desktop_config.json will include:

{
  "mcpServers": {
    "radicle-mcp": {
      "command": "/path/to/python",
      "args": ["-m", "radicle_mcp.server"]
    },
    "github-mcp": {
      "command": "/path/to/github-mcp",
      "args": [],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
      }
    }
  }
}

VS Code Integration

This project includes VS Code configuration for debugging the MCP server. Use the provided mcp.json file to connect compatible MCP clients.

Example Commands

Once connected to an MCP client, you can use natural language to interact with both platforms:

Radicle Operations

  • "Initialize a new Radicle repository called 'my-project'"

  • "Clone the repository with RID rad:z2..."

  • "Show me the current patches in this repository"

  • "Sync this repository with the network"

  • "What's my Radicle node ID?"

GitHub Operations

  • "Create a new GitHub repository called 'awesome-project'"

  • "List my recent GitHub repositories"

  • "Create an issue titled 'Bug fix needed'"

  • "Show me open pull requests in my repository"

  • "Search for repositories related to 'machine learning'"

Cross-Platform Workflows

  • "Publish this Radicle repository to GitHub"

  • "Sync issues between Radicle and GitHub"

  • "Compare this repository on both platforms"

Development

Running Tests

python -m pytest tests/

Code Style

black src/
flake8 src/

Project Structure

radicle-mcp/
β”œβ”€β”€ src/radicle_mcp/
β”‚   β”œβ”€β”€ __init__.py
β”‚   └── server.py          # Main MCP server implementation
β”œβ”€β”€ .vscode/
β”‚   └── mcp.json          # VS Code MCP configuration
β”œβ”€β”€ .github/
β”‚   └── copilot-instructions.md
β”œβ”€β”€ pyproject.toml        # Project configuration
└── README.md

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

MIT License - see LICENSE file for details

Available Tools

11 tools
github_sync_unavailableC

GitHub sync functionality is not available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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. The statement 'GitHub sync functionality is not available' implies this tool reports an error or status, but it doesn't specify the behavior (e.g., whether it throws an exception, returns a message, logs details, or provides diagnostic info). For a tool with zero annotation coverage, this leaves critical behavioral traits undefined.

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

Conciseness5/5

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

The description is extremely concise with a single, straightforward sentence: 'GitHub sync functionality is not available.' It is front-loaded and wastes no words, making it easy to parse. For a simple status-reporting tool, this brevity is appropriate and efficient.

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

Completeness2/5

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

Given the tool's complexity (simple status reporting) and the presence of an output schema (which likely handles return values), the description is incomplete. It fails to explain what the tool actually does behaviorally (e.g., returns an error code or message) or how it fits with siblings like 'rad_sync'. For a tool in a set of GitHub/Radicle operations, more context on its role is needed.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100% (though trivial since there are no parameters). With no parameters to document, the description doesn't need to add semantic details beyond the schema. A baseline score of 4 is appropriate as the description doesn't contradict the empty schema and the absence of parameters is inherently clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'GitHub sync functionality is not available' is a tautology that essentially restates the tool name 'github_sync_unavailable'. It doesn't specify what action this tool performs (e.g., returns an error message, logs unavailability, provides fallback options) or what resource it operates on. While it hints at a status reporting function, it lacks a clear verb+resource statement that distinguishes it from its sibling tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context for invocation (e.g., when GitHub sync is attempted but unavailable), prerequisites, or relationships to sibling tools like 'rad_sync'. Without explicit or implied usage instructions, agents must infer context from the name alone, which is insufficient.

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

rad_cloneB
Clone a Radicle repository.

Args:
    rid: Repository ID (RID) to clone
    path: Optional path where to clone the repository
ParametersJSON Schema
NameRequiredDescriptionDefault
ridYes
pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether cloning requires network access, creates local files, handles errors, or has side effects like authentication needs or rate limits. This leaves significant gaps for agent understanding.

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

Conciseness5/5

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

The description is extremely concise and well-structured: a clear purpose statement followed by bullet-point parameter explanations. Every sentence earns its place with no wasted words, making it easy to parse quickly.

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

Completeness3/5

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

Given 2 parameters with 0% schema coverage and an output schema present, the description adequately covers the basic action and parameters. However, for a clone operation with no annotations, it should ideally include more about behavioral aspects (e.g., what gets created locally, network requirements) to be fully complete for agent use.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates by explaining both parameters: 'rid' as 'Repository ID (RID) to clone' and 'path' as 'Optional path where to clone the repository'. This adds meaningful context beyond the bare schema, though it could elaborate on RID format or path defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Clone') and resource ('a Radicle repository'), making the purpose immediately understandable. It distinguishes from siblings like rad_init (initialize) or rad_push (push changes). However, it doesn't specify what 'clone' entails in Radicle's context versus alternatives like rad_sync.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like rad_sync or rad_remote_list. The description lacks context about prerequisites (e.g., needing an existing repository ID) or typical scenarios for cloning versus other operations.

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

rad_helpB
Get help for Radicle commands.

Args:
    command: Specific command to get help for (optional)
ParametersJSON Schema
NameRequiredDescriptionDefault
commandNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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 states the tool 'Get help' but doesn't disclose behavioral traits such as what format the help is returned in (e.g., text, markdown), whether it requires network access, if there are rate limits, or how it handles invalid commands. This leaves significant gaps for an agent to understand the tool's behavior beyond its 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.

Conciseness4/5

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

The description is concise with two sentences: one stating the purpose and another explaining the parameter. It's front-loaded with the main purpose. However, the 'Args:' section is slightly redundant with the schema and could be integrated more smoothly, preventing a perfect score.

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

Completeness3/5

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

Given the tool has an output schema (which covers return values), the description doesn't need to explain outputs. However, with no annotations, 1 parameter at 0% schema coverage, and a simple purpose, the description is adequate but incompleteβ€”it lacks behavioral context and detailed usage guidelines, making it minimally viable but with clear gaps.

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

Parameters3/5

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

The description adds minimal semantics: it notes the 'command' parameter is optional and for getting help for a specific command. However, with 0% schema description coverage and 1 parameter, the schema already indicates it's a nullable string with default null. The description doesn't add meaningful details like command examples or constraints, so it meets the baseline of 3 for low parameter count but doesn't compensate for the lack of schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get help for Radicle commands' which is a specific verb ('Get help') and resource ('Radicle commands'). It distinguishes this tool from sibling tools like rad_clone, rad_init, etc., which perform actual operations rather than providing help. However, it doesn't explicitly contrast with a hypothetical 'general help' tool, keeping it at 4 rather than 5.

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

Usage Guidelines3/5

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

The description implies usage when needing help with Radicle commands, but doesn't explicitly state when to use this tool versus alternatives (e.g., when to use rad_help vs. checking documentation elsewhere). It mentions the optional 'command' parameter, suggesting it can be used for general or specific help, but lacks explicit guidance on scenarios or exclusions.

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

rad_idB

Get the current node's Radicle ID.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves the current node's Radicle ID, implying a read-only operation, but doesn't specify if this requires network access, authentication, or has any side effects like caching. This leaves gaps in understanding the tool's behavior beyond its basic function.

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

Conciseness5/5

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

The description is a single, clear sentence that directly states the tool's function without any wasted words. It is front-loaded and efficiently communicates the essential information, making it highly concise and well-structured.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no annotations, but with an output schema), the description is adequate but minimal. It explains what the tool does but lacks context on usage, behavioral traits, or how it fits with siblings. The output schema likely covers return values, so the description doesn't need to detail those, but more guidance would improve completeness.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose. This meets the baseline for tools with no parameters, as it avoids unnecessary detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('current node's Radicle ID'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'rad_status' or 'rad_remote_list', which might also provide ID-related information, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this is for retrieving a local ID versus a remote one, or if other tools like 'rad_status' might provide similar information in a broader context. This lack of context leaves usage unclear.

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

rad_initB
Initialize a new Radicle repository.

Args:
    name: Name of the repository
    description: Description of the repository
    public: Whether the repository should be public (default: True)
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo
publicNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral disclosure. It states the action but doesn't mention what 'initialize' entails (e.g., creates local files, sets up tracking, requires authentication), potential side effects, error conditions, or what the output contains. For a creation tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.

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

Conciseness4/5

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

The description is efficiently structured with a clear purpose statement followed by a bullet-point parameter explanation. Every sentence adds value, though the parameter section could be slightly more concise by integrating defaults into the main text rather than a parenthetical note.

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

Completeness3/5

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

Given the tool has an output schema (which handles return values), 3 parameters with good semantic coverage in the description, and no annotations, the description is minimally adequate. However, for a repository creation tool, it should ideally mention authentication requirements, file system impacts, or relationship to other Radicle commands to be fully complete.

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

Parameters4/5

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

The description adds meaningful semantic context for all three parameters beyond the 0% schema coverage. It explains that 'name' is the repository name, 'description' is its description, and 'public' controls visibility with a default value. This compensates well for the lack of schema descriptions, though it doesn't detail constraints like name format or length limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Initialize a new Radicle repository') with the exact resource type, distinguishing it from sibling tools like rad_clone (which clones existing repos) or rad_sync (which syncs changes). The verb 'initialize' precisely indicates creation from scratch rather than other repository operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing to be in a Radicle project directory), when not to use it (e.g., if a repository already exists), or how it differs from similar tools like rad_clone for existing repositories. The only implicit context is that it creates new repositories.

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

rad_issue_listC
List issues in a Radicle repository.

Args:
    repository_path: Path to the repository (default: current directory)
ParametersJSON Schema
NameRequiredDescriptionDefault
repository_pathNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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 states the tool lists issues but doesn't describe any behavioral traits such as output format, pagination, error handling, or performance characteristics. This is a significant gap 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.

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the core purpose stated first. The two-sentence structure is efficient, though the second sentence could be more integrated. There's no wasted text, but it lacks depth, which affects completeness more than conciseness.

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

Completeness3/5

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

Given the tool's low complexity (1 parameter, no required params) and the presence of an output schema, the description is minimally adequate. It covers the basic purpose and parameter, but without annotations and with sparse parameter details, it doesn't fully prepare the agent for effective use. The output schema helps, but the description could benefit from more context.

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

Parameters3/5

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

The description adds minimal semantics beyond the input schema: it explains that 'repository_path' is the 'Path to the repository' with a default of 'current directory.' However, with 0% schema description coverage, the schema only provides a title and type. The description compensates slightly by clarifying the parameter's role, but it doesn't detail format constraints or usage examples, leaving room for improvement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List issues in a Radicle repository.' It specifies the verb ('List') and resource ('issues in a Radicle repository'), making the action and target explicit. However, it doesn't differentiate from sibling tools like 'rad_patch_list' or 'rad_remote_list' beyond the resource type, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions the default parameter value ('current directory') but offers no context about prerequisites, when it's appropriate, or how it differs from other listing tools in the sibling set. This leaves the agent without usage direction.

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

rad_patch_listB
List patches in a Radicle repository.

Args:
    repository_path: Path to the repository (default: current directory)
ParametersJSON Schema
NameRequiredDescriptionDefault
repository_pathNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to 'List patches', implying a read-only operation, but doesn't cover aspects like permissions needed, rate limits, output format, or error handling. This leaves significant gaps for a tool with behavioral implications.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by a concise parameter explanation. It uses minimal words without redundancy, 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.

Completeness3/5

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 optional parameter) and the presence of an output schema, the description covers the basic purpose and parameter default adequately. However, it lacks behavioral details and usage context, making it only minimally viable for agent selection.

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

Parameters4/5

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

The description adds meaningful context for the single parameter by explaining that 'repository_path' defaults to the current directory, which clarifies its usage beyond the schema's basic title. With 0% schema description coverage and only one parameter, this compensation is effective, though not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'patches in a Radicle repository', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'rad_issue_list' or 'rad_remote_list', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools, prerequisites, or contextual cues for selection, leaving the agent with minimal usage direction.

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

rad_pushC
Push changes to the Radicle network.

Args:
    repository_path: Path to the repository (default: current directory)
ParametersJSON Schema
NameRequiredDescriptionDefault
repository_pathNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Push changes') which implies a write/mutation operation, but doesn't disclose any behavioral traits like authentication requirements, network effects, error conditions, or what constitutes 'changes'. For a network operation tool, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is appropriately sized with two sentences - one stating the purpose and one explaining the parameter. It's front-loaded with the core functionality. However, the second sentence could be more integrated rather than appearing as a separate 'Args:' section, and there's some wasted vertical space in the formatting.

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

Completeness3/5

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

Given that there's an output schema (which means return values don't need explanation in the description), 1 parameter, and no annotations, the description is minimally adequate. It states what the tool does and documents the single parameter. However, for a network operation tool that presumably modifies remote state, more context about behavior and usage would be expected for completeness.

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

Parameters3/5

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

The description adds the parameter name and a brief explanation ('Path to the repository') beyond what the schema provides (which has 0% description coverage). However, with only 1 parameter total, the baseline would be 4 if no param info was provided. Since it does provide some param info but doesn't fully explain the implications of the path parameter or the default behavior, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Push changes') and target ('to the Radicle network'), which is a specific verb+resource combination. However, it doesn't differentiate from sibling tools like rad_sync or rad_clone, which might have overlapping functionality in a version control context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like rad_sync or rad_clone. There's no mention of prerequisites, typical use cases, or exclusions. The only contextual hint is the parameter description mentioning 'default: current directory', but this doesn't constitute usage guidance.

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

rad_remote_listB
List remotes in a Radicle repository.

Args:
    repository_path: Path to the repository (default: current directory)
ParametersJSON Schema
NameRequiredDescriptionDefault
repository_pathNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'List remotes' but doesn't describe what a 'remote' is in Radicle context, how results are formatted, if it's read-only, or any error conditions. This leaves significant gaps for agent understanding.

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

Conciseness5/5

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

The description is appropriately sized with two sentences: one stating the purpose and another explaining the single parameter. It's front-loaded with the main function and wastes no words, 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.

Completeness3/5

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

Given the tool has one parameter and an output schema exists, the description covers the basics but lacks context about Radicle-specific behavior and relationships with sibling tools. It's minimally viable but leaves the agent needing to infer details from the output schema or external knowledge.

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

Parameters3/5

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

The description adds the parameter 'repository_path' with a brief explanation and default value, which provides some meaning beyond the input schema (which has 0% description coverage). However, it doesn't explain path format requirements or validation rules, so it only partially compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'remotes in a Radicle repository', making the purpose specific and understandable. However, it doesn't differentiate from sibling tools like 'rad_status' or 'rad_sync' which might also involve repository operations, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools like 'rad_status' (which might show remote status) or 'rad_sync' (which might sync remotes), leaving the agent without context for tool selection.

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

rad_statusA
Get the status of a Radicle repository.

Args:
    repository_path: Path to the repository (default: current directory)
ParametersJSON Schema
NameRequiredDescriptionDefault
repository_pathNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves status information (implying read-only), but doesn't mention authentication requirements, rate limits, error conditions, or what specific status information is returned. The description provides basic intent but lacks operational details needed for safe invocation.

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

Conciseness5/5

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

The description is perfectly front-loaded with the core purpose in the first sentence, followed by parameter documentation in a clear 'Args:' section. Every sentence earns its place with no redundant information, 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.

Completeness4/5

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

Given the tool's simple nature (single optional parameter, read-only operation) and the presence of an output schema (which handles return values), the description provides adequate context. It covers the essential what and how, though additional behavioral context would be beneficial since no annotations exist to supplement understanding.

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

Parameters4/5

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

The description adds meaningful context for the single parameter by explaining its purpose ('Path to the repository') and providing the default value ('current directory'), which compensates for the 0% schema description coverage. While it doesn't detail path format requirements or validation rules, it gives sufficient semantic understanding for basic usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get the status') and target resource ('Radicle repository'), distinguishing it from sibling tools like rad_clone, rad_push, or rad_sync. It uses precise language that immediately conveys the tool's function without ambiguity.

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

Usage Guidelines3/5

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

The description implies usage by mentioning the default parameter value (current directory), suggesting it's for checking repository status locally. However, it lacks explicit guidance on when to use this versus alternatives like rad_sync or rad_remote_list for related repository operations, leaving the agent to infer context from sibling tool names.

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

rad_syncC
Sync a Radicle repository with the network.

Args:
    repository_path: Path to the repository (default: current directory)
ParametersJSON Schema
NameRequiredDescriptionDefault
repository_pathNo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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 states the action ('Sync') but doesn't explain what this entailsβ€”e.g., whether it fetches updates, pushes local changes, handles conflicts, requires network connectivity, or has side effects. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness4/5

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

The description is brief and front-loaded with the main purpose, followed by parameter details in a structured 'Args' section. There's minimal waste, but it could be slightly more informative without sacrificing conciseness.

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

Completeness3/5

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

Given one parameter with 0% schema coverage and an output schema (which reduces the need to describe return values), the description is minimally adequate. It covers the basic purpose and parameter but lacks details on behavior, usage context, and error handling, making it incomplete for a network sync operation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'repository_path' is the 'Path to the repository' with a default of 'current directory', which clarifies beyond the schema's basic type and title. However, it doesn't detail format constraints or examples, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Sync') and resource ('a Radicle repository with the network'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'rad_push' or 'rad_status', which might also involve network operations, so it doesn't achieve full sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'rad_push' or 'rad_status'. It lacks context about prerequisites, such as whether the repository must be initialized or have remotes set up, and doesn't mention any exclusions or specific scenarios for its use.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updates
    • First observedgithub_sync_unavailable
    • First observedrad_clone
    • First observedrad_help
    • First observedrad_id
    • First observedrad_init
    • First observedrad_issue_list
    • First observedrad_patch_list
    • First observedrad_push
    • First observedrad_remote_list
    • First observedrad_status
    • First observedrad_sync

TDQS

B3.3/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have distinct purposes (clone, init, push, sync, status, remote_list, issue_list, patch_list), but rad_help and rad_id are more general utility functions that could overlap with other tools' documentation or identification needs. The descriptions are clear enough to differentiate them in most cases.

Naming Consistency5/5

All tools follow a consistent 'rad_' prefix with descriptive action_noun naming (e.g., rad_clone, rad_init, rad_push). The pattern is uniform across all 11 tools, making them predictable and easy to understand.

Tool Count5/5

With 11 tools, this server is well-scoped for Radicle repository management. It covers core operations like cloning, initializing, pushing, syncing, and querying issues/patches, which aligns well with the server's purpose without being overwhelming or too sparse.

Completeness3/5

The server covers basic repository lifecycle operations (init, clone, push, sync, status) and querying (issue_list, patch_list, remote_list), but lacks CRUD tools for issues and patches (e.g., create_issue, update_patch). This creates notable gaps that agents might struggle with for full workflow coverage.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers