MewCP Github MCP

Servidor MCP GitHub hospedado, sem estado e multilocatário que conecta ferramentas de IA diretamente à plataforma do GitHub

Documentação

Acesso abrangente à API do GitHub para repositórios, issues, pull requests e código — tudo por meio de ferramentas MCP tipadas.

Um servidor Model Context Protocol (MCP) que expõe a API do GitHub para gerenciar repositórios, issues, pull requests, branches, releases, tags, proteção de branches e regras de repositórios.

Visão geral

O MewCP GitHub MCP Server fornece:

  • Gerenciamento de repositórios — obter, criar, atualizar e fazer fork de repositórios; criar ou atualizar arquivos e enviar commits com múltiplos arquivos
  • Busca no GitHub — repositórios, código, usuários, issues e pull requests
  • Rastreamento de issues — listar, obter, criar, comentar e atualizar issues, incluindo relacionamentos de sub-issues e atribuição ao Copilot
  • Fluxos de trabalho de pull requests — ler, listar, criar, atualizar, mesclar PRs, gerenciar atualizações de branch, escrever revisões, responder a comentários e solicitar revisão do Copilot
  • Administração de repositórios — branches, commits, conteúdos de arquivos, tags, releases, labels, proteção de branches, proteção de revisão de PRs e regras de repositórios

Perfeito para:

  • Agentes de IA que precisam ler e agir sobre o estado de repositórios no GitHub (issues, PRs, arquivos, commits)
  • Automatizar fluxos de trabalho rotineiros do GitHub — triagem de issues, solicitações de revisão de PRs, consultas de releases
  • Aplicar e auditar a governança de repositórios — proteção de branches, requisitos de revisão de PRs, regras

Ferramentas

get_repo — Obter detalhes básicos de um repositório do GitHub.

Obter detalhes básicos de um repositório do GitHub.

Entradas:

- `owner` (string, required) — Repository owner, for example octocat
- `repo` (string, required) — Repository name

Esquema de data de saída:

{
  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 — Atualiza metadados do repositório ou renomeia um repositório.

Atualiza metadados do repositório ou renomeia um repositório. Apenas os campos que você fornecer são alterados — os demais mantêm seus valores atuais. OBSERVAÇÃO: isso sobrescreve os valores atuais dos campos — o estado original não é armazenado após a chamada. A resposta inclui tanto o estado anterior quanto o posterior, para que você tenha um registro completo do que mudou.

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 data de saída:

{
  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 — Criar um novo repositório do GitHub na sua conta pessoal ou em uma organização.

Criar um novo repositório do GitHub na sua conta pessoal ou em uma organização.

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 data de saída:

{
  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 — Fazer fork de um repositório para sua conta pessoal ou uma organização.

Fazer fork de um repositório para sua conta pessoal ou uma organização.

Entradas:

- `owner` (string, required) — Original repository owner.
- `repo` (string, required) — Original repository name.
- `org` (string, optional) — Organization name to fork into (optional).

Esquema de data de saída:

{
  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 — Criar ou atualizar um arquivo em um repositório. Evita sobrescritas acidentais com validação de SHA.

Criar ou atualizar um arquivo em um repositório. Evita sobrescritas acidentais com validação de 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 data de saída:

{
  content: object | null;
  commit: object | null;
}
push_files — Enviar vários arquivos para um repositório em um único commit atômico.

Enviar vários arquivos para um repositório em um ú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 data de saída:

{
  commit_sha: string | null;
  tree_sha: string | null;
  branch: string | null;
  message: string | null;
  url: string | null;
}
search_repositories — Buscar repositórios no GitHub.

Buscar repositórios no 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 data de saída:

{
  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 — Busca de código rápida e precisa em repositórios do GitHub.

Busca de código rápida e precisa em repositórios do 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 data de saída:

{
  total_count: number;
  incomplete_results: boolean;
  items: {
    name: string | null;
    path: string | null;
    repository: string | null;
    url: string | null;
  }[];
}
search_users — Buscar usuários do GitHub por nome, localização, seguidores ou outros atributos.

Buscar usuários do GitHub por nome, localização, seguidores ou outros 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 data de saída:

{
  total_count: number;
  incomplete_results: boolean;
  items: {
    login: string | null;
    id: number | null;
    profile_url: string | null;
    avatar_url: string | null;
  }[];
}
search_issues — Buscar issues e pull requests no GitHub.

Buscar issues e pull requests no 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 data de saída:

{
  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 — Buscar pull requests no GitHub usando a sintaxe de busca.

Buscar pull requests no GitHub usando a sintaxe de busca.

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 data de saída:

{
  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 — Listar issues em um repositório do GitHub.

Listar issues em um repositório do 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 data de saída:

{
  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 — Obter informações detalhadas sobre uma issue específica do GitHub.

Obter informações detalhadas sobre uma issue específica do GitHub.

Entradas:

- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `issue_number` (integer, required) — Issue number.

Esquema de data de saída:

{
  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 — Obter todos os comentários de uma issue do GitHub com suporte a paginação.

Obter todos os comentários de uma issue do GitHub com suporte a paginação.

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 data de saída:

{
  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 — Criar uma nova issue do GitHub em um repositório.

Criar uma nova issue do GitHub em um repositório.

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 data de saída:

{
  id: number | null;
  number: number | null;
  url: string | null;
  title: string | null;
}
add_issue_comment — Adicionar um comentário a uma issue ou pull request do GitHub.

Adicionar um comentário a uma issue ou pull request do 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 data de saída:

{
  id: number | null;
  url: string | null;
  body: string | null;
  user: string | null;
}
update_issue — Atualiza o título, corpo, estado, responsáveis, labels ou marco de uma issue do GitHub.

Atualiza o título, corpo, estado, responsáveis, labels ou marco de uma issue do GitHub. Apenas os campos que você fornecer são alterados — os demais mantêm seus valores atuais. OBSERVAÇÃO: isso sobrescreve os valores atuais dos campos — o estado original não é armazenado após a chamada. A resposta inclui tanto o estado anterior quanto o posterior, para que você tenha um registro completo do que mudou.

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 data de saída:

{
  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 — Encontrar todos os repositórios em uma organização onde contribuidores específicos fizeram contribuições.

Encontrar todos os repositórios em uma organização onde contribuidores específicos fizeram contribuições.

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 data de saída:

{
  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 — Gerenciar sub-issues para uma issue pai (adicionar, remover, repriorizar).

Gerenciar sub-issues para uma issue pai (adicionar, remover, 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 data de saída:

{
  method: string | null;
  sub_issue_id: number | null;
  success: boolean | null;
  message: string | null;
}
assign_copilot_to_issue — Atribuir o GitHub Copilot para trabalhar em uma issue.

Atribuir o GitHub Copilot para trabalhar em uma 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 data de saída:

{
  issue_number: number | null;
  assigned: boolean | null;
  job_id: number | null;
  status: string | null;
  pull_request_url: string | null;
}
pull_request_read — Obter detalhes de um pull request com opções de método flexíveis (get, get_files, get_status, get_comments, get_review_comments).

Obter detalhes de um pull request com opções de método flexíveis (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 data de saída:

Forma polimórfica cobrindo todas as 5 variantes de method. Apenas os campos relevantes ao método utilizado são preenchidos; os demais permanecem 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 — Listar pull requests em um repositório do GitHub com opções de filtragem e ordenação.

Listar pull requests em um repositório do GitHub com opções de filtragem e ordenação.

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 data de saída:

{
  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 — Criar um novo pull request em um repositório do GitHub.

Criar um novo pull request em um repositório do 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 data de saída:

{
  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 — Atualiza o título, corpo, estado, branch base, status de rascunho, permissão de edição do mantenedor ou revisores solicitados de um pull request.

Atualiza o título, corpo, estado, branch base, status de rascunho, permissão de edição do mantenedor ou revisores solicitados de um pull request. Apenas os campos que você fornecer são alterados — os demais mantêm seus valores atuais. OBSERVAÇÃO: isso sobrescreve os valores atuais dos campos — o estado original não é armazenado após a chamada. A resposta inclui tanto o estado anterior quanto o posterior, para que você tenha um registro completo do que mudou.

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 data de saída:

{
  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 — Mescla um pull request usando o método de mesclagem fornecido (merge, squash ou rebase).

Mescla um pull request usando o método de mesclagem fornecido (merge, squash ou rebase). Esta ação é irreversível — uma vez mesclado, o pull request não pode ser desmesclado; desfazê-la exige um novo commit ou 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 data de saída:

{
  merged: boolean | null;
  sha: string | null;
  message: string | null;
}
update_pull_request_branch — Atualizar o branch do pull request com as alterações mais recentes do branch base.

Atualizar o branch do pull request com as alterações mais recentes do branch 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 data de saída:

{
  message: string | null;
  url: string | null;
}
pull_request_review_write — Operações de escrita em revisões de PR: criar uma revisão, enviar uma revisão pendente, excluir uma revisão pendente ou resolver/não resolver um tópico de revisão.

Operações de escrita em revisões de PR: criar uma revisão, enviar uma revisão pendente, excluir uma revisão pendente ou resolver/não resolver um tópico de revisão. Selecione a operação via method. OBSERVAÇÃO: delete_pending descarta permanentemente uma revisão de rascunho não enviada e quaisquer comentários de rascunho nela — isso não pode ser desfeito.

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 data de saída:

Forma polimórfica cobrindo todas as 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 — Adiciona uma resposta a um comentário existente de PR.

Adiciona uma resposta a um comentário 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 saída 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 uma revisão de código do GitHub Copilot em um pull request.

Solicita uma revisão de código do GitHub Copilot em um pull request.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `pull_number` (integer, required) — Pull request number

Esquema de saída data:

{
  pull_number: number | null;
  requested: boolean | null;
  reviewer: string | null;
  status: string | null;
}
list_branches — Lista branches em um repositório do GitHub.

Lista branches em um repositório do 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 saída data:

{
  branches: {
    name: string | null;
    sha: string | null;
    protected: boolean;
  }[];
}
list_commits — Lista commits em um repositório do GitHub.

Lista commits em um repositório do 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 saída data:

{
  commits: {
    sha: string | null;
    message: string | null;
    author: object | null;
    committer: object | null;
    date: string | null;
  }[];
}
get_commit — Obtém detalhes de um commit específico.

Obtém detalhes de um 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 saída 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ém o conteúdo de um arquivo ou diretório de um repositório do GitHub.

Obtém o conteúdo de um arquivo ou diretório de um repositório do 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 saída data:

Forma polimórfica cobrindo tanto respostas de diretório quanto de arquivo ú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 as tags git em um repositório com suporte a paginação.

Lista todas as tags git em um repositório com suporte a paginação.

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 saída 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ém informações detalhadas sobre uma tag git específica.

Obtém informações detalhadas sobre uma tag git específica.

Entradas:

- `owner` (string, required) — Repository owner name.
- `repo` (string, required) — Repository name.
- `tag` (string, required) — Tag name to retrieve.

Esquema de saída data:

{
  ref: string | null;
  node_id: string | null;
  url: string | null;
  object: object | null;
}
get_latest_release — Obtém a versão mais recente em um repositório.

Obtém a versão mais recente em um repositório.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name

Esquema de saída 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 versões em um repositório.

Lista versões em um repositório.

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 saída 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ém uma versão específica pelo nome da tag.

Obtém uma versão específica pelo nome da tag.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `tag` (string, required) — Tag name (e.g., 'v1.0.0')

Esquema de saída data:

A forma da resposta é idêntica à saída 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ém um label específico de um repositório.

Obtém um label específico de um repositório.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `name` (string, required) — Label name

Esquema de saída data:

{
  id: number | null;
  name: string | null;
  color: string | null;
  description: string | null;
  url: string | null;
}
get_me — Obtém detalhes do usuário autenticado do GitHub.

Obtém detalhes do usuário autenticado do GitHub.

Entradas:

Este tool não recebe parâmetros.

Esquema de saída 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ém regras de proteção de branch para um branch específico.

Obtém regras de proteção de branch para um branch específico.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name

Esquema de saída 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 — Define (cria ou substitui) regras de proteção de branch para um branch.

Define (cria ou substitui) regras de proteção de branch para um branch.

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 saída 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 — DESTRUTIVO — EXIGE CONFIRMAÇÃO EXPLÍCITA DO USUÁRIO ANTES DE CHAMAR.

DESTRUTIVO — EXIGE CONFIRMAÇÃO EXPLÍCITA DO USUÁRIO ANTES DE CHAMAR. Exclui permanentemente todas as regras de proteção de branch para o branch informado. Esta ação é irreversível — a configuração de proteção de branch (status checks obrigatórios, revisões obrigatórias, restrições e todas as outras configurações) não pode ser recuperada após a exclusão. NUNCA chame este tool de forma autônoma ou como parte de um fluxo automatizado. Você DEVE parar, informar ao usuário exatamente o que será excluído e que isso é permanente, e aguardar a confirmação explícita por escrito antes de prosseguir.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name

Esquema de saída data:

{
  deleted: boolean | null;
  branch: string | null;
}
get_pull_request_review_protection — Obtém requisitos de revisão de PR para um branch protegido.

Obtém requisitos de revisão de PR para um branch protegido.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name

Esquema de saída 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 — Atualiza os requisitos de revisão de pull request para um branch protegido.

Atualiza os requisitos de revisão de pull request para um branch protegido. Apenas os campos fornecidos são alterados — os demais mantêm seu valor atual. OBSERVAÇÃO: isso sobrescreve os valores atuais dos campos — o estado original não é armazenado após a chamada. A resposta inclui tanto o estado anterior quanto o posterior, para que você tenha um registro completo do que mudou.

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 saída 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 — DESTRUTIVO — EXIGE CONFIRMAÇÃO EXPLÍCITA DO USUÁRIO ANTES DE CHAMAR.

DESTRUTIVO — EXIGE CONFIRMAÇÃO EXPLÍCITA DO USUÁRIO ANTES DE CHAMAR. Remove permanentemente os requisitos de revisão de pull request do branch protegido informado. Esta ação é irreversível — a configuração dos requisitos de revisão (quantidade obrigatória de revisões aprovadas, restrições de dispensa, exigência de revisão por code owner e todas as outras configurações) não pode ser recuperada após a exclusão. NUNCA chame este tool de forma autônoma ou como parte de um fluxo automatizado. Você DEVE parar, informar ao usuário exatamente o que será excluído e que isso é permanente, e aguardar a confirmação explícita por escrito antes de prosseguir.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `branch` (string, required) — Branch name

Esquema de saída data:

{
  deleted: boolean | null;
  branch: string | null;
}
list_repository_rulesets — Lista todos os rulesets de um repositório.

Lista todos os rulesets de um repositório.

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 saída 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ém um ruleset específico de um repositório.

Obtém um ruleset específico de um repositório.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `ruleset_id` (integer, required) — Ruleset ID

Esquema de saída 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 — Cria um novo ruleset para um repositório.

Cria um novo ruleset para um repositório.

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 saída 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 — Atualiza um ruleset existente do repositório.

Atualiza um ruleset existente do repositório. Apenas os campos fornecidos são alterados — os demais mantêm seu valor atual. OBSERVAÇÃO: isso sobrescreve os valores atuais dos campos — o estado original não é armazenado após a chamada. A resposta inclui tanto o estado anterior quanto o posterior, para que você tenha um registro completo do que mudou.

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 saída 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 — DESTRUTIVO — EXIGE CONFIRMAÇÃO EXPLÍCITA DO USUÁRIO ANTES DE CHAMAR.

DESTRUTIVO — EXIGE CONFIRMAÇÃO EXPLÍCITA DO USUÁRIO ANTES DE CHAMAR. Exclui permanentemente o ruleset especificado do repositório. Esta ação é irreversível — a configuração do ruleset (condições, regras e atores de bypass) não pode ser recuperada após a exclusão. NUNCA chame este tool de forma autônoma ou como parte de um fluxo automatizado. Você DEVE parar, informar ao usuário exatamente o que será excluído e que isso é permanente, e aguardar a confirmação explícita por escrito antes de prosseguir.

Entradas:

- `owner` (string, required) — Repository owner
- `repo` (string, required) — Repository name
- `ruleset_id` (integer, required) — Ruleset ID

Esquema de saída data:

{
  deleted: boolean | null;
  ruleset_id: number | null;
}

Referência de Parâmetros da API

Envelope de Resposta

Todo tool retorna o mesmo envelope de nível superior. Apenas data varia por tool.

// 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 — true quando é seguro tentar novamente (limite de taxa, erro de rede, 503). false para erros de validação e autenticação.
  • retry_after_seconds — segundos de espera antes de tentar novamente; presente apenas quando retriable é true e o upstream especifica um atraso.
  • error.code — string legível por máquina: VALIDATION_ERROR, AUTH_ERROR, UPSTREAM_ERROR, SERVER_ERROR.
Parâmetros Comuns
  • owner — Proprietário do repositório, usado em quase todos os tools que operam em um repositório.
  • repo — Nome do repositório, emparelhado com owner em quase todos os tools que operam em um repositório.
  • page — Número da página para endpoints paginados de listagem/busca (padrão: 1 em todos os tools que suportam).
  • perPage / per_page — Itens ou resultados por página para endpoints paginados de listagem/busca (padrão: 30 quando aplicável; o nome do parâmetro varia por tool — consulte as Entradas de cada tool acima).

Solução de Problemas

Headers Ausentes ou Inválidos
  • Causa: Chave de API não fornecida nos headers da requisição ou formato incorreto
  • Solução:
    1. Verifique se os headers Authorization: Bearer YOUR_API_KEY e X-Mewcp-Credential-Id: CREDENTIAL-ID estão presentes
    2. Confirme se a chave de API está ativa na sua conta MewCP
Créditos Insuficientes
  • Causa: As chamadas de API excederam seus limites de requisição
  • Solução:
    1. Verifique o uso de créditos no seu painel do Curious Layer
    2. Faça upgrade para um plano pago ou adicione créditos para limites maiores
    3. Entre em contato com o suporte para ajustes de créditos
Credencial Não Conectada - **Causa:** Nenhuma credencial do GitHub vinculada à sua conta - **Solução:** 1. Vá para **Credenciais** no seu painel MewCP 2. Conecte sua conta do GitHub (OAuth) ou adicione sua chave de API (estática) 3. Repita a solicitação com o cabeçalho `X-Mewcp-Credential-Id` correto
Payload de Solicitação Malformado
  • Causa: O payload JSON é inválido ou está faltando campos obrigatórios
  • Solução:
    1. Valide a sintaxe JSON antes de enviar
    2. Garanta que todos os parâmetros obrigatórios da ferramenta estejam incluídos
    3. Verifique se os tipos de parâmetros correspondem aos valores esperados
Servidor Não Encontrado
  • Causa: Nome incorreto do servidor no endpoint da API
  • Solução:
    1. Verifique o formato do endpoint: {server-name}/mcp/{tool-name}
    2. Use o nome correto do servidor conforme a documentação
    3. Verifique os servidores disponíveis na sua conta Curious Layer
Erro da API do GitHub
  • Causa: A API upstream do GitHub retornou um erro
  • Solução:
    1. Verifique o status do serviço GitHub em Página de Status do GitHub
    2. Confirme se sua credencial possui as permissões necessárias (escopos OAuth)
    3. Revise a mensagem de erro para obter detalhes específicos

Recursos