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. Format: plain text and raw URLs only (no Markdown). Optional url_antes + url_depois: when both are provided, (1) capture visual evidence (skill registrar-evidencias), (2) append to text plain labels and image URLs (e.g. 'Antes: ' and 'Depois: '), (3) call this tool with the enriched text. |
| runrunit_update_commentB | Update a comment's text on Runrun.it. |
| 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). |
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 34 tools
Most tools map cleanly to a resource+action pair (get_task, list_projects, create_comment), and the descriptions heavily disambiguate similar operations. The main risks are near-duplicates like share_cursor_skill vs share_cursor_skill_bitbucket and discord_create_channel vs discord_get_or_create_channel, but platform suffixes and clarifying notes make the intent mostly clear.
The runrunit_ prefix and dominant verb_noun pattern provide a readable base, but the set mixes conventions: discord_list_channels, discord_send_message, assignment_play, comment_reaction, and project_detect_platform break the expected verb-first structure. Two competing patterns reduce predictability.
At 34 tools, this server is overly large and spans unrelated domains: Runrun.it task management, Cursor skill/agent sharing, Discord channel operations, PR templates, and developer suggestions. This exceeds the 25-tool threshold and feels like a monolith that should be split into focused servers.
The core Runrun.it domain is thoroughly covered with full CRUD for tasks and comments, stage transitions, workflow creation, assignment play, board stages, and task filters. Minor gaps exist outside the main domain, such as no Discord message reading/deletion and no explicit Cursor skill uninstall, but these are tangential to the primary purpose.