utn-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@utn-mcplist my courses in the UTN virtual classroom"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UTN-MCP — El puente entre tu agente y los sistemas de la Universidad.
Este es el Model Context Protocol server NO OFICIAL de la UTN. Con él podrás pedirle a tu agente de preferencia (ChatGPT, Claude, etc.) que busque informacion o archivos en el aula virtual.
Features
Actualmente solamente tiene dos tools, aula_get_site_info() y aula_list_courses(). Ya se incorporarán más!
Related MCP server: MCP-TUPAD
Cómo instalar
Necesitás Node.js 20 o superior. No hace falta clonar el repo ni instalar nada a mano: npx descarga el paquete solo.
1. Iniciar sesión
npx -y utn-mcp loginTe pide tu usuario institucional y tu contraseña de la UTN (los mismos de "Usuarios Institucionales" en el aula virtual). Se hace una sola vez: después el servidor renueva la sesión solo.
2. Agregarlo a tu cliente
Claude Code
claude mcp add utn -- npx -y utn-mcpClaude Desktop: en Settings → Developer → Edit Config, agregá dentro de mcpServers:
"utn": {
"command": "npx",
"args": ["-y", "utn-mcp"]
}En Windows, si no arranca, usá "command": "cmd" y "args": ["/c", "npx", "-y", "utn-mcp"]. Después reiniciá Claude Desktop por completo.
Otros clientes (Cursor, VS Code, etc.): cualquier cliente MCP que lance servidores por STDIO sirve con el comando npx -y utn-mcp.
Instalación global (opcional)
Si preferís tener el comando utn-mcp siempre disponible:
npm i -g utn-mcp
utn-mcp loginy en la config del cliente usás "command": "utn-mcp" sin argumentos.
Modo HTTP (opcional)
npx -y utn-mcp --http --port 3000Levanta el servidor en http://127.0.0.1:3000/mcp, solo accesible desde tu propia máquina. Tenés que dejar la terminal abierta mientras lo uses.
Dónde se guardan tus datos
Todo queda en tu computadora:
Usuario y contraseña: en el gestor de credenciales del sistema (Windows Credential Manager, Keychain en macOS, Secret Service en Linux).
Token del aula virtual y cookies de sesión: en
%APPDATA%\utn-mcp\session.json(Windows) o~/.config/utn-mcp/session.json(Linux y macOS).
En Linux sin gestor de credenciales (servidores, Docker, WSL) podés definir las variables de entorno UTN_USER y UTN_PASS en lugar de usar login.
Aviso
Este proyecto no está afiliado ni avalado por la UTN. Usalo bajo tu responsabilidad.
Available Tools
2 toolsaula_get_site_infoC
Datos del usuario logueado en el aula virtual de la UTN FRBA y del sitio Moodle.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not indicate whether authentication is required (implicit from 'logged-in user' but not stated), what data fields are returned, or any caching/rate-limit behavior. For a read-only info tool the risk is low, but the description adds little behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no wasted words. However, it could be front-loaded more clearly (site info vs user info) and is slightly under-specified for the amount of information it tries to cover.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no annotations, and no output schema, the description needs to carry the weight of explaining what data is returned and in what context. It identifies the two data sources but doesn't clarify the return structure or the distinction between the aula virtual and Moodle site, leaving the agent with moderate uncertainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so baseline is 4. Nothing to document and nothing missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it returns logged-in user's data from UTN FRBA's virtual classroom and Moodle site, which is a specific resource. However, it mingles two data domains (user profile vs. site info) without clarifying which the tool actually returns, and the tool name says 'site_info' while the description leads with user data. This ambiguity prevents a clear 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the sibling aula_list_courses, no prerequisites, and no indication of what context this information is useful for. The description is purely declarative with zero usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aula_list_coursesB
Lista los cursos (materias) en los que está inscripto el usuario en el aula virtual.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the scope (user's enrolled courses) which is useful behavioral context, but it does not state whether results are paginated, cached, ordered, or what happens if the user has no enrollments. That leaves notable behavioral gaps for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It states the action and scope immediately and does not pad with redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-annotation, no-output-schema list tool, the description is minimally adequate but incomplete. It does not mention ordering, pagination, empty-state behavior, or the response shape, which an agent might need in the absence of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description adds no parameter detail because there is none to add, and the tool requires no inputs, which is consistent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Lista') and resource ('los cursos/materias'), plus the scope ('en los que está inscripto el usuario en el aula virtual'). It is clearly distinguished from the sibling aula_get_site_info, which presumably returns site metadata rather than enrolled courses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or alternatives are given. The description implies it is for retrieving the user's own course enrollment, but it does not say when to choose this over aula_get_site_info or any other retrieval method.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
aula_get_site_info - First observed
aula_list_courses
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one returns user/site metadata, the other enumerates enrolled courses. An agent can easily select the right one without overlap.
Both tools follow a consistent verb_noun snake_case pattern with the same 'aula_' prefix (aula_get_site_info, aula_list_courses). Naming is fully predictable.
Only 2 tools for a Moodle-based virtual classroom is very thin; the domain typically requires assignments, grades, deadlines, and content access. The surface feels under-scoped rather than well-bounded.
The surface only covers site info and course listing, with no access to grades, assignments, course contents, or deadlines. These are significant gaps that would cause an agent to hit dead ends for most academic queries.
Maintenance
Related MCP Connectors
Access Pollinations models and API capabilities through agent tools.
Deterministic web intake and data utilities for autonomous agents.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Moodle LMS via the Moodle REST API, supporting management of courses, users, enrollments, grades, and content.GPL 3.0
- FlicenseAqualityCmaintenanceEnables AI assistants to query the UTN distance learning Moodle campus, providing tools to list courses, view content, check deadlines, see grades, and more.7-
- FlicenseNot gradedqualityBmaintenanceEnables browser-based login to approved UTN Moodle sites and read-only access to the user's profile, course list, and course activities via local Chromium automation.2-
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with Moodle LMS, fetching assignments, grades, deadlines, course content, and syncing to Obsidian, with WhatsApp alerts and class-slot filtering.-