MCP Venezuela FakeNews
A Model Context Protocol server for combating disinformation about Venezuela, integrating real fake news patterns with optional web search.
README
MCP Venezuela FakeNews
Servidor MCP (Model Context Protocol) para combatir desinformación sobre Venezuela. Integra patrones reales de fake news identificados en investigación (junio 2026) con búsqueda web actualizada vía Tavily.
Key Features
- 4 herramientas MCP para verificar claims, buscar fuentes oficiales, listar patrones y generar reportes
- Conocimiento base embebido de 6 patrones reales de desinformación venezolana (videos descontextualizados, contenido IA, usurpación de canales, falsos anuncios, operaciones YouTube, desinformación salarial)
- Búsqueda Tavily opcional — sin API key funciona solo con el conocimiento base
- Ligero — sin dependencias pesadas, compila a un solo archivo JS
Tech Stack
- Runtime: Node.js 18+
- Lenguaje: TypeScript 6.0 (compilado a ES2022)
- Framework MCP:
@modelcontextprotocol/sdk^1.29 - Validación: Zod ^4.4
- Búsqueda web: Tavily Search API (opcional)
- Entorno: dotenv para configuración local
Prerequisites
- Node.js 18 o superior (20+ recomendado)
- npm
- (Opcional) Una API key de Tavily — la misma que usas en opencode
Getting Started
1. Clonar e instalar
git clone <repo-url> ~/mcp-venezuela-fakenews
cd ~/mcp-venezuela-fakenews
npm install
2. Configurar variable de entorno (opcional)
Copia .env.example a .env y agrega tu API key de Tavily:
cp .env.example .env
# Edita .env con tu clave real:
# TAVILY_API_KEY=tvly-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sin API key las herramientas funcionan igual, pero las búsquedas web devuelven un aviso para que la configures.
3. Compilar
npm run build
Esto produce dist/index.js, dist/index.js.map y dist/index.d.ts.
4. Probar con el inspector MCP
npm run inspect
Esto abre una UI web local donde puedes probar cada herramienta interactivamente.
Architecture Overview
Directory Structure
mcp-venezuela-fakenews/
├── src/
│ └── index.ts # Código fuente único (server + tools + lógica)
├── dist/ # Compilado (generado por tsc)
│ ├── index.js
│ ├── index.js.map
│ └── index.d.ts
├── .env # Variables de entorno local (git-ignorado)
├── .env.example # Plantilla para .env
├── package.json
├── tsconfig.json
└── README.md
Request Lifecycle
- El host MCP (opencode, Claude Desktop, etc.) inicia
dist/index.jscomo subproceso via STDIO transport - El servidor se conecta al transporte y registra sus 4 herramientas
- Cada llamada a tool es un mensaje JSON-RPC sobre STDIO
- La herramienta ejecuta su lógica: consulta patrones embebidos y/o llama a Tavily API
- Devuelve un
contentblock con tipotext
Conocimiento embebido (sin base de datos)
El servidor no necesita base de datos externa. Los patrones de desinformación y datos clave están hardcodeados en src/index.ts:
PATTERNS: array de 6 objetos con nombre, descripción, ejemplos y método de detecciónKEY_FACTS: objeto con 5 categorías (política, economía, terremotos, migración, desinformación)
Esto permite que el MCP funcione offline sin dependencias externas.
Tavily Search (opcional)
La función tavilySearch() en src/index.ts:62:
- Lee
TAVILY_API_KEYdel entorno - Hace POST a
https://api.tavily.com/searchcon query mejorada (agrega "Venezuela" y filtros de fuentes confiables) - Retorna resultados estructurados o un error manejable
- Todas las tools manejan graceful degradation si no hay API key
Herramientas expuestas
| Tool | Input | Output |
|---|---|---|
get_fakenews_patterns |
Ninguno | Lista completa de 6 patrones con ejemplos y detección |
verify_claim |
claim (string), context? (string) |
Análisis del claim + patrones coincidentes + búsqueda web |
search_official_sources |
topic (string), max_results? (number, default 6) |
Resultados de fuentes confiables (USGS, IOM, Reuters, etc.) |
generate_factcheck_report |
topic (string) |
Reporte estructurado borrador con datos clave del cuaderno |
Environment Variables
| Variable | Requerida | Default | Descripción |
|---|---|---|---|
TAVILY_API_KEY |
No | — | API key de Tavily para búsquedas web. Sin ella las tools funcionan con conocimiento base solamente. |
Available Scripts
| Comando | Descripción |
|---|---|
npm run build |
Compila TypeScript a JS con tsc |
npm run start |
Ejecuta dist/index.js directamente |
npm run dev |
Watch mode: compila automáticamente en cada cambio (tsc -w) |
npm run inspect |
Abre el inspector MCP para probar herramientas |
Configuración en OpenCode
Agrega esto a tu ~/.config/opencode/opencode.json o al opencode.json del proyecto:
{
"mcpServers": {
"venezuela-fakenews": {
"command": "node",
"args": ["/Users/josecastro/mcp-venezuela-fakenews/dist/index.js"]
}
}
}
Reinicia opencode o recarga la configuración.
Uso
Listar patrones de desinformación
Usa la herramienta get_fakenews_patterns
Verificar un claim
Usa verify_claim con:
claim: "Delcy Rodríguez anunció aumento de salario a $800 mensuales"
context: "salario"
Buscar fuentes oficiales
Usa search_official_sources con:
topic: "terremotos junio 2026 víctimas oficiales"
Generar reporte
Usa generate_factcheck_report con:
topic: "Situación económica de Venezuela post-terremotos"
Testing
El proyecto actualmente no tiene suite de tests. Para verificar manualmente:
# Compila sin errores
npm run build
# Prueba con el inspector
npm run inspect
Deployment
Como servidor MCP local (recomendado)
No necesita deployment — se ejecuta como subproceso del host MCP. Solo compilar y apuntar la configuración MCP al dist/index.js.
Como servicio remoto (experimental)
Si quisieras ejecutarlo como servidor remoto:
- Cambiar
StdioServerTransportporSSEServerTransportdel SDK - Desplegar en cualquier plataforma Node (Railway, Fly.io, Render)
- Configurar el host MCP con la URL del SSE endpoint
Troubleshooting
TAVILY_API_KEY no configurada
Las tools funcionan sin API key, pero las búsquedas web no estarán disponibles. Configúrala en .env o exporta la variable:
export TAVILY_API_KEY="tvly-tu-clave-aqui"
Error de compilación
# Asegúrate de tener TypeScript 6+
npx tsc --version
# Reinstala dependencias
rm -rf node_modules && npm install
El MCP no se conecta
- Verifica que
dist/index.jsexiste (npm run build) - Verifica la ruta absoluta en la configuración MCP
- Ejecuta directamente para ver errores:
node dist/index.js - El servidor escribe logs a STDERR (visible en los logs del host MCP)
Contributing
Este proyecto nace de una investigación sobre desinformación en Venezuela (junio 2026). Las contribuciones son bienvenidas:
- Agregar más patrones a
PATTERNSensrc/index.ts - Mejorar la detección automática de claims en
verify_claim - Conectar con el cuaderno de Obsidian para lectura dinámica
- Agregar tests
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。