Skip to main content
Glama
README.md
# fiuba-mcp

MCP **no oficial** para el campus virtual (Moodle) de la Facultad de Ingeniería de la UBA. Le permite a tu asistente de IA (Claude, Cursor, Codex…) leer tus materias, materiales, entregas, avisos y notas.

> No está afiliado ni avalado por la FIUBA ni la UBA. Por ahora es solo lectura.

## Instalación

Requiere Node.js 22 o superior.

```sh
git clone https://github.com/<tu-usuario>/fiuba-mcp && cd fiuba-mcp
npm install
node build/index.js login                 # usuario y contraseña del campus, una sola vez
claude mcp add fiuba -- node "$PWD/build/index.js"
```

Para el campus de posgrado: `FIUBA_CAMPUS_URL=https://campusposgrado.fi.uba.ar node build/index.js login`.

La contraseña **no se guarda**: se usa una vez para obtener un token de Moodle, que queda en `~/.config/fiuba-mcp/session.json` (permisos 0600). Si expira, volvé a correr `login`.

## Herramientas

| Herramienta               | Qué hace                                                   |
| ------------------------- | ---------------------------------------------------------- |
| `fiuba_list_courses`      | Tus materias                                               |
| `fiuba_get_course`        | Secciones, recursos, archivos y actividades de una materia |
| `fiuba_read_file`         | Lee un archivo del campus (PDF, texto, HTML, CSV)          |
| `fiuba_upcoming`          | Próximas entregas y vencimientos                           |
| `fiuba_assignments`       | Entregas de una materia: estado, nota y devolución         |
| `fiuba_forum_discussions` | Últimos hilos de un foro (p. ej. Avisos)                   |
| `fiuba_read_discussion`   | Todos los mensajes de un hilo                              |
| `fiuba_grades`            | Calificaciones de una materia                              |

Ejemplos: _"¿Qué entregas tengo esta semana?"_, _"Resumime el último aviso de Análisis II"_, _"Leé el enunciado del TP1 de Algoritmos"_.

## Desarrollo

```sh
npm test        # tests en src/__test__/
npm run format  # prettier
npx @modelcontextprotocol/inspector node build/index.js
```

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation4/5

Each tool targets a distinct resource: courses (list/get), files, deadlines, assignments, forums, discussions, grades. Minor overlap exists between fiuba_assignments (which shows due dates and grades) and fiuba_upcoming/fiuba_grades, but the descriptions clearly delineate scope, and the get_course → read_file / forum_discussions → read_discussion chaining is well-signposted.

Naming Consistency5/5

Every tool follows a uniform `fiuba_verb_noun` snake_case pattern (list_courses, get_course, read_file, forum_discussions, read_discussion). No mixing of conventions or verb styles, making the set highly predictable.

Tool Count5/5

Eight tools is well-scoped for a Moodle campus client, with each tool earning its place (navigation, file reading, deadlines, assignments, forums, grades). No redundant or filler tools.

Completeness4/5

The surface covers the core read workflows of a student campus client: browsing courses, reading files, tracking deadlines, checking assignments/grades, and reading forum discussions. Write operations (submitting assignments, posting replies) are absent, but the read-only focus appears intentional and coherent.

Maintenance

ActivityMaintained
ResponsivenessNo issues