github-updates
Provides read-only access to a GitHub repository's issues and pull requests through the GitHub REST API. Exposes a search_issues tool that runs GitHub search queries (e.g. is:pr is:merged merged:2022-10-01..2022-10-31) and returns a compact list of matching issues/PRs with a total count, and a get_issue tool that retrieves the full body and comments of a specific issue or PR. Inputs are validated to keep queries scoped to a single owner/name repository, and only GET requests are made, so it can be used to summarize project activity, find open bugs, or gather status on merged work.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@github-updatesdraft an update for Soller211/mcp-agent-sol from this week's issues and PRs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-agent-sol
Un servidor MCP que da a una IA acceso de lectura a los issues y pull requests de GitHub, y un agente (Claude Agent SDK) que lo usa para redactar project updates automáticamente.
"update de owner/repo de octubre"
│
▼
┌──────────────────────┐ herramientas MCP ┌─────────────────────┐ HTTPS ┌────────────┐
│ agent.py │ ───────────────────▶ │ server.py │ ────────▶ │ GitHub API │
│ Claude Agent SDK │ ◀─────────────────── │ MCP Python SDK │ ◀──────── │ │
│ decide y redacta │ JSON │ search_issues │ └────────────┘
└──────────────────────┘ │ get_issue │
└─────────────────────┘Cómo funciona
agent.pyarrancaserver.pycomo subproceso y se conecta a él por stdio usando el protocolo MCP.El servidor anuncia sus herramientas (nombre, descripción, parámetros). Claude las ve como cualquier otra herramienta.
Claude lee tu petición y decide qué buscar, por ejemplo
search_issues(repo, "is:pr is:merged merged:2022-10-01..2022-10-31").El servidor traduce la llamada a la API REST de GitHub, recorta la respuesta a los campos útiles y la devuelve como JSON.
Claude repite los pasos 3–4 las veces que haga falta (hecho, en curso, pendiente, riesgos) y redacta el informe.
La separación es la idea clave: el servidor sabe cómo acceder a GitHub; el agente decide qué hacer. Por eso el servidor sirve también para otros clientes (Claude Code, Claude Desktop, modelos locales).
Related MCP server: AI Project Explorer
Instalación
Requisitos: Python ≥ 3.10 y un token de GitHub.
git clone https://github.com/Soller211/mcp-agent-sol && cd mcp-agent-sol
uv sync # o: python -m venv .venv && .venv/bin/pip install -e .Token de GitHub: se usa GITHUB_TOKEN; si no existe, el de la CLI gh (gh auth login). Recomendado: un token de solo lectura, ver Seguridad.
Claude: el agente usa tu sesión de Claude Code o la variable ANTHROPIC_API_KEY. Cada informe consume tokens (unos $0.05–0.10 con el modelo por defecto).
Uso del agente
uv run python agent.py "update de Soller211/customTenisDev de octubre 2022"
uv run python agent.py "update semanal de owner/repo" > update.md
uv run python agent.py "¿qué bugs abiertos tiene owner/repo?"El informe sale por stdout; las llamadas a herramientas y el coste, por stderr. Ejemplo real:
→ search_issues({'query': 'is:pr is:merged merged:2026-09-20..2026-09-27', ...})
→ search_issues({'query': 'is:issue closed:2026-09-20..2026-09-27', ...})
→ search_issues({'query': 'is:pr is:open', ...})
→ search_issues({'query': 'is:issue is:open', ...})
→ get_issue({'number': 18})
→ get_issue({'number': 15})
→ get_issue({'number': 14})
[8 turnos · $0.0628]
# Update: Soller211/customTenisDev (2026-09-20 → 2026-09-27)
**Resumen:** Esta semana se cerró 1 issue de documentación (README) y no se mergeó ningún PR. No hay PRs abiertos. Quedan 5 issues abiertos: 2 bugs, 2 mejoras y 1 bloqueado, que es la integración de la pasarela de pago y está esperando las credenciales del proveedor.
## ✅ Hecho
- [#19](...) Actualizar README con capturas y cómo ejecutar el proyecto (`documentation`), cerrado el 2026-09-27.
...
## ⚠️ Riesgos / bloqueos
- [#18](...) Pasarela de pago bloqueada: según el último comentario, está "esperando credenciales del proveedor de pagos".El agente solo abre el detalle (get_issue) de lo que parece bloqueado o es un bug: el número de llamadas se adapta a los datos.
Cambiar de modelo: ANTHROPIC_MODEL=claude-sonnet-5 uv run python agent.py "...".
Usar solo el servidor MCP
Claude Code:
claude mcp add github-updates -- /ruta/absoluta/.venv/bin/python /ruta/absoluta/server.pyClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"github-updates": {
"command": "/ruta/absoluta/.venv/bin/python",
"args": ["/ruta/absoluta/server.py"]
}
}
}Probarlo a mano con el MCP Inspector: npx @modelcontextprotocol/inspector@0.15.0 .venv/bin/python server.py (ciérralo con Ctrl+C al terminar: puede lanzar comandos).
En WSL, abre http://localhost:6274 en el navegador de Windows (con 127.0.0.1 la conexión puede ser rechazada).
Herramientas
Herramienta | Parámetros | Devuelve |
|
|
|
|
| cuerpo completo + comentarios |
Modelos locales (Qwen, vLLM, Ollama)
No probado en este repo todavía; son las vías conocidas.
El servidor es independiente del modelo: cualquier cliente MCP lo puede usar. Ejemplo con Qwen-Agent y un vLLM local:
from qwen_agent.agents import Assistant
bot = Assistant(
llm={"model": "Qwen/Qwen3-30B-A3B", "model_server": "http://localhost:8000/v1", "api_key": "EMPTY"},
function_list=[{"mcpServers": {"github": {"command": ".venv/bin/python", "args": ["server.py"]}}}],
)El agente habla el formato de la API de Anthropic. Para usarlo con un modelo local, pon delante un proxy que lo traduzca, como LiteLLM:
litellm --model hosted_vllm/Qwen/Qwen3-30B-A3B --api_base http://localhost:8000/v1 --port 4000
export ANTHROPIC_BASE_URL=http://localhost:4000 ANTHROPIC_API_KEY=local ANTHROPIC_MODEL=hosted_vllm/Qwen/Qwen3-30B-A3B
uv run python agent.py "update semanal de owner/repo"Modelos pequeños (7B–14B) suelen fallar al encadenar llamadas a herramientas; usa uno de ~30B o más con buen tool calling.
Seguridad
La IA decide qué herramientas llamar, pero solo dentro de lo que este código permite:
Solo lectura. El servidor solo hace
GETaapi.github.com(sin redirecciones) y el agente solo tienesearch_issuesyget_issue: sin Bash, sin escritura de archivos (tools=[]).Entradas validadas.
repodebe tener formatoowner/nombre(bloquea rutas comoa/b/../../user), yqueryno admiterepo:/org:/user:,OR/AND/NOTni paréntesis, que permitirían buscar fuera del repo.Aislado de tu configuración.
setting_sources=[]ystrict_mcp_config=True: el agente ignora~/.claude,.claude/del proyecto (y sus hooks) y otros servidores MCP.Contenido no confiable. Issues y comentarios los escribe cualquiera y pueden intentar prompt injection. El prompt le indica tratarlos como datos; al ser de solo lectura, lo peor posible es un informe engañoso. Revisa el informe antes de publicarlo.
Usa un token de mínimo privilegio. El token de gh suele tener permisos de escritura y administración. Crea un fine-grained token con acceso solo a los repos que quieras y permisos Issues: Read y Pull requests: Read, y expórtalo:
export GITHUB_TOKEN=github_pat_...Así, aunque el código cambiara, GitHub no permitiría escribir ni leer otros repos.
Lo que el agente envía al modelo (títulos, cuerpos y comentarios de issues) sale de tu máquina hacia Anthropic, o hacia el servidor del modelo que configures.
Límites y siguientes pasos
Una sola página de búsqueda (máx. 100 resultados por consulta). Siguiente paso: paginación.
La búsqueda de GitHub permite ~30 peticiones/minuto con token. Siguiente paso si se usa a escala: caché.
Solo lectura. Siguiente paso posible: herramienta para publicar el informe como comentario en un issue.
Los informes los redacta un LLM: revísalos antes de compartirlos.
Desarrollo
uv run pytest -qLicencia
This server cannot be deployed
Maintenance
Related MCP Connectors
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Search and fetch AI agent skills, rules files and MCP servers indexed from GitHub.
Access the GitHub API, enabling file operations, repository management, search functionality, and…
Search and read the aicoolies catalog of AI and developer tools via a remote MCP knowledge graph.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to list, search, and inspect issues on any public GitHub repository via natural language.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to discover and interact with GitHub repositories through standardized MCP tools, allowing exploration and retrieval of project information without direct API calls.-
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with GitHub repositories and issues through MCP tools, supporting listing repositories, listing and searching issues, and retrieving specific issues via the GitHub REST API.-
- AlicenseAqualityBmaintenanceLets agents read a GitHub repository's live issues through read-only tools for listing, filtering, fetching details with comments and cross-references, searching, and exploring labels and milestones, with transparent pagination and provenance notes.5MIT