Skip to main content
Glama

slim-github-mcp

Un servidor MCP de GitHub de solo lectura que devuelve resultados pequeños.

La mayoría de los servidores MCP de GitHub le pasan al modelo los objetos sin procesar de la API de GitHub. Eso está bien para un modelo de frontera detrás de una API rápida, pero es un problema para uno local: una sola página de resultados de búsqueda de repositorios pesa alrededor de 14 KB de JSON (~3,5k tokens), la mayor parte URL y banderas de permisos que nadie va a leer. Añade ~7k tokens de esquemas de herramientas y un modelo alojado localmente puede pasarse minutos en «lista mis repositorios» — o no terminar nunca.

Este servidor adopta la posición contraria. Cada herramienta devuelve un puñado de campos útiles, cada lista tiene un límite por parte del servidor y toda la superficie de herramientas son nueve funciones. El modelo no puede obtener un payload enorme, sin importar qué argumentos invente.

MCP de GitHub típico

slim-github-mcp

esquemas de herramienta

~27 herramientas, ~7,4k tokens

9 herramientas, ~830 tokens

«mis repos públicos»

no es una herramienta — necesita de búsqueda

gh_my_repos(visibility="public")

listado de un repo

~14 KB (30 objetos completos)

~2,4 KB (10 objetos recortados)

escrituras

normalmente disponibles

imposible por construcción

Herramientas

Herramienta

Devuelve

gh_whoami()

La cuenta autenticada: login, nombre, número de repos públicos

gh_my_repos(visibility, limit, page)

Tus propios repositorios, primero los más recientemente actualizados. visibility: all | public | private

gh_user_repos(username, limit, page)

Repos públicos de cualquier usuario u organización

gh_search_repos(query, limit, sort)

Búsqueda de repositorios. sort: stars | forks | updated

gh_search_code(query, limit)

Búsqueda de código: repositorio, ruta y URL por cada resultado, sin fragmentos

gh_issues(repo, state, limit)

Issues de owner/name

gh_pulls(repo, state, limit)

Pull requests de owner/name

gh_commits(repo, limit, branch)

Commits recientes: sha, fecha, autor, línea de asunto

gh_file(repo, path, ref)

Contenido de un solo archivo, o listado de un directorio

Todos los limit usan 10 por defecto y se limitan a un máximo de 30. gh_file trunca a 20k caracteres y lo indica mediante una bandera truncated. Los repos se devuelven como full_name, private, una description de 160 caracteres, language, stars, updated, url — nada más.

No hay, a propósito, ruta de escritura: el cliente solo hace GET a api.github.com.

Related MCP server: GitHub MCP Server

Obtención de un token de GitHub

El servidor necesita un token, que se usa en todas las llamadas. Solo se requerirá acceso de lectura.

  1. Ve a GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token.

  2. Establece una fecha de caducidad y elige qué repositorios puede ver el token: Public repositories only si no quieres que los datos privados salgan tarde de GitHub, o All repositories si quieres que gh_my_repos(visibility="private") funcione.

  3. En Repository permissions, otorga solo lectura a lo que realmente necesitas:

    • Metadata: Read-only — obligatorio, y suficiente para la enumeración de repos y la búsqueda

    • Contents: Read-only — para gh_file y gh_commits

    • Issues: Read-only — para gh_issues

    • Pull requests: Read-only — para gh_pulls

  4. Deja todos los Account permissions sin tocar.

  5. Copia el token: GitHub solo lo muestra una vez.

Un token clásico con alcance repo también funciona, pero es mucho más amplio de lo que este servidor necesita; preferible usar uno fine-grained.

Las llamadas no autenticadas a la API de GitHub están limitadas a 60 peticiones/hora, así que un token no es opcional en la práctica. Con uno obtienes 5.000/hora.

Instalación

git clone https://github.com/0xBakeer/slim-github-mcp.git
cd slim-github-mcp

python3 -m venv venv
./venv/bin/pip install -r requirements.txt

cp .env.example .env
$EDITOR .env            # put your token in GITHUB_MCP_TOKEN

Ejecútalo:

set -a; . ./.env; set +a
./venv/bin/uvicorn slim_github_mcp.main:app --host 127.0.0.1 --port "${GITHUB_MCP_PORT:-9130}"

Comprueba que ha arrancado y que el token funciona:

curl -s http://127.0.0.1:9130/api/health
curl -s -H "Authorization: Bearer $GITHUB_MCP_SECRET" \
     'http://127.0.0.1:9130/api/my-repos?visibility=public&limit=5'

El endpoint MCP en sí mismo es:

http://127.0.0.1:9130/tools/mcp/v1

Habla HTTP de transmisión (streamable HTTP), por lo que cualquier cliente MCP que acepte una URL puede usarlo.

Configuración

Variable

Default

Significado

GITHUB_MCP_TOKEN

Token de GitHub usado para todas las peticiones a la API. Obligatorio.

GITHUB_MCP_SECRET

(vacío)

Secreto compartido que los clientes deben enviar como Authorization: Bearer <secreto>. Vacío desactiva la autenticación.

GITHUB_MCP_PORT

9130

Puerto de escucha.

GITHUB_MCP_PUBLIC_HOST

(vacío)

Hostname público cuando se está detrás de un proxy inverso, p. ej. github-mcp.example.com.

Establece GITHUB_MCP_SECRET si el puerto es accesible por todo lo que no sea localhost. El servidor alberga un token que puede leer tus repositorios privados y, de lo contrario, no autentica a los llamantes. Genérate uno con openssl rand -hex 24.

GITHUB_MCP_PUBLIC_HOST existe porque MCP habilita la protección contra rebinding de DNS por defecto: las peticiones que llegan a través de un proxy inverso llevan el Host público y se rechazan a menos que ese hostname esté declarado. El síntoma de olvidarlo es un 400 en el endpoint MCP mientras /api/health responde bien.

Ejecución como servicio

scripts/github-mcp.service es una unidad de systemd para adaptarse: define User, las rutas y apunta EnvironmentFile a un archivo 0600 propiedad el root que contenga las variables de arriba. No pongas el token dentro del archivo de la unidad.

También hay un Dockerfile:

docker build -t slim-github-mcp .
docker run -d --name github-mcp -p 127.0.0.1:9130:9130 --env-file .env slim-github-mcp

Detrás de un proxy inverso

No hay nada inusual, pero MCP es un streaming por lo que tampoco:

location /tools/mcp/ {
    proxy_pass http://127.0.0.1:9130;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_cache off;
    proxy_read_timeout 3600s;
}

Establece GITHUB_MCP_PUBLIC_HOST al hostname del que se ejecuta tu proxy.

Uso de Open WebUI con Open WebUI

Open WebUI habla MCP de forma nativa (0.6.x y posteriores). Registra el servidor con el script auxiliar:

export OPEN_WEBUI_URL=https://webui.example.com
export OPEN_WEBUI_KEY=sk-...                      # Settings -> Account -> API keys
export GITHUB_MCP_URL=http://127.0.0.1:9130/tools/mcp/v1
export GITHUB_MCP_SECRET=...                      # if you set one

./scripts/register-open-webui.sh

Combina la entrada con los servidores de herramientas existentes de Open WebUI (coincide por el id, de modo quevolver a ejecutarla simplemente la actualiza) y luego imprime las herramientas que ha descubierto:

==> Verifying tool discovery
    9 tools: gh_whoami, gh_my_repos, gh_user_repos, ...

Para hacerlo a mano: Admin Settings → Tools → Añadir servidor de servidor, selecciona MCP, la URL como que arriba, autenticación Bearer con tu secreto.

Dos cosas que se escapan fácilamente:

  • Habilita la herramienta en el selector de herramientas del chat. Un servidor registrado no se ofrece automáticamente al modelo.

  • Si tienes herramientas fijadas por modelo (Workspace → Models → Tools), añádelas ahí también. Open WebUI lo guarda como server:mcp:<id>. Si luego reproduces el id del servidor, la referencia fijada se resuelve en a nada en silencio: el modelo sigue respondiendo, solo que sin la herramientas, normalmente adivinando.

Vale la pena saberlo: llamar directamente a /api/chat/completions con tool_ids no acopla los servidores de herramientas. La conexión de las herramientas se produce en el frontend, así que pruebalo a través de la interfaz.

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive access to GitHub repositories, issues, pull requests, commits, user profiles, and statistics through 10 tools with natural language query support and advanced search capabilities.
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables LLMs to interact with GitHub repositories, issues, pull requests, and workflows through the Model Context Protocol. It provides a comprehensive set of tools for repository management, issue tracking, code search, and CI/CD automation.
  • F
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to inspect local Git repositories and interact with the GitHub API for reading commits, diffs, files, issues, comments, pull requests, and project boards.
    10
    121

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.

  • Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/0xBakeer/slim-github-mcp'

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