Skip to main content
Glama
fovi-llc

Radicle + GitHub MCP Server

by fovi-llc

rad_init

Initialize a new Radicle repository by specifying its name, description, and visibility settings to start peer-to-peer code collaboration.

Instructions

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)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo
publicNo

Implementation Reference

  • The handler function for the rad_init tool, decorated with @mcp.tool() which registers it with the MCP server. It constructs and executes the 'rad init' command using the shared run_rad_command helper.
    @mcp.tool()
    async def rad_init(name: str, description: str = "", public: bool = True) -> str:
        """
        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)
        """
        command = ["rad", "init", "--name", name]
        
        if description:
            command.extend(["--description", description])
        
        if public:
            command.append("--public")
        else:
            command.append("--private")
        
        result = await run_rad_command(command)
        
        if result["success"]:
            return f"✅ Successfully initialized Radicle repository '{name}'\n{result['stdout']}"
        else:
            return f"❌ Failed to initialize repository: {result['stderr']}"
  • Shared helper function used by rad_init (and other tools) to execute radicle CLI commands asynchronously, handling subprocess execution, output capture, and error cases.
    async def run_rad_command(command: List[str], cwd: Optional[str] = None) -> Dict[str, Any]:
        """
        Run a rad command and return the result.
        
        Args:
            command: List of command arguments starting with 'rad'
            cwd: Working directory to run the command in
            
        Returns:
            Dictionary with stdout, stderr, and return_code
        """
        try:
            # Ensure command starts with 'rad'
            if not command or command[0] != "rad":
                command = ["rad"] + command
                
            logger.info(f"Running command: {' '.join(command)}")
            
            process = await asyncio.create_subprocess_exec(
                *command,
                stdout=asyncio.subprocess.PIPE,
                stderr=asyncio.subprocess.PIPE,
                cwd=cwd
            )
            
            stdout, stderr = await process.communicate()
            
            return {
                "stdout": stdout.decode("utf-8").strip(),
                "stderr": stderr.decode("utf-8").strip(),
                "return_code": process.returncode,
                "success": process.returncode == 0
            }
            
        except FileNotFoundError:
            return {
                "stdout": "",
                "stderr": "rad command not found. Please ensure Radicle is installed.",
                "return_code": 127,
                "success": False
            }
        except Exception as e:
            return {
                "stdout": "",
                "stderr": f"Error running command: {str(e)}",
                "return_code": 1,
                "success": False
            }

Latest Blog Posts

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/fovi-llc/radicle-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server