Skip to main content

Servidor MCP para el agente aia (amanda-IA)

Project description

aia-mcp

Servidor MCP (Model Context Protocol) que expone herramientas para el agente aia del proyecto hermano amanda-IA.

aia-mcp agrupa varios servidores MCP independientes (temperatura, Warhammer 40K, monitor de estanque, shell, Airbnb, charts, email, MangaDex, swagger) que el agente aia consume vía stdio o HTTP.

Estructura

aia-mcp/
├── README.md
├── pyproject.toml
├── Dockerfile                 # imagen keitarodxs/aia-mcp
├── docker-compose.yml         # despliegue en nara
├── mcp_cli/                   # CLI (entry point `mcp`) y registro de servidores
├── specs/                     # especificaciones (ej. SPEC_TEMPERATURA.md)
├── temperatura/  wahapedia/  monitor/  shell/  airbnb/
├── charts/  mcp_email/  mangadex/  swagger/
├── resources/mcp-ssh/         # config de mcp-ssh (no usado en la imagen)
└── tests/                     # tests unitarios (pytest)

Cada servidor MCP vive en su propio directorio y se registra en mcp_cli/cli.py (diccionario SERVERS). Ejecuta cualquiera con poetry run mcp <servidor>.

Requisitos

  • Python 3.11+
  • Poetry
  • (Opcional, para despliegue) Docker + un host con el self-hosted runner registrado

Instalación

cd aia-mcp
poetry install

Ejecutar servidores MCP

Desde el directorio aia-mcp/:

poetry run aia-mcp                    # temperatura (por defecto, stdio)
poetry run aia-mcp temperatura        # explícito
poetry run aia-mcp --list             # listar servidores disponibles

# Modo HTTP (para conexión remota / agente aia por red)
poetry run aia-mcp temperatura --http   # puerto 8001
poetry run aia-mcp all --http           # todos los servidores en paralelo
  • stdio (por defecto): para Cursor, Claude Desktop, etc.
  • HTTP (--http): servidor en http://0.0.0.0:<puerto>/mcp.

Puertos por servidor

Servidor Puerto Servidor Puerto
temperatura 8001 airbnb 8006
wahapedia 8002 charts 8007
monitor 8003 email 8008
shell 8005 mangadex 8009
swagger 8010 drawio-mcp 3000/3333

drawio-mcp-server se instala dentro de la imagen Docker (no es un servidor MCP de este repo) y expone HTTP en :3000 + WebSocket de extensión en :3333.

Swagger UI (documentación de APIs)

poetry run mcp-swagger           # puerto 8010
# o
poetry run mcp swagger --http

Accede a: http://localhost:8010/

Conectar con el agente (Cursor / amanda-IA)

Configura el servidor MCP en Cursor o en el agente aia. Ejemplo para ~/.cursor/mcp.json:

{
  "mcpServers": {
    "temperatura": {
      "command": "poetry",
      "args": ["run", "mcp", "temperatura"],
      "cwd": "/ruta/a/aia-mcp"
    }
  }
}

Ajusta cwd a la ruta absoluta de tu proyecto aia-mcp.

Conectar aia por HTTP

  1. Inicia el servidor MCP en modo HTTP: poetry run aia-mcp temperatura --http
  2. En otra terminal, ejecuta el agente con la variable de entorno:
    MCP_URL=http://localhost:8001/mcp poetry run aia
    

Añadir nuevos servidores: crea el directorio (ej. nuevo_servidor/), implementa el servidor con FastMCP, y regístralo en mcp_cli/cli.py en el diccionario SERVERS (sumando su puerto en SERVER_PORTS).

Despliegue (Docker)

El repo publica automáticamente la imagen keitarodxs/aia-mcp en Docker Hub al pushear un tag v*.*.* (workflow .github/workflows/docker-image.yml).

Local / servidor con Docker

docker compose pull
docker compose up -d

Esto levanta el contenedor aia-mcp con todos los puertos mapeados y los volúmenes logs/ y .aia/ montados. Carga las variables desde .env (ver .env.example).

Build de la imagen: el proyecto se sigue gestionando con Poetry (pyproject.toml + poetry.lock), pero dentro del Dockerfile las dependencias se instalan con uv (uv pip install --system) por velocidad. El poetry.lock se respeta vía poetry export a requirements.txt. La imagen parte de la base del ecosistema keitarodxs/aia-utils-base:v1.0.0 (Python 3.13, git, uv, Node 20 + drawio-mcp-server ya incluidos).

Tests

poetry install --with dev
poetry run pytest

Cobertura actual: wahapedia (slug/normalización/facciones) y airbnb (serialización MongoDB / formato iCal).

Tools disponibles

temperatura — get_temperature

Obtiene la temperatura actual de una ciudad (valores simulados).

  • Parámetro: city (string, opcional)
  • Retorno: String con la temperatura

Ciudades soportadas: Santiago, Buenos Aires, Lima, Bogotá, Madrid, New York, Londres, Tokio.

monitor — estanque / acumulador

  • get_lectura_actual(): litros y porcentaje en tiempo real vía MQTT (MQTT_HOST, MQTT_TOPIC_OUT) o TINAJA_ESTADO_URL como fallback.
  • calculate_tinaja_level(distance): litros/% desde la distancia del sensor (cm).
  • get_tinaja_config(): configuración del estanque y estado MQTT.
  • get_velocidad_disminucion_agua(db_name, horas_atras): velocidad de bajada (L/h) usando historial en MongoDB. Requiere MONGODB_URI.

Variables .env: MQTT_HOST, MQTT_PORT, MQTT_USERNAME, MQTT_PASSWORD, MQTT_TOPIC_OUT, TINAJA_ESTADO_URL, MONGODB_URI.

wahapedia — Warhammer 40K

  • get_unit_stats(query, faction) / search_wahapedia(query)
  • get_factions() / get_units(faction) / get_stratagems(faction)

Cache en disco configurable: WAHAPEDIA_CACHE_ENABLED, WAHAPEDIA_CACHE_DIR, WAHAPEDIA_CACHE_TTL_DAYS (por defecto deshabilitada; TTL 60 días).

airbnb — reservas y calendario (MongoDB)

  • get_proxima_reserva(), get_reservas_futuras(solo_futuras), get_calendario_mes_airbnb(mes, anio), get_ingresos_mes(mes, anio)

Requiere MONGODB_URI y AIRBNB_DB.

charts / email / mangadex / shell / swagger

  • charts: genera gráficos (matplotlib) desde datos de MongoDB.
  • email: consulta correo IMAP Yahoo (YAHOO_EMAIL, YAHOO_APP_PASSWORD).
  • mangadex: descarga/consulta mangas (AIA_MANGA_DIR).
  • shell: run_command(command, cwd) para ejecutar comandos desde el agente.
  • swagger: UI de documentación de APIs en :8010.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aia_mcp-1.8.1.tar.gz (67.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aia_mcp-1.8.1-py3-none-any.whl (73.9 kB view details)

Uploaded Python 3

File details

Details for the file aia_mcp-1.8.1.tar.gz.

File metadata

  • Download URL: aia_mcp-1.8.1.tar.gz
  • Upload date:
  • Size: 67.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for aia_mcp-1.8.1.tar.gz
Algorithm Hash digest
SHA256 b99c8a1b5feffa5f935e44a9f39aa2e35b44c3618bc0716b4806560190a02abd
MD5 f68ad815f6e6deb792d18cd59adb15f0
BLAKE2b-256 9947ddfb6bc04e2fc4aa81a07694b725dfe9c26d1cb803df5161ee72d539697e

See more details on using hashes here.

File details

Details for the file aia_mcp-1.8.1-py3-none-any.whl.

File metadata

  • Download URL: aia_mcp-1.8.1-py3-none-any.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for aia_mcp-1.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 207fa6b7d7da95707c58cdcef13471743ffc926106d1baf5f5ec902751efe907
MD5 e0b63b0aaf4a6c59b86785ed42740df5
BLAKE2b-256 fdcaff760157d2362a142650bbfe973102248cd7d92a37cedc63d9a1fef35c82

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page