MewCP Github MCP
Servidor MCP de GitHub alojado, sin estado y multiinquilino que conecta herramientas de IA directamente con la plataforma de GitHub.
Documentación
Acceso integral a la API de GitHub para repositorios, issues, pull requests y código — todo a través de herramientas MCP tipadas.
Un servidor de Model Context Protocol (MCP) que expone la API de GitHub para gestionar repositorios, issues, pull requests, ramas, releases, etiquetas, protección de ramas y rulesets de repositorios.
Descripción general
El servidor MewCP GitHub MCP proporciona:
- Gestión de repositorios — obtener, crear, actualizar y hacer fork de repositorios; crear o actualizar archivos y enviar commits de múltiples archivos
- Búsqueda en GitHub — repositorios, código, usuarios, issues y pull requests
- Seguimiento de issues — listar, obtener, crear, comentar y actualizar issues, incluyendo relaciones de sub-issues y asignación de Copilot
- Flujos de trabajo de pull requests — leer, listar, crear, actualizar, fusionar PRs, gestionar actualizaciones de ramas, escribir revisiones, responder a comentarios y solicitar revisión de Copilot
- Administración de repositorios — ramas, commits, contenidos de archivos, etiquetas, releases, labels, protección de ramas, protección de revisión de PRs y rulesets de repositorios
Perfecto para:
- Agentes de IA que necesitan leer y actuar sobre el estado de los repositorios de GitHub (issues, PRs, archivos, commits)
- Automatizar flujos de trabajo rutinarios de GitHub — triaje de issues, solicitudes de revisión de PRs, consultas de releases
- Aplicar y auditar la gobernanza de repositorios — protección de ramas, requisitos de revisión de PRs, rulesets
Herramientas
get_repo — Obtener detalles básicos de un repositorio de GitHub.
Obtiene detalles básicos de un repositorio de GitHub.
Entradas:
- `owner` (string, required) — Repository owner, for example octocat
- `repo` (string, required) — Repository name
Esquema de salida data:
{
id: number | null;
name: string | null;
full_name: string | null;
owner: object | null;
html_url: string | null;
description: string | null;
private: boolean | null;
fork: boolean | null;
url: string | null;
default_branch: string | null;
created_at: string | null;
updated_at: string | null;
stargazers_count: number | null;
language: string | null;
has_issues: boolean | null;
has_downloads: boolean | null;
forks_count: number | null;
}
update_repository — Actualiza los metadatos de un repositorio o lo renombra.
Actualiza los metadatos de un repositorio o lo renombra. Solo se modifican los campos que proporciones — los demás conservan su valor actual. NOTA: esto sobrescribe los valores de campo actuales — el estado original no se almacena después de la llamada. La respuesta incluye tanto el estado anterior como el posterior para que tengas un registro completo de lo que cambió.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `name` (string, optional) — New repository name (to rename)
- `description` (string, optional) — Repository description
- `private` (boolean, optional) — Make repository private/public
- `default_branch` (string, optional) — Default branch name
Esquema de salida data:
{
before: {
id: number | null;
name: string | null;
full_name: string | null;
owner: object | null;
html_url: string | null;
description: string | null;
private: boolean | null;
fork: boolean | null;
url: string | null;
default_branch: string | null;
created_at: string | null;
updated_at: string | null;
stargazers_count: number | null;
language: string | null;
has_issues: boolean | null;
has_downloads: boolean | null;
forks_count: number | null;
};
after: {
id: number | null;
name: string | null;
full_name: string | null;
html_url: string | null;
private: boolean | null;
description: string | null;
default_branch: string | null;
};
}
create_repository — Crea un nuevo repositorio de GitHub en tu cuenta personal o en una organización.
Crea un nuevo repositorio de GitHub en tu cuenta personal o en una organización.
Entradas:
- `name` (string, required) — Repository name (required). Must be unique in account/organization.
- `description` (string, optional) — Repository description (optional).
- `private` (boolean, optional, default: false) — Make repository private (default: False for public).
- `auto_init` (boolean, optional, default: false) — Auto-initialize with README (default: False).
- `gitignore_template` (string, optional) — Gitignore template name. Example: 'Python', 'Node'.
- `org` (string, optional) — Organization name to create repo in (optional).
Esquema de salida data:
{
id: number | null;
name: string | null;
full_name: string | null;
url: string | null;
html_url: string | null;
owner: object | null;
private: boolean | null;
created_at: string | null;
}
fork_repository — Haz fork de un repositorio a tu cuenta personal o a una organización.
Haz fork de un repositorio a tu cuenta personal o a una organización.
Entradas:
- `owner` (string, required) — Original repository owner.
- `repo` (string, required) — Original repository name.
- `org` (string, optional) — Organization name to fork into (optional).
Esquema de salida data:
{
id: number | null;
name: string | null;
full_name: string | null;
url: string | null;
html_url: string | null;
owner: object | null;
fork: boolean | null;
}
create_or_update_file — Crea o actualiza un archivo en un repositorio. Evita sobrescrituras accidentales con validación SHA.
Crea o actualiza un archivo en un repositorio. Evita sobrescrituras accidentales con validación SHA.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `path` (string, required) — File path in repository. Example: 'src/main.py'.
- `content` (string, required) — File content to write.
- `message` (string, required) — Commit message.
- `branch` (string, optional) — Target branch name (optional).
- `sha` (string, optional) — File SHA for updates (optional).
Esquema de salida data:
{
content: object | null;
commit: object | null;
}
push_files — Envía múltiples archivos a un repositorio en un único commit atómico.
Envía múltiples archivos a un repositorio en un único commit atómico.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `files_json` (string, required) — JSON array of file objects with path and content keys. Example: '[{"path": "file1.txt", "content": "hello"}]'
- `message` (string, required) — Commit message.
- `branch` (string, optional) — Target branch name (optional).
- `author_name` (string, optional) — Author name (optional).
- `author_email` (string, optional) — Author email (optional).
Esquema de salida data:
{
commit_sha: string | null;
tree_sha: string | null;
branch: string | null;
message: string | null;
url: string | null;
}
search_repositories — Busca repositorios de GitHub.
Busca repositorios de GitHub.
Entradas:
- `query` (string, required) — Search query
- `sort` (string, optional, default: "stars") — Sort by: stars, forks, updated
- `order` (string, optional, default: "desc") — Order: asc or desc
- `page` (integer, optional, default: 1) — Page number
- `perPage` (integer, optional, default: 30) — Items per page
Esquema de salida data:
{
items: {
id: number | null;
name: string | null;
full_name: string | null;
private: boolean | null;
html_url: string | null;
description: string | null;
stars: number | null;
}[];
total_count: number;
}
search_code — Búsqueda de código rápida y precisa en repositorios de GitHub.
Búsqueda de código rápida y precisa en repositorios de GitHub.
Entradas:
- `query` (string, required) — Search query using GitHub code search syntax.
- `sort` (string, optional, default: "indexed") — Sort field. Only 'indexed' is supported.
- `order` (string, optional, default: "desc") — Sort order: asc or desc.
- `page` (integer, optional, default: 1) — Page number.
- `perPage` (integer, optional, default: 30) — Results per page (1-100).
Esquema de salida data:
{
total_count: number;
incomplete_results: boolean;
items: {
name: string | null;
path: string | null;
repository: string | null;
url: string | null;
}[];
}
search_users — Busca usuarios de GitHub por nombre, ubicación, seguidores u otros atributos.
Busca usuarios de GitHub por nombre, ubicación, seguidores u otros atributos.
Entradas:
- `query` (string, required) — User search query using GitHub's search syntax.
- `sort` (string, optional, default: "followers") — Sort field: followers, repositories, joined.
- `order` (string, optional, default: "desc") — Sort order: asc or desc.
- `page` (integer, optional, default: 1) — Page number.
- `perPage` (integer, optional, default: 30) — Results per page (1-100).
Esquema de salida data:
{
total_count: number;
incomplete_results: boolean;
items: {
login: string | null;
id: number | null;
profile_url: string | null;
avatar_url: string | null;
}[];
}
search_issues — Busca issues y pull requests en GitHub.
Busca issues y pull requests en GitHub.
Entradas:
- `query` (string, required) — Search query using GitHub issue search syntax.
- `sort` (string, optional, default: "updated") — Sort field: updated, created, comments.
- `order` (string, optional, default: "desc") — Sort order: asc or desc.
- `owner` (string, optional) — Repository owner (optional).
- `repo` (string, optional) — Repository name (optional).
- `page` (integer, optional, default: 1) — Page number.
- `perPage` (integer, optional, default: 30) — Results per page (1-100).
Esquema de salida data:
{
total_count: number;
incomplete_results: boolean;
items: {
number: number | null;
title: string | null;
state: string | null;
body: string | null;
url: string | null;
comments: number | null;
user: string | null;
}[];
}
search_pull_requests — Busca pull requests en GitHub usando la sintaxis de búsqueda.
Busca pull requests en GitHub usando la sintaxis de búsqueda.
Entradas:
- `query` (string, required) — Search query using GitHub search syntax.
- `sort` (string, optional, default: "updated") — Sort field: updated, created, comments.
- `order` (string, optional, default: "desc") — Sort order: asc or desc.
- `owner` (string, optional) — Repository owner (optional).
- `repo` (string, optional) — Repository name (optional).
- `page` (integer, optional, default: 1) — Page number.
- `per_page` (integer, optional, default: 30) — Results per page.
Esquema de salida data:
{
total_count: number;
incomplete_results: boolean;
pull_requests: {
number: number | null;
title: string | null;
state: string | null;
url: string | null;
user: string | null;
created_at: string | null;
updated_at: string | null;
comments: number | null;
}[];
page: number | null;
per_page: number | null;
}
list_issues — Lista issues en un repositorio de GitHub.
Lista issues en un repositorio de GitHub.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `state` (string, optional, default: "open") — Filter by state: open, closed, all
- `labels` (string, optional) — Comma-separated label names to filter by
- `page` (integer, optional, default: 1) — Page number
- `perPage` (integer, optional, default: 30) — Items per page
Esquema de salida data:
{
issues: {
number: number | null;
title: string | null;
state: string | null;
url: string | null;
body: string | null;
user: string | null;
labels: string[];
created_at: string | null;
updated_at: string | null;
}[];
count: number;
}
get_issue — Obtén información detallada sobre un issue específico de GitHub.
Obtén información detallada sobre un issue específico de GitHub.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `issue_number` (integer, required) — Issue number.
Esquema de salida data:
{
number: number | null;
title: string | null;
body: string | null;
state: string | null;
state_reason: string | null;
labels: string[];
assignees: string[];
url: string | null;
user: string | null;
created_at: string | null;
updated_at: string | null;
closed_at: string | null;
}
get_issue_comments — Obtén todos los comentarios de un issue de GitHub con soporte de paginación.
Obtén todos los comentarios de un issue de GitHub con soporte de paginación.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `issue_number` (integer, required) — Issue number.
- `page` (integer, optional, default: 1) — Page number.
- `perPage` (integer, optional, default: 30) — Comments per page (1-100).
Esquema de salida data:
{
comments: {
id: number | null;
body: string | null;
url: string | null;
user: string | null;
created_at: string | null;
updated_at: string | null;
}[];
page: number | null;
per_page: number | null;
}
create_issue — Crea un nuevo issue de GitHub en un repositorio.
Crea un nuevo issue de GitHub en un repositorio.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `title` (string, required) — Issue title (required).
- `body` (string, optional) — Issue description (optional).
- `assignees` (string[], optional) — List of usernames to assign (optional).
- `labels` (string[], optional) — List of label names (optional).
- `milestone` (integer, optional) — Milestone ID (optional).
Esquema de salida data:
{
id: number | null;
number: number | null;
url: string | null;
title: string | null;
}
add_issue_comment — Añade un comentario a un issue o pull request de GitHub.
Añade un comentario a un issue o pull request de GitHub.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `issue_number` (integer, required) — Issue or pull request number.
- `body` (string, required) — Comment text (required).
Esquema de salida data:
{
id: number | null;
url: string | null;
body: string | null;
user: string | null;
}
update_issue — Actualiza el título, cuerpo, estado, asignados, labels o hito de un issue de GitHub.
Actualiza el título, cuerpo, estado, asignados, labels o hito de un issue de GitHub. Solo se modifican los campos que proporciones — los demás conservan su valor actual. NOTA: esto sobrescribe los valores de campo actuales — el estado original no se almacena después de la llamada. La respuesta incluye tanto el estado anterior como el posterior para que tengas un registro completo de lo que cambió.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `issue_number` (integer, required) — Issue number to update.
- `title` (string, optional) — New issue title (optional).
- `body` (string, optional) — New issue description (optional).
- `state` (string, optional) — New state: open or closed (optional).
- `state_reason` (string, optional) — Reason when closing: completed, not_planned (optional).
- `assignees` (string[], optional) — New list of assignees (optional).
- `labels` (string[], optional) — New list of labels (optional).
- `milestone` (integer, optional) — Milestone ID (optional).
Esquema de salida data:
{
before: {
number: number | null;
title: string | null;
body: string | null;
state: string | null;
state_reason: string | null;
labels: string[];
assignees: string[];
url: string | null;
user: string | null;
created_at: string | null;
updated_at: string | null;
closed_at: string | null;
};
after: {
id: number | null;
number: number | null;
url: string | null;
title: string | null;
state: string | null;
};
}
list_org_repositories_by_contributor — Encuentra todos los repositorios en una organización donde contribuyentes específicos han realizado contribuciones.
Encuentra todos los repositorios en una organización donde contribuyentes específicos han realizado contribuciones.
Entradas:
- `org` (string, required) — Organization name
- `contributor_usernames` (string, required) — GitHub username(s) to filter by. Comma-separated for multiple.
- `repo_type` (string, optional, default: "all") — Filter by type: all, public, or private.
Esquema de salida data:
{
filter_contributors: string[];
organization: string | null;
repo_type_filter: string | null;
total_repos_with_filtered_contributors: number;
repos: {
repo: string | null;
full_name: string | null;
url: string | null;
private: boolean | null;
description: string | null;
contributors: {
username: string | null;
contributions: number;
}[];
total_filtered_contributions: number;
}[];
}
sub_issue_write — Gestiona sub-issues para un issue padre (añadir, eliminar, repriorizar).
Gestiona sub-issues para un issue padre (añadir, eliminar, repriorizar).
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `issue_number` (integer, required) — Parent issue number
- `method` (string, required) — Operation: add, remove, or reprioritize
- `sub_issue_id` (integer, required) — ID of the sub-issue
- `replace_parent` (boolean, optional, default: false) — Replace current parent when adding
- `after_id` (integer, optional) — Sub-issue ID to position after
- `before_id` (integer, optional) — Sub-issue ID to position before
Esquema de salida data:
{
method: string | null;
sub_issue_id: number | null;
success: boolean | null;
message: string | null;
}
assign_copilot_to_issue — Asigna GitHub Copilot para trabajar en un issue.
Asigna GitHub Copilot para trabajar en un issue.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `issue_number` (integer, required) — Issue number
- `base_ref` (string, optional) — Git reference to start from (optional).
- `custom_instructions` (string, optional) — Additional context for Copilot (optional).
Esquema de salida data:
{
issue_number: number | null;
assigned: boolean | null;
job_id: number | null;
status: string | null;
pull_request_url: string | null;
}
pull_request_read — Obtén detalles de un pull request con opciones de método flexibles (get, get_files, get_status, get_comments, get_review_comments).
Obtén detalles de un pull request con opciones de método flexibles (get, get_files, get_status, get_comments, get_review_comments).
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number
- `method` (string, optional, default: "get") — Which PR data to retrieve: get, get_files, get_status, get_comments, get_review_comments
- `page` (integer, optional, default: 1) — Page number
- `per_page` (integer, optional, default: 30) — Results per page
Esquema de salida data:
Forma polimórfica que cubre las 5 variantes de method. Solo se completan los campos relevantes al método utilizado; el resto permanece null.
{
// method="get"
number: number | null;
title: string | null;
body: string | null;
state: string | null;
state_reason: string | null;
url: string | null;
user: string | null;
created_at: string | null;
updated_at: string | null;
merged_at: string | null;
merged: boolean | null;
merge_commit_sha: string | null;
head: object | null;
base: object | null;
draft: boolean | null;
additions: number | null;
deletions: number | null;
changed_files: number | null;
commits: number | null;
labels: string[] | null;
assignees: string[] | null;
reviewers: string[] | null;
// method="get_files"
files: object[] | null;
total_files: number | null;
// method="get_status"
sha: string | null;
total_count: number | null;
statuses: object[] | null;
// method="get_comments"
comments: object[] | null;
total_comments: number | null;
// method="get_review_comments"
review_comments: object[] | null;
total_review_comments: number | null;
// pagination (get_files / get_comments / get_review_comments)
page: number | null;
per_page: number | null;
}
list_pull_requests — Lista pull requests en un repositorio de GitHub con opciones de filtrado y ordenación.
Lista pull requests en un repositorio de GitHub con opciones de filtrado y ordenación.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `state` (string, optional, default: "open") — Filter by state: open, closed, or all
- `sort` (string, optional, default: "created") — Sort by: created, updated, popularity, or long-running
- `direction` (string, optional, default: "desc") — Sort direction: asc or desc
- `base` (string, optional) — Filter by base branch
- `head` (string, optional) — Filter by head branch (user:branch format)
- `page` (integer, optional, default: 1) — Page number
- `per_page` (integer, optional, default: 30) — Results per page
Esquema de salida data:
{
pull_requests: {
number: number | null;
title: string | null;
state: string | null;
url: string | null;
user: string | null;
created_at: string | null;
updated_at: string | null;
draft: boolean | null;
additions: number | null;
deletions: number | null;
changed_files: number | null;
}[];
total_count: number;
page: number | null;
per_page: number | null;
}
create_pull_request — Crea un nuevo pull request en un repositorio de GitHub.
Crea un nuevo pull request en un repositorio de GitHub.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `title` (string, required) — Pull request title
- `head` (string, required) — Branch containing changes
- `base` (string, required) — Branch to merge into
- `body` (string, optional) — PR description (optional)
- `draft` (boolean, optional, default: false) — Create as draft PR
- `maintainer_can_modify` (boolean, optional, default: true) — Allow maintainer edits
Esquema de salida data:
{
number: number | null;
title: string | null;
state: string | null;
draft: boolean | null;
url: string | null;
head_branch: string | null;
base_branch: string | null;
created_at: string | null;
user: string | null;
}
update_pull_request — Actualiza el título, cuerpo, estado, rama base, estado de borrador, permiso de edición del mantenedor o revisores solicitados de un pull request.
Actualiza el título, cuerpo, estado, rama base, estado de borrador, permiso de edición del mantenedor o revisores solicitados de un pull request. Solo se modifican los campos que proporciones — los demás conservan su valor actual. NOTA: esto sobrescribe los valores de campo actuales — el estado original no se almacena después de la llamada. La respuesta incluye tanto el estado anterior como el posterior para que tengas un registro completo de lo que cambió.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number
- `title` (string, optional) — New title (optional)
- `body` (string, optional) — New description (optional)
- `state` (string, optional) — 'open' or 'closed' (optional)
- `base` (string, optional) — New base branch (optional)
- `draft` (boolean, optional) — Mark as draft/ready (optional)
- `maintainer_can_modify` (boolean, optional) — Allow maintainer edits (optional)
- `reviewers` (string[], optional) — Request reviews from users (optional)
Esquema de salida data:
{
before: {
number: number | null;
title: string | null;
body: string | null;
state: string | null;
state_reason: string | null;
url: string | null;
user: string | null;
created_at: string | null;
updated_at: string | null;
merged_at: string | null;
merged: boolean | null;
merge_commit_sha: string | null;
head: object | null;
base: object | null;
draft: boolean | null;
additions: number | null;
deletions: number | null;
changed_files: number | null;
commits: number | null;
labels: string[] | null;
assignees: string[] | null;
reviewers: string[] | null;
files: object[] | null;
total_files: number | null;
sha: string | null;
total_count: number | null;
statuses: object[] | null;
comments: object[] | null;
total_comments: number | null;
review_comments: object[] | null;
total_review_comments: number | null;
page: number | null;
per_page: number | null;
};
after: {
number: number | null;
title: string | null;
state: string | null;
draft: boolean | null;
url: string | null;
updated_at: string | null;
};
}
merge_pull_request — Fusiona un pull request usando el método de fusión indicado (merge, squash o rebase).
Fusiona un pull request usando el método de fusión indicado (merge, squash o rebase). Esta acción es irreversible — una vez fusionado, el pull request no se puede des-fusionar; deshacerlo requiere un nuevo commit o pull request.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number
- `merge_method` (string, optional, default: "merge") — 'merge', 'squash', or 'rebase'
- `commit_title` (string, optional) — Custom commit title (optional)
- `commit_message` (string, optional) — Commit message details (optional)
Esquema de salida data:
{
merged: boolean | null;
sha: string | null;
message: string | null;
}
update_pull_request_branch — Actualiza la rama del pull request con los últimos cambios de la rama base.
Actualiza la rama del pull request con los últimos cambios de la rama base.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number
- `expected_head_sha` (string, optional) — Expected HEAD SHA (optional)
Esquema de salida data:
{
message: string | null;
url: string | null;
}
pull_request_review_write — Operaciones de escritura en revisiones de PR: crear una revisión, enviar una revisión pendiente, eliminar una revisión pendiente o resolver/no resolver un hilo de revisión.
Operaciones de escritura en revisiones de PR: crear una revisión, enviar una revisión pendiente, eliminar una revisión pendiente o resolver/no resolver un hilo de revisión. Selecciona la operación mediante method. NOTA: delete_pending descarta permanentemente una revisión de borrador no enviada y cualquier comentario de borrador en ella — esto no se puede deshacer.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number
- `method` (string, required) — create, submit_pending, delete_pending, resolve_thread, or unresolve_thread
- `commit_id` (string, optional) — Commit SHA (required for create)
- `body` (string, optional) — Review comment text (optional)
- `event` (string, optional) — APPROVE, REQUEST_CHANGES, or COMMENT
- `thread_id` (string, optional) — Thread ID for thread operations
Esquema de salida data:
Forma polimórfica que cubre todas las variantes de method (create / submit_pending / delete_pending / resolve_thread / unresolve_thread).
{
// method="create"
id: number | null;
node_id: string | null;
state: string | null;
body: string | null;
user: string | null;
submitted_at: string | null;
// method="delete_pending"
deleted: boolean | null;
review_id: number | null;
// method="resolve_thread" / "unresolve_thread"
thread_id: string | null;
resolved: boolean | null;
message: string | null;
}
add_reply_to_pull_request_comment — Añade una respuesta a un comentario existente de PR.
Añade una respuesta a un comentario existente de PR.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number
- `comment_id` (integer, required) — ID of the comment to reply to
- `body` (string, required) — Reply text
Esquema de salida data:
{
id: number | null;
user: string | null;
body: string | null;
created_at: string | null;
url: string | null;
in_reply_to_id: number | null;
}
request_copilot_review — Solicita una revisión de código de GitHub Copilot en una solicitud de extracción.
Solicita una revisión de código de GitHub Copilot en una solicitud de extracción.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number
Esquema de salida data:
{
pull_number: number | null;
requested: boolean | null;
reviewer: string | null;
status: string | null;
}
list_branches — Lista las ramas de un repositorio de GitHub.
Lista las ramas de un repositorio de GitHub.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `page` (integer, optional, default: 1) — Page number
- `perPage` (integer, optional, default: 30) — Items per page
Esquema de salida data:
{
branches: {
name: string | null;
sha: string | null;
protected: boolean;
}[];
}
list_commits — Lista los commits de un repositorio de GitHub.
Lista los commits de un repositorio de GitHub.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `sha` (string, optional) — Branch or commit SHA
- `path` (string, optional) — Filter commits by path
- `author` (string, optional) — Filter by author login
- `since` (string, optional) — ISO 8601 date: YYYY-MM-DD
- `until` (string, optional) — ISO 8601 date: YYYY-MM-DD
- `page` (integer, optional, default: 1) — Page number
- `perPage` (integer, optional, default: 30) — Items per page
Esquema de salida data:
{
commits: {
sha: string | null;
message: string | null;
author: object | null;
committer: object | null;
date: string | null;
}[];
}
get_commit — Obtén los detalles de un commit específico.
Obtén los detalles de un commit específico.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `sha` (string, required) — Commit SHA
- `include_diff` (boolean, optional, default: true) — Include file changes in diff
Esquema de salida data:
{
sha: string | null;
message: string | null;
author: object | null;
committer: object | null;
date: string | null;
url: string | null;
files: object[] | null;
}
get_file_contents — Obtén el contenido de un archivo o directorio de un repositorio de GitHub.
Obtén el contenido de un archivo o directorio de un repositorio de GitHub.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `path` (string, optional, default: "/") — File or directory path
- `ref` (string, optional) — Branch, tag, or commit SHA
Esquema de salida data:
Forma polimórfica que cubre tanto respuestas de directorio como de archivo único.
{
type: string | null;
// directory listing
items: object[] | null;
// single file
name: string | null;
path: string | null;
size: number | null;
url: string | null;
content: string | null;
encoding: string | null;
}
list_tags — Lista todas las etiquetas git de un repositorio con soporte de paginación.
Lista todas las etiquetas git de un repositorio con soporte de paginación.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `page` (integer, optional, default: 1) — Page number.
- `perPage` (integer, optional, default: 30) — Number of tags per page (1-100).
Esquema de salida data:
{
tags: {
name: string | null;
commit: object | null;
zipball_url: string | null;
tarball_url: string | null;
}[];
page: number | null;
per_page: number | null;
}
get_tag — Obtén información detallada sobre una etiqueta git específica.
Obtén información detallada sobre una etiqueta git específica.
Entradas:
- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `tag` (string, required) — Tag name to retrieve.
Esquema de salida data:
{
ref: string | null;
node_id: string | null;
url: string | null;
object: object | null;
}
get_latest_release — Obtén la última release de un repositorio.
Obtén la última release de un repositorio.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
Esquema de salida data:
{
id: number | null;
tag_name: string | null;
name: string | null;
draft: boolean | null;
prerelease: boolean | null;
created_at: string | null;
published_at: string | null;
url: string | null;
body: string | null;
author: string | null;
}
list_releases — Lista las releases de un repositorio.
Lista las releases de un repositorio.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `page` (integer, optional, default: 1) — Page number
- `per_page` (integer, optional, default: 30) — Results per page
Esquema de salida data:
{
releases: {
id: number | null;
tag_name: string | null;
name: string | null;
draft: boolean | null;
prerelease: boolean | null;
created_at: string | null;
published_at: string | null;
url: string | null;
author: string | null;
}[];
total_count: number;
page: number | null;
per_page: number | null;
}
get_release_by_tag — Obtén una release específica por nombre de etiqueta.
Obtén una release específica por nombre de etiqueta.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `tag` (string, required) — Tag name (e.g., 'v1.0.0')
Esquema de salida data:
La forma de la respuesta es idéntica a la salida de get_latest_release.
{
id: number | null;
tag_name: string | null;
name: string | null;
draft: boolean | null;
prerelease: boolean | null;
created_at: string | null;
published_at: string | null;
url: string | null;
body: string | null;
author: string | null;
}
get_label — Obtén una etiqueta específica de un repositorio.
Obtén una etiqueta específica de un repositorio.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `name` (string, required) — Label name
Esquema de salida data:
{
id: number | null;
name: string | null;
color: string | null;
description: string | null;
url: string | null;
}
get_me — Obtén los detalles del usuario de GitHub autenticado.
Obtén los detalles del usuario de GitHub autenticado.
Entradas:
Este herramienta no acepta parámetros.
Esquema de salida data:
{
id: number | null;
login: string | null;
name: string | null;
email: string | null;
bio: string | null;
company: string | null;
location: string | null;
public_repos: number;
followers: number;
following: number;
created_at: string | null;
updated_at: string | null;
avatar_url: string | null;
profile_url: string | null;
}
get_branch_protection — Obtén las reglas de protección de rama para una rama específica.
Obtén las reglas de protección de rama para una rama específica.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name
Esquema de salida data:
{
url: string | null;
required_status_checks: object | null;
enforce_admins: boolean | null;
required_pull_request_reviews: object | null;
restrictions: object | null;
required_linear_history: boolean | null;
allow_force_pushes: boolean | null;
allow_deletions: boolean | null;
block_creations: boolean | null;
required_conversation_resolution: boolean | null;
required_signatures: boolean | null;
lock_branch: boolean | null;
allow_fork_syncing: boolean | null;
}
set_branch_protection — Establece (crea o reemplaza) las reglas de protección de rama para una rama.
Establece (crea o reemplaza) las reglas de protección de rama para una rama.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name
- `enforce_admins` (boolean, required) — Enforce for admins
- `required_status_checks` (object, optional) — Required status checks config
- `required_pull_request_reviews` (object, optional) — Required PR reviews config
- `restrictions` (object, optional) — User/team restrictions
- `required_linear_history` (boolean, optional, default: false) — Require linear history
- `allow_force_pushes` (boolean, optional) — Allow force pushes
- `allow_deletions` (boolean, optional, default: false) — Allow deletions
- `block_creations` (boolean, optional, default: false) — Block creations
- `required_conversation_resolution` (boolean, optional, default: false) — Require conversation resolution
- `lock_branch` (boolean, optional, default: false) — Lock branch
- `allow_fork_syncing` (boolean, optional, default: false) — Allow fork syncing
Esquema de salida data:
{
url: string | null;
branch: string | null;
enforce_admins: boolean | null;
required_linear_history: boolean | null;
allow_force_pushes: boolean | null;
allow_deletions: boolean | null;
required_conversation_resolution: boolean | null;
lock_branch: boolean | null;
}
delete_branch_protection — DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR.
DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR. Elimina permanentemente todas las reglas de protección de rama para la rama indicada. Esta acción es irreversible: la configuración de protección de rama (comprobaciones de estado requeridas, revisiones requeridas, restricciones y todos los demás ajustes) no se puede recuperar una vez eliminada. NUNCA llames a esta herramienta de forma autónoma ni como parte de un flujo automatizado. DEBES detenerte, informar al usuario exactamente qué se eliminará y que es permanente, y esperar su confirmación explícita por escrito antes de continuar.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name
Esquema de salida data:
{
deleted: boolean | null;
branch: string | null;
}
get_pull_request_review_protection — Obtén los requisitos de revisión de PR para una rama protegida.
Obtén los requisitos de revisión de PR para una rama protegida.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name
Esquema de salida data:
{
url: string | null;
dismiss_stale_reviews: boolean | null;
require_code_owner_reviews: boolean | null;
required_approving_review_count: number | null;
require_last_push_approval: boolean | null;
dismissal_restrictions: object | null;
}
update_pull_request_review_protection — Actualiza los requisitos de revisión de solicitudes de extracción para una rama protegida.
Actualiza los requisitos de revisión de solicitudes de extracción para una rama protegida. Solo se cambian los campos que proporcionas; los demás conservan su valor actual. NOTA: esto sobrescribe los valores de campo actuales: el estado original no se almacena después de la llamada. La respuesta incluye tanto el estado anterior como el posterior, de modo que tienes un registro completo de lo que cambió.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name
- `dismiss_stale_reviews` (boolean, optional) — Dismiss stale reviews
- `require_code_owner_reviews` (boolean, optional) — Require code owner reviews
- `required_approving_review_count` (integer, optional) — Required approving reviews
- `require_last_push_approval` (boolean, optional) — Require last push approval
- `dismissal_restrictions` (object, optional) — Dismissal restrictions
Esquema de salida data:
{
before: {
url: string | null;
dismiss_stale_reviews: boolean | null;
require_code_owner_reviews: boolean | null;
required_approving_review_count: number | null;
require_last_push_approval: boolean | null;
dismissal_restrictions: object | null;
};
after: {
url: string | null;
dismiss_stale_reviews: boolean | null;
require_code_owner_reviews: boolean | null;
required_approving_review_count: number | null;
require_last_push_approval: boolean | null;
dismissal_restrictions: object | null;
};
}
delete_pull_request_review_protection — DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR.
DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR. Elimina permanentemente los requisitos de revisión de solicitudes de extracción de la rama protegida indicada. Esta acción es irreversible: la configuración de requisitos de revisión (número de revisiones aprobatorias requeridas, restricciones de anulación, requisito de revisión del propietario del código y todos los demás ajustes) no se puede recuperar una vez eliminada. NUNCA llames a esta herramienta de forma autónoma ni como parte de un flujo automatizado. DEBES detenerte, informar al usuario exactamente qué se eliminará y que es permanente, y esperar su confirmación explícita por escrito antes de continuar.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name
Esquema de salida data:
{
deleted: boolean | null;
branch: string | null;
}
list_repository_rulesets — Lista todos los rulesets de un repositorio.
Lista todos los rulesets de un repositorio.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `includes_parents` (boolean, optional, default: true) — Include parent rulesets
- `per_page` (integer, optional, default: 30) — Results per page
- `page` (integer, optional, default: 1) — Page number
Esquema de salida data:
{
rulesets: {
id: number | null;
name: string | null;
target: string | null;
source_type: string | null;
enforcement: string | null;
node_id: string | null;
created_at: string | null;
updated_at: string | null;
}[];
page: number | null;
per_page: number | null;
}
get_repository_ruleset — Obtén un ruleset específico de un repositorio.
Obtén un ruleset específico de un repositorio.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `ruleset_id` (integer, required) — Ruleset ID
Esquema de salida data:
{
id: number | null;
name: string | null;
target: string | null;
source_type: string | null;
source: string | null;
enforcement: string | null;
conditions: object | null;
rules: object[];
bypass_actors: object[];
node_id: string | null;
created_at: string | null;
updated_at: string | null;
}
create_repository_ruleset — Crea un nuevo ruleset para un repositorio.
Crea un nuevo ruleset para un repositorio.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `name` (string, required) — Ruleset name
- `enforcement` (string, required) — active, evaluate, or disabled
- `target` (string, optional, default: "branch") — Target: branch, tag, or push
- `conditions` (object, optional) — Ruleset conditions
- `rules` (object[], optional) — Rules list
- `bypass_actors` (object[], optional) — Bypass actors
Esquema de salida data:
{
id: number | null;
name: string | null;
target: string | null;
enforcement: string | null;
conditions: object | null;
rules: object[];
bypass_actors: object[];
node_id: string | null;
created_at: string | null;
updated_at: string | null;
}
update_repository_ruleset — Actualiza un ruleset de repositorio existente.
Actualiza un ruleset de repositorio existente. Solo se cambian los campos que proporcionas; los demás conservan su valor actual. NOTA: esto sobrescribe los valores de campo actuales: el estado original no se almacena después de la llamada. La respuesta incluye tanto el estado anterior como el posterior, de modo que tienes un registro completo de lo que cambió.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `ruleset_id` (integer, required) — Ruleset ID
- `name` (string, optional) — New ruleset name
- `enforcement` (string, optional) — active, evaluate, or disabled
- `target` (string, optional) — Updated target: branch, tag, or push
- `conditions` (object, optional) — Updated conditions
- `rules` (object[], optional) — Updated rules
- `bypass_actors` (object[], optional) — Updated bypass actors
Esquema de salida data:
{
before: {
id: number | null;
name: string | null;
target: string | null;
source_type: string | null;
source: string | null;
enforcement: string | null;
conditions: object | null;
rules: object[];
bypass_actors: object[];
node_id: string | null;
created_at: string | null;
updated_at: string | null;
};
after: {
id: number | null;
name: string | null;
target: string | null;
enforcement: string | null;
conditions: object | null;
rules: object[];
bypass_actors: object[];
node_id: string | null;
created_at: string | null;
updated_at: string | null;
};
}
delete_repository_ruleset — DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR.
DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR. Elimina permanentemente el ruleset especificado del repositorio. Esta acción es irreversible: la configuración del ruleset (condiciones, reglas y actores de omisión) no se puede recuperar una vez eliminada. NUNCA llames a esta herramienta de forma autónoma ni como parte de un flujo automatizado. DEBES detenerte, informar al usuario exactamente qué se eliminará y que es permanente, y esperar su confirmación explícita por escrito antes de continuar.
Entradas:
- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `ruleset_id` (integer, required) — Ruleset ID
Esquema de salida data:
{
deleted: boolean | null;
ruleset_id: number | null;
}
Referencia de Parámetros de API
Envoltura de Respuesta
Cada herramienta devuelve la misma envoltura de nivel superior. Solo data varía según la herramienta.
// Success
{
"success": true,
"statusCode": 200,
"retriable": false,
"retry_after_seconds": null,
"error": null,
"data": { ... }
}
// Error
{
"success": false,
"statusCode": 400,
"retriable": false,
"retry_after_seconds": null,
"error": { "code": "{ERROR_CODE}", "message": "{description}", "details": {} },
"data": null
}
retriable—truecuando es seguro reintentar (límite de tasa, error de red, 503).falsepara errores de validación y autenticación.retry_after_seconds— segundos a esperar antes de reintentar; presente solo cuandoretriableestruey el upstream especifica un retraso.error.code— cadena legible por máquina:VALIDATION_ERROR,AUTH_ERROR,UPSTREAM_ERROR,SERVER_ERROR.
Parámetros Comunes
owner— Propietario del repositorio, utilizado en casi todas las herramientas que operan sobre un repositorio.repo— Nombre del repositorio, emparejado conowneren casi todas las herramientas que operan sobre un repositorio.page— Número de página para endpoints de listado/búsqueda paginados (predeterminado: 1 en todas las herramientas que lo soportan).perPage/per_page— Elementos o resultados por página para endpoints de listado/búsqueda paginados (predeterminado: 30 cuando corresponde; el nombre del parámetro varía según la herramienta — consulta las Entradas de cada herramienta arriba).
Solución de Problemas
Encabezados Faltantes o Inválidos
- Causa: Clave de API no proporcionada en los encabezados de la solicitud o formato incorrecto
- Solución:
- Verifica que los encabezados
Authorization: Bearer YOUR_API_KEYyX-Mewcp-Credential-Id: CREDENTIAL-IDestén presentes - Comprueba que la clave de API esté activa en tu cuenta de MewCP
- Verifica que los encabezados
Créditos Insuficientes
- Causa: Las llamadas a la API han superado tus límites de solicitud
- Solución:
- Revisa el uso de créditos en tu panel de Curious Layer
- Mejora a un plan de pago o añade créditos para límites más altos
- Contacta con soporte para ajustes de crédito
Credencial No Conectada
- **Causa:** No hay ninguna credencial de GitHub vinculada a tu cuenta - **Solución:** 1. Ve a **Credenciales** en tu panel de MewCP 2. Conecta tu cuenta de GitHub (OAuth) o añade tu clave de API (estática) 3. Reintenta la solicitud con el encabezado `X-Mewcp-Credential-Id` correctoCarga de solicitud malformada
- Causa: La carga JSON no es válida o le faltan campos obligatorios
- Solución:
- Valida la sintaxis JSON antes de enviarla
- Asegúrate de que todos los parámetros de herramienta obligatorios estén incluidos
- Comprueba que los tipos de parámetros coincidan con los valores esperados
Servidor no encontrado
- Causa: Nombre de servidor incorrecto en el endpoint de la API
- Solución:
- Verifica el formato del endpoint:
{server-name}/mcp/{tool-name} - Usa el nombre de servidor correcto de la documentación
- Comprueba los servidores disponibles en tu cuenta de Curious Layer
- Verifica el formato del endpoint:
Error de la API de GitHub
- Causa: La API de GitHub devolvió un error
- Solución:
- Comprueba el estado del servicio de GitHub en Página de estado de GitHub
- Verifica que tu credencial tenga los permisos necesarios (ámbitos OAuth)
- Revisa el mensaje de error para obtener detalles específicos
Recursos
- Documentación de la API REST de GitHub — Referencia oficial de la API
- Endpoints de la API REST de GitHub — Referencia completa de endpoints
- Documentación de FastMCP — Especificación de FastMCP
- Credenciales de FastMCP — Paquete de credenciales de FastMCP para el manejo de credenciales