venezuela-fakenews
Enables AI assistants to verify claims about Venezuela's June 2026 earthquake using pattern detection, official sources, and fact-check reports.
README
Venezuela FakeNews — Portal de Verificación + Chatbot Sismo
Monorepo para combatir desinformación sobre Venezuela, enfocado en el sismo de junio 2026. Incluye un portal web de verificación de claims (Verdadero/Falso/Dudoso), un chatbot temático, y un servidor MCP para asistentes de IA.
Key Features
- Portal de verificación — Ingresá un claim, obtené veredicto con nivel de confianza, explicación, patrones detectados y fuentes oficiales
- Chatbot del sismo — Respondé preguntas sobre daños, víctimas, ayuda humanitaria y desinformación detectada
- 6+ patrones de desinformación implementados y detectables (videos descontextualizados, contenido IA, usurpación de canales, falsos anuncios, operaciones YouTube, desinformación salarial)
- Servidor MCP para que asistentes de IA consuman la misma base de conocimiento
- Búsqueda Tavily opcional — consultas en tiempo real a fuentes confiables
- Historial de verificaciones persistido en SQLite
Tech Stack
| Capa | Tecnología |
|---|---|
| Frontend | Astro o Next.js (decisión pendiente) |
| Backend | Hono + Bun |
| ORM | Drizzle |
| Base datos | SQLite |
| API | oRPC (type-safe) |
| Búsqueda | Tavily Search API |
| Validación | Zod |
| Monorepo | Bun workspaces |
| MCP Server | @modelcontextprotocol/sdk + TypeScript |
Architecture
venezuela-fakenew/
├── apps/
│ ├── frontend/ ← Portal web (Astro o Next.js)
│ └── backend/ ← API Hono + oRPC + Drizzle
├── packages/
│ ├── core/ ← Lógica compartida (PATTERNS, verify, key facts)
│ └── mcp-server/ ← Servidor MCP para asistentes IA
└── docs/ ← Notas e investigación
El backend expone procedures oRPC (verifyClaim, getPatterns, chat, searchSources, getKeyFacts) que consume el frontend y potencialmente el MCP.
Equipo
| Nombre | Rol | Contacto |
|---|---|---|
| Michel Novellino | Frontend (Diseño) | michelnovellino.programador@gmail.com |
| Carlos Gallardo | Frontend | carlosdanielgallardoparra16@gmail.com |
| Stephan Calderín | Backend + Deployment | stephancalderin@gmail.com |
| Blure | Backend + BD | rpindv@gmail.com |
| José Alejandro Castro | Coordinación + MCP/Core | a.j.castro.b@gmail.com |
Project Status
Fase 1 — Definición y Diseño (27 de junio 2026). Decisiones pendientes:
- Stack frontend (Astro vs Next.js)
- Integración LLM (Tavily + reglas vs LLM real)
- Plataforma de deploy
- Nombre del producto
Servidor MCP (packages/mcp-server)
El servidor MCP se ejecuta como subproceso del host (opencode, Claude Desktop, etc.) vía STDIO.
Prerequisites
- Node.js 18+ (20+ recomendado)
- (Opcional) API key de Tavily
Getting Started
bun install
bun run build
bun run inspect # Probar con inspector MCP
Herramientas expuestas
| Tool | Input | Output |
|---|---|---|
get_fakenews_patterns |
Ninguno | Lista de 6 patrones con ejemplos y detección |
verify_claim |
claim, context? |
Análisis + patrones coincidentes + búsqueda web |
search_official_sources |
topic, max_results? |
Fuentes confiables (USGS, IOM, Reuters, etc.) |
generate_factcheck_report |
topic |
Reporte estructurado con datos del cuaderno |
Configuración en OpenCode
{
"mcpServers": {
"venezuela-fakenews": {
"command": "node",
"args": ["<path>/packages/mcp-server/dist/index.js"]
}
}
}
Variables de entorno
Cada paquete trae su archivo de ejemplo — cópialo y rellená los valores.
| Paquete | Archivo ejemplo | Copiar a |
|---|---|---|
apps/backend |
.dev.vars.example |
.dev.vars (local) · wrangler secret put (prod) |
apps/frontend |
.env.example |
.env |
packages/mcp-server |
.env.example |
.env |
Backend (apps/backend)
En local viven en .dev.vars; en producción se setean como secrets del Worker (bunx wrangler secret put <NOMBRE>). Nunca los pongas en [vars] de wrangler.toml — se escriben en texto plano y pisan el secret.
| Variable | Requerida | Descripción |
|---|---|---|
TURSO_DATABASE_URL |
Sí | URL de la base libSQL/Turso (libsql://...). |
TURSO_AUTH_TOKEN |
Sí | Token de auth de Turso. |
LLM_API_KEY |
Sí | Key del LLM. Una sk-ant-… enruta al proveedor nativo de Anthropic; cualquier otra usa el endpoint OpenAI-compatible. |
LLM_MODEL |
No | Modelo a usar. Default: claude-haiku-4-5-20251001 (Anthropic) o gpt-4o-mini (OpenAI-compat). |
LLM_BASE_URL |
No | Base URL OpenAI-compatible (Groq, HuggingFace…). Omitir para Anthropic/OpenAI. |
TAVILY_API_KEY |
Sí | Key de Tavily para búsqueda en tiempo real. |
CORS_ORIGIN |
Sí (prod) | Orígenes exactos permitidos, separados por coma. Si esto y CORS_ORIGIN_PATTERN quedan vacíos, CORS abre a * (fail-open) — fijalo antes de producción. |
CORS_ORIGIN_PATTERN |
No | Regex anclado para orígenes dinámicos (p. ej. cualquier puerto de localhost en dev). |
Frontend (apps/frontend)
Astro: solo las variables con prefijo PUBLIC_ llegan al cliente.
| Variable | Requerida | Descripción |
|---|---|---|
PUBLIC_API_URL |
Sí | URL base del backend; el cliente le añade /rpc. Default: http://localhost:8787. |
PUBLIC_MOCK_API |
No | false usa el backend real; cualquier otro valor (o ausente) sirve datos mock. |
MCP server (packages/mcp-server)
| Variable | Requerida | Descripción |
|---|---|---|
TAVILY_API_KEY |
No | Sin ella, verify_claim y search_official_sources usan solo el conocimiento base (sin búsqueda web). |
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.