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 mcp # temperatura (por defecto, stdio)
poetry run mcp temperatura # explícito
poetry run mcp --list # listar servidores disponibles
# Modo HTTP (para conexión remota / agente aia por red)
poetry run mcp temperatura --http # puerto 8001
poetry run mcp all --http # todos los servidores en paralelo
- stdio (por defecto): para Cursor, Claude Desktop, etc.
- HTTP (
--http): servidor enhttp://0.0.0.0:<puerto>/mcp.
Puertos por servidor
| Servidor | Puerto | Servidor | Puerto |
|---|---|---|---|
| temperatura | 8001 | airbnb | 8006 |
| wahapedia | 8002 | charts | 8007 |
| monitor | 8003 | 8008 | |
| shell | 8005 | mangadex | 8009 |
| swagger | 8010 | drawio-mcp | 3000/3333 |
drawio-mcp-serverse 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
- Inicia el servidor MCP en modo HTTP:
poetry run mcp temperatura --http - 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 delDockerfilelas dependencias se instalan conuv(uv pip install --system) por velocidad. Elpoetry.lockse respeta víapoetry exportarequirements.txt. La imagen parte de la base del ecosistemakeitarodxs/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) oTINAJA_ESTADO_URLcomo 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aia_mcp-1.5.0.tar.gz.
File metadata
- Download URL: aia_mcp-1.5.0.tar.gz
- Upload date:
- Size: 60.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.13.1 Linux/6.17.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
399db17f4536880bcf76b8b81d33fc8c4f4fb3bc4a087a5122945b638c58be33
|
|
| MD5 |
dd78ed578443cfcbb76e6ad51557ad69
|
|
| BLAKE2b-256 |
8999ccdeafee49afab2306beebb7895a9afe7f6b0989b3dd7b5369eeb3ec2c1c
|
File details
Details for the file aia_mcp-1.5.0-py3-none-any.whl.
File metadata
- Download URL: aia_mcp-1.5.0-py3-none-any.whl
- Upload date:
- Size: 67.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.13.1 Linux/6.17.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaae874c6e36ea652411ef9702e56e0c86d3779033468552132f56028e539247
|
|
| MD5 |
04ff87c24815194a5855c1f60066b447
|
|
| BLAKE2b-256 |
54d67573ac53f2e744caa95fcf03dc3325eef259f4026692f55cde966a37891b
|