mcp-runrunit
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SENTRY_DSN | No | DSN do projeto Sentry (opcional) | |
| GITHUB_TOKEN | No | GitHub PAT com permissão de escrita em contents e pull_requests (opcional) | |
| SENTRY_ENABLED | No | Liga/desliga o envio de eventos Sentry (opcional) | |
| SENTRY_RELEASE | No | Versão/release Sentry (opcional) | |
| DISCORD_GUILD_ID | No | ID do servidor Discord (opcional) | |
| GITHUB_REPO_NAME | No | Nome do repositório GitHub (opcional) | |
| RUNRUNIT_APP_KEY | Yes | Chave da aplicação Runrun.it (obtido em Integração e Apps → API e Webhooks) | |
| GITHUB_REPO_OWNER | No | Owner do repositório GitHub (opcional) | |
| CLOUDINARY_API_KEY | No | API key do Cloudinary (opcional) | |
| DISCORD_CHANNEL_ID | No | ID do canal Discord (opcional) | |
| GITHUB_BASE_BRANCH | No | Branch base no GitHub (opcional, default main) | |
| SENTRY_ENVIRONMENT | No | Ambiente Sentry (development, staging, production) (opcional) | |
| RUNRUNIT_USER_TOKEN | Yes | Token do usuário Runrun.it | |
| CLOUDINARY_API_SECRET | No | API secret do Cloudinary (opcional, nunca expor no client-side) | |
| CLOUDINARY_CLOUD_NAME | No | Nome da cloud no Cloudinary (opcional, para upload de imagens) | |
| SENTRY_ERROR_SAMPLE_RATE | No | Taxa de amostragem de erros (0.0 a 1.0, default 1.0) (opcional) | |
| BOT_DISCORD_TOKEN_PUBLIC_ID | No | Token público do bot Discord (opcional) | |
| BOT_RUNRUNIT_REPORT_PRIVATE_KEY | No | Chave privada do report Runrun.it (opcional) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| runrunit_list_projectsA | List all projects from Runrun.it. Optional filters: client_id, project_group_id, is_closed, is_active, page, limit. |
| runrunit_list_tasksC | List tasks from Runrun.it. Optional filters: ids, user_id, follower_id, responsible_id, assignee_id, filter_id, board_stage_id, project_id, is_closed, is_working_on, sort, sort_dir, page, limit. |
| runrunit_list_task_filtersA | List all task filters available to the current user. Use to find filter_id for 'Minhas partes abertas' or other filters. |
| runrunit_list_board_stagesA | List board stages (Task, Ongoing, Manager Validation, etc.). Use board_id from a task. Returns stages with id and name — use with runrunit_move_task_stage when moving tasks by stage name. |
| runrunit_move_task_stageA | Moves a task to a board stage (column). Tasks must only advance; backward move is allowed only to 'Task' or 'Blocked Task' (e.g. impediment or not finished). Use board_stage_name or board_stage_id. For stages that require 'Link da branch', fill it first with runrunit_update_task. |
| runrunit_get_taskA | Get a single task by ID from Runrun.it. Note: the rich description is on a separate endpoint — use runrunit_get_task_description to fetch it. |
| runrunit_get_task_descriptionA | Get the rich-text description of a task. Use this after runrunit_get_task to load the full task context (requirements, acceptance criteria, links, etc.) before starting work. |
| runrunit_list_subtasksA | Use for listing subtasks of a task from Runrun.it. |
| runrunit_create_taskA | Create a task on Runrun.it in board Ongoing (ID: 96356) in column Task by default and assignee from who is call the tool. Requires title (eg.: [project_name] - task_name) and type_id. Optional: description (rich description via Task Description API, appended to any existing text), project_id, assignments, desired_date, etc. |
| runrunit_update_taskA | Update a task on Runrun.it. Pass task ID and an object with fields to update (e.g. title, desired_date). For the PR/branch link use link_da_branch (URL); it is stored in the custom field 'Link da branch' (custom_32). When posting a task report, use link_da_branch_relatorio (URL) to store the branch link in custom_12. To move a task between columns (Task, Ongoing, Manager Validation), use runrunit_move_task_stage. |
| runrunit_delete_taskC | Delete a task on Runrun.it. |
| runrunit_create_workflowA | Create a workflow for a task (starts tracking eligibility). Task must not be closed, ongoing, or already have a workflow. |
| runrunit_assignment_playA | Start tracking work on a task (play). Pauses current task if assignee is already working on another. Always ensure that the task is in the Ongoing column (board_stage_id: 96356) before calling this tool. |
| runrunit_list_task_commentsC | List all comments on a task in Runrun.it. |
| runrunit_get_commentA | Get a single comment by ID from Runrun.it. |
| runrunit_create_commentA | Create a comment on a task in Runrun.it using the standard template. The server assembles plain text (no Markdown) in this order: Escopo, Como foi feito, Quais arquivos/configurações foram afetadas, Como validar, Links. Every section is required. Como validar must have at least two steps, one per line. Optional url_antes and url_depois are appended at the end of Links as "Antes: " and "Depois: " after capturing evidence with the registrar-evidencias skill. |
| runrunit_update_commentA | Update a comment on Runrun.it. Send the same standard template sections as runrunit_create_comment (Escopo, Como foi feito, Quais arquivos/configurações foram afetadas, Como validar, Links). Plain text and raw URLs only. Optional url_antes and url_depois are appended at the end of Links. |
| runrunit_delete_commentA | Delete a comment on Runrun.it. |
| runrunit_comment_reactionB | Add a reaction (emoji) to a comment on Runrun.it. |
| runrunit_create_external_commentA | For create a comment in the external/guest channel on a task in Runrun.it, use only text simple, without Markdown. Use this for comments shared with external clients (channel_name: guest). |
| runrunit_suggest_devs_with_free_queueA | Sugere desenvolvedores com fila mais livre com base em tarefas na coluna Task, considerando estimativas e filtros opcionais (time, projeto, tags). |
| runrunit_project_detect_platformA | Identifies the project platform based on task tags in Runrun.it (Node, Python, Ruby, Go, Rust, etc.) and suggests the command to upload the development environment. The platform is defined by task tags (tags_data/tag_list), not by repository files. |
| runrunit_list_cursor_catalogA | List bundled Cursor skills and agents from cursor-catalog.json with optional filters (platform, technology, utility). Use before install to discover ids and descriptions. Does not copy files. |
| runrunit_get_pr_templateA | Returns the pull request title format and body from .github/PULL_REQUEST_TEMPLATE.md. Use before gh pr create or when opening PRs manually so the description follows the project standard. Optional fields fill the template (change_type, description, task_id, type, title_description, include_visual_evidence, references). |
| runrunit_install_cursor_skillsA | Local install only: copies bundled Cursor skills from mcp-runrunit (cursor-skills/) into ~/.cursor/skills or project .cursor/skills (os.homedir). Use when the user wants to sync skills onto their machine (onboarding, pull package skills locally). Prefer dry_run:true first. NOT for sharing via GitHub or “compartilhar / dividir com o time” in the repo — that is runrunit_share_cursor_skill. Optional skill_names, categories (platform/technology/utility), target global|project, project_root, source_dir. Use runrunit_list_cursor_catalog to discover ids. |
| runrunit_install_cursor_agentsA | Local install only: copies agent markdown from mcp-runrunit (cursor-agents/) into ~/.cursor/agents (flat files, preserves basename including .agent.md). Use dry_run:true first. NOT for compartilhar/dividir com o time via GitHub — use runrunit_share_cursor_agent for a PR. Optional agent_names, categories (platform/technology/utility), target, project_root, source_dir. |
| runrunit_discord_send_messageA | Send a message to a Discord channel. Use for execution history or notifications. Requires BOT_RUNRUNIT_REPORT and channel_id. |
| runrunit_discord_create_channelA | Create a text channel in the Discord server (guild) if not exists, use comparison with name 'Client 1' -> 'client-1' to avoid create duplicate channels. Use guild_id from env (DISCORD_GUILD_ID) or pass explicitly. One channel per client pattern. |
| runrunit_discord_list_channelsA | List channels in the Discord server. Uses DISCORD_GUILD_ID or resolves from DISCORD_CHANNEL_ID. |
| runrunit_discord_get_or_create_channelA | Get or create a Discord text channel for a Runrun.it client (1 channel per client, use client_name always avaliable transform to slug. ex: 'Client 1' -> 'client-1'). Returns channel_id and channel_name. Use before runrunit_discord_send_message to ensure the channel exists. |
| runrunit_share_cursor_agentA | Use when the user wants to share a Cursor agent with the team through GitHub (e.g. compartilhar agente com o time, dividir com o time, propor ao repositório, share agent with the team via PR). Opens a pull request with one markdown file from cursor-agents/. For copying agents into ~/.cursor/agents locally, use runrunit_install_cursor_agents instead. Requires GITHUB_TOKEN on the MCP server host only; owner, repo and base branch are auto-detected from git origin in project_root (env vars override). Never pass credentials via this tool. |
| runrunit_share_cursor_skillA | Primary tool when the user wants to share a Cursor skill with the team via GitHub: compartilhar skill, dividir com o time, propor ao repo, publicar skill para a equipe, share skill with the team, open a PR for teammates. Opens a pull request that adds or updates the full cursor-skills/{skill_name}/ folder (SKILL.md, rules/, templates/, scripts/, etc.) in one atomic commit. Do not use runrunit_install_cursor_skills for this — that only copies folders to local ~/.cursor/skills. Requires GITHUB_TOKEN on MCP host; repo identity and base branch auto-detected from project_root git origin (env overrides). |
| runrunit_share_cursor_agent_bitbucketA | Use when the user wants to share a Cursor agent with the team through Bitbucket (e.g. compartilhar agente com o time, dividir com o time, propor ao repositório, share agent with the team via PR). Opens a pull request with one markdown file from cursor-agents/. For copying agents into ~/.cursor/agents locally, use runrunit_install_cursor_agents instead. Requires BITBUCKET_USERNAME and BITBUCKET_APP_PASSWORD on the MCP server host; workspace, repo slug and base branch auto-detected from git origin in project_root (env vars override). Never pass credentials via this tool. |
| runrunit_share_cursor_skill_bitbucketA | Primary tool when the user wants to share a Cursor skill with the team via Bitbucket: compartilhar skill, dividir com o time, propor ao repo, publicar skill para a equipe, share skill with the team, open a PR for teammates. Opens a pull request that adds or updates the full cursor-skills/{skill_name}/ folder (SKILL.md, rules/, templates/, scripts/, etc.) in one atomic commit. Do not use runrunit_install_cursor_skills for this — that only copies folders to local ~/.cursor/skills. Requires Bitbucket credentials on MCP host; repo identity and base branch auto-detected from project_root git origin (env overrides). |
| runrunit_commits_branches_prsA | Routes a git workflow request to one entry tool. Does not create branches, commits, or pull requests. intent: branch, message, commit, branch_and_commit, or pr. Call the returned next_tool yourself. |
| runrunit_create_task_branchA | Plans or creates only the branch task_[número]. Default is plan (no checkout). Pass approved:true after the user accepts the plan. Does not commit. If includes_commit is true, next_tool is runrunit_commit_per_file. |
| runrunit_format_commit_messageA | Formats one commit subject as [numero] - [tipo] - [descrição]. Does not commit. Types: feat, fix, docs, refactor, test, chore, perf. If task_id is omitted, the number comes from the current task_[número] branch. If includes_commit is true and called_from is not commit-per-file, next_tool is runrunit_commit_per_file. |
| runrunit_commit_per_fileA | Plans one commit per changed file, in dependency order, with a |
| runrunit_check_prA | Read-only checklist: branch task_[número], commit subjects [numero] - [tipo] - [descrição], one file per commit. Compares with origin/development or origin/homolog unless base is set. next_tool is always null. Does not open a pull request. |
| runrunit_create_pr_githubA | Plans or opens one GitHub pull request to development or homolog, never main or master (only by user request). Reuses .github/PULL_REQUEST_TEMPLATE.md. Default is plan (no push, no gh pr create). Pass approved:true only after the user accepts title, body, base, and branch. Does not comment on Runrun.it or capture screenshots; those are follow-up actions in the response. After execution the response includes pull_request_url, branch, and target_environment. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 40 tools
Several tool boundaries require careful reading, such as share_cursor_agent vs share_cursor_agent_bitbucket, install_cursor_skills vs share_cursor_skill, and create_comment vs update_comment vs create_external_comment. Descriptions do disambiguate well, but the overlaps are numerous enough that misselection remains possible.
All tools use the runrunit_ prefix and snake_case, which is highly consistent. There are minor deviations from a strict verb_noun pattern, such as runrunit_commits_branches_prs and runrunit_assignment_play, but the naming remains predictable.
With 40 tools, the set is too large for comfortable tool selection and exceeds the typical 3-15 range. While the server spans multiple domains, the volume makes it heavy and increases the chance of choosing the wrong tool.
Core task, comment, git/PR, and Discord flows are covered, but there are notable gaps: no pause/stop tracking for assignments, no project create/update/delete, and limited Discord/Cursor lifecycle management. These gaps are workable but will cause some agent dead ends.