Wikipedia MCP
Un servidor MCP remoto para Wikipedia.
Documentación
Servidor Wikipedia MCP
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso integral a Wikipedia para asistentes de IA. Construido en TypeScript, desplegado en Vercel y totalmente compatible con el transporte MCP Streamable HTTP (versión de protocolo 2025-03-26).
Características
- 🔍 Búsqueda avanzada — encuentra artículos con clasificación por relevancia
- 📄 Acceso completo a artículos — extractos de texto plano o wikitexto completo
- 📝 Resúmenes inteligentes — resúmenes concisos adaptados a una consulta específica
- 🗂️ Análisis de secciones — extrae y resume secciones individuales
- 🔗 Descubrimiento de enlaces — enlaces internos y artículos relacionados
- 🌍 Multilingüe — más de 50 códigos de idioma, más de 140 códigos de país, resueltos automáticamente
- 🔀 Búsqueda paralela —
multi_search_wikipediaejecuta múltiples consultas simultáneamente - 🎯 Extracción de hechos — listas estructuradas de hechos clave de cualquier artículo
- 📍 Coordenadas — lat/lon para artículos geográficos
- ⚡ Streamable HTTP — soporte completo de transporte MCP (POST + GET SSE + DELETE)
- 🔒 Seguridad reforzada — saneamiento de entradas, limitación de velocidad por niveles, sin cabecera
Server - 🚀 Listo para Vercel — despliegue serverless sin estado, sin fricción de arranque en frío
Inicio rápido
1. Desplegar
git clone https://github.com/YOUR_USERNAME/wikipedia-mcp-vercel.git
cd wikipedia-mcp-vercel
vercel
O usa el botón Desplegar con Vercel de arriba.
2. Conecta tu cliente de IA
El servidor implementa transporte MCP Streamable HTTP (2025-03-26).
Se admiten tanto el canal POST (cliente → servidor) como el canal GET SSE (servidor → cliente).
Endpoint MCP: https://your-app.vercel.app/mcp
Claude Desktop
{
"mcpServers": {
"wikipedia": {
"type": "http",
"url": "https://your-app.vercel.app/mcp"
}
}
}
Claude Code / CLI
claude mcp add wikipedia --transport http https://your-app.vercel.app/mcp
Cualquier cliente MCP (genérico)
Configura el cliente con el tipo de transporte streamable-http y la URL del endpoint de arriba.
El servidor usa modo sin estado (sin cabecera Mcp-Session-Id), lo cual es correcto y esperado para despliegues serverless.
3. Variables de entorno (opcional)
| Variable | Predeterminado | Descripción |
|---|---|---|
WIKIPEDIA_LANGUAGE | en | Código de idioma de Wikipedia (p. ej. ja, es, de) |
WIKIPEDIA_COUNTRY | US | Mapeo de código de país → idioma (p. ej. JP, CN, LK) |
ENABLE_CACHE | false | Caché en memoria (útil para desarrollo local) |
WIKIPEDIA_BOT_USERNAME | — | Nombre de usuario de la cuenta de bot (Account@BotName) |
WIKIPEDIA_BOT_PASSWORD | — | Contraseña de la cuenta de bot |
PORT | 8000 | Puerto de desarrollo local (ignorado por Vercel) |
Copia .env.example → .env para desarrollo local.
4. Verificar
# Health check
curl https://your-app.vercel.app/health
# Test MCP initialize
curl -X POST https://your-app.vercel.app/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
Herramientas MCP
Las 13 herramientas aceptan parámetros opcionales language (p. ej. "ja") y country (p. ej. "JP"). Cuando se establecen, la consulta se envía tal cual al endpoint de Wikipedia de ese idioma (p. ej. ja.wikipedia.org). La búsqueda propia de Wikipedia a menudo puede coincidir con una frase corta de título en inglés con el artículo local correcto, pero no hay capa de traducción en este servidor.
Referencia de herramientas
| Herramienta | Descripción |
|---|---|
search_wikipedia | Buscar por palabra clave en un idioma |
multi_search_wikipedia | Ejecutar múltiples búsquedas en varios idiomas en paralelo |
get_article | Artículo completo — extracto de texto plano, o wikitexto con full: true |
get_summary | Solo resumen introductorio |
get_sections | Tabla de contenidos (títulos de sección + niveles) |
get_links | Todos los enlaces internos en un artículo |
get_coordinates | Latitud/longitud para artículos geográficos |
get_related_topics | Artículos relacionados mediante grafo de enlaces |
summarize_article_for_query | Resumen centrado en una pregunta específica |
summarize_article_section | Resumen de una sección nombrada |
extract_key_facts | Lista con viñetas de hechos clave |
test_wikipedia_connectivity | Diagnósticos de API + estado de autenticación |
list_supported_countries | Todos los códigos de idioma y país admitidos |
Prompts de MCP
Se registran tres plantillas de prompt y están disponibles mediante prompts/list / prompts/get:
| Prompt | Descripción |
|---|---|
search_in_native_language | Guía de formato de consulta para Wikipedia no inglesa |
wikipedia_usage_guide | Guía completa que cubre todas las herramientas y mejores prácticas |
multilingual_research | Guía paso a paso para investigación entre idiomas |
API REST
Endpoints HTTP estándar para uso no MCP:
GET /health
GET /search/:query?limit=10
GET /article/:title
GET /summary/:title
GET /sections/:title
GET /links/:title
GET /coordinates/:title
GET /related/:title?limit=10
GET /summary/:title/query/:query/length/:maxLength
GET /summary/:title/section/:section/length/:maxLength
GET /facts/:title?topic=...&count=5
GET /test-connectivity
GET /supported-countries
POST /tools/:toolName
Arquitectura
src/
├── server.ts # Express app wiring
├── routes/
│ ├── mcp.ts # Streamable HTTP transport (POST + GET SSE + DELETE)
│ └── rest.ts # REST endpoints
├── mcp-server.ts # MCPServer helper — tool dispatch, language routing
├── handlers.ts # Tool handler functions
├── toolRegistrations.ts # SDK tool + prompt registration
├── toolDefinitions.ts # JSON Schema definitions (for REST /mcp info)
├── prompts.ts # Prompt template logic
├── wikipedia-client.ts # Wikipedia Action API client
├── sanitize.ts # Input sanitization
├── middleware.ts # Rate limiting, Server header removal
├── utils.ts # Shared helpers
└── types.ts # TypeScript interfaces
Diseño del transporte
El servidor usa HTTP Streamable sin estado — el modo correcto para plataformas serverless:
POST /mcp— recibe mensajes JSON-RPC, devuelve JSON o flujo SSEGET /mcp— abre un canal SSE para mensajes iniciados por el servidor (los clientes se reconectan al expirar el tiempo)DELETE /mcp— terminación de sesión (confirmada; no hay sesiones del lado del servidor que limpiar)
Se crea una instancia nueva de McpServer + StreamableHTTPServerTransport para cada solicitud. Toda la lógica de Wikipedia se maneja mediante el helper compartido y sin estado MCPServer.
Desarrollo
npm install
npm run dev # tsx watch mode on port 8000
npm run build # tsc → dist/
npm start # node dist/server.js
vercel dev # local Vercel simulation
Autenticación de bot
Para límites de velocidad más altos de la API de Wikipedia, crea una contraseña de bot:
- Inicia sesión en tu cuenta de Wikipedia
- Ve a Special:BotPasswords
- Crea una nueva contraseña de bot
- Establece
WIKIPEDIA_BOT_USERNAME=YourAccount@BotNameyWIKIPEDIA_BOT_PASSWORD=...
Licencia
MIT