Hacker News
Obtén e interactúa con contenido de Hacker News, incluyendo historias principales, comentarios y funcionalidad de búsqueda.
Documentación
📰 Servidor MCP de Hacker News
A Model Context Protocol (MCP) servidor que proporciona herramientas para obtener e interactuar con el contenido de Hacker News. Este servidor permite a los asistentes de IA acceder a datos en tiempo real de Hacker News, incluyendo historias principales, detalles de historias, comentarios y funcionalidad de búsqueda.
🚀 Características
🛠️ Herramientas disponibles
-
get_top_stories- Obtener las últimas historias principales de Hacker News- Recuento configurable (1-100 historias)
- Inclusión opcional de contenido de texto
- Devuelve metadatos de la historia, incluyendo título, URL, puntuación, autor y número de comentarios
-
get_story_details- Obtener información detallada sobre una historia específica- Obtener metadatos completos de la historia
- Inclusión opcional de comentarios con estructura de hilo
- Extracción opcional de contenido Markdown de artículos enlazados
-
get_story_comments- Recuperar comentarios populares de una historia- Filtrado configurable por puntuación mínima
- Profundidad ajustable del hilo de comentarios (1-10 niveles)
- Límite de comentarios devueltos (1-100)
- Formateado como texto legible con estructura de hilo
-
search_stories- Buscar historias recientes por palabras clave- Buscar en títulos, contenido y URLs de historias
- Rango de tiempo configurable (1-168 horas)
- Límite de resultados (1-50 historias)
📋 Requisitos previos
- Node.js 18+
- npm o yarn
- Un cliente compatible con MCP (como Claude Desktop)
🔧 Instalación
1. Clonar el repositorio
git clone https://github.com/yourusername/hackernews-mcp.git
cd hackernews-mcp
2. Instalar dependencias
npm install
3. Compilar el servidor
npm run build
🎯 Uso
Con Claude Desktop
Añade el servidor a tu configuración de Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"hackernews-mcp": {
"command": "node",
"args": ["/path/to/hackernews-mcp/build/index.js"]
}
}
}
Con otros clientes MCP
El servidor se comunica a través de stdio y puede usarse con cualquier cliente compatible con MCP:
node build/index.js
🔍 Ejemplo de uso
Una vez conectado, puedes preguntar a tu asistente de IA cosas como:
- "¿Cuáles son las historias principales de Hacker News hoy?"
- "Obtén detalles sobre la historia 12345678 de Hacker News"
- "Muéstrame comentarios sobre esa historia viral de IA"
- "Busca historias recientes sobre TypeScript"
🛠️ Desarrollo
Compilar el proyecto
npm run build
Modo de observación para desarrollo
npm run watch
Lint y formateo del código
npm run lint
npm run format
Ejecutar el MCP Inspector
Para depuración y pruebas:
npm run inspector
Esto iniciará el MCP Inspector, proporcionando una interfaz web para probar las herramientas del servidor e inspeccionar la comunicación.
📦 Calidad del código y contribuciones
- Calidad del código:
Este proyecto aplica calidad y estilo de código usando ESLint y Prettier. Todo el código se verifica en CI (GitHub Actions) y debe pasar el linting y el formateo antes de fusionarse. - Seguridad de tipos:
Todos los manejadores de herramientas usan guardas de tipo explícitas para la validación de argumentos en tiempo de ejecución y tipos TypeScript robustos. - CI/CD:
Cada push y pull request ejecuta la compilación completa, el lint y la (futura) suite de pruebas mediante GitHub Actions. - Cómo contribuir:
- Haz un fork del repositorio
- Crea una rama de características (
git checkout -b feature/amazing-feature) - Realiza tus cambios (
git commit -m 'Add amazing feature') - Ejecuta
npm run lintynpm run formatantes de hacer push - Haz push a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
📚 Referencia de la API
get_top_stories
{
count?: number; // Number of stories (1-100, default: 30)
include_text?: boolean; // Include story text content (default: false)
}
get_story_details
{
story_id: number; // Required: HN story ID
include_comments?: boolean; // Include comments (default: false)
include_markdown?: boolean; // Extract article as markdown (default: false)
}
get_story_comments
{
story_id: number; // Required: HN story ID
min_score?: number; // Minimum comment score (default: 1)
max_depth?: number; // Max thread depth (1-10, default: 3)
limit?: number; // Max comments (1-100, default: 20)
}
search_stories
{
query: string; // Required: Search keywords
limit?: number; // Max results (1-50, default: 20)
time_range_hours?: number; // Hours to search back (1-168, default: 24)
}
🏗️ Arquitectura
El servidor está construido con:
- TypeScript para seguridad de tipos y experiencia de desarrollo
- @modelcontextprotocol/sdk para la implementación del protocolo MCP
- axios para solicitudes HTTP a la API de Hacker News
- jsdom y turndown para la conversión de HTML a Markdown
- private-ip para seguridad (bloquea el acceso a IP privadas)
Componentes clave
src/index.ts- Implementación principal del servidor con manejadores de herramientassrc/fetcher.ts- Clase de utilidad para obtener y convertir contenido webbuild/- Salida de JavaScript compilado (generada automáticamente)
🔒 Seguridad
- Bloquea solicitudes a direcciones IP privadas para prevenir el acceso a la red local
- Límite de velocidad mediante los límites naturales de la API de Hacker News
- Validación de entrada para todos los parámetros de las herramientas
- Manejo de errores y degradación elegante
📜 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
🙏 Agradecimientos
- Hacker News por proporcionar la excelente API
- Model Context Protocol por el estándar
- La comunidad de código abierto por las increíbles herramientas y bibliotecas
📞 Soporte
Si encuentras algún problema o tienes preguntas:
- Consulta la página de Issues
- Usa el MCP Inspector para depuración:
npm run inspector - Crea un nuevo issue con información detallada sobre tu problema
Hecho con ❤️ para la comunidad MCP