teuton-mcp
<div align="center">
<img src="https://raw.githubusercontent.com/falkenslab/teuton-mcp/main/docs/static/img/logo.svg" alt="teuton-mcp logo" width="112"/>
# teuton-mcp
**Your AI agent checks your students' machines with Teuton, and tells you who did what.**<br/>
Tests written from a practice, checked, run for the class after your yes, results explained per student, grades ready for Moodle, and a teuton-panel driven from the chat.




[](LICENSE)
</div>
teuton-mcp is an MCP server for [Teuton](https://github.com/teuton-software/teuton), the infrastructure test tool for system administration teachers: an AI agent writes a test from your practice (its targets, the commands that check them, their weights), checks it, runs it against your students' machines once you say yes, reads each student's results (which targets passed, which failed and why), and hands the grades to Moodle through the moodle-teacher extension. With a [teuton-panel](https://github.com/fvarrui/teuton-panel) running in your classroom, it reads the class's results and starts runs there too. Your students' passwords never reach the AI. **It's in development and not on npm yet.**
## โจ Why teuton-mcp
- ๐งช **Tests from your practice.** Targets, commands and expectations in Teuton's language, checked before they run.
- โ **Nothing runs without your yes.** Running a test executes it on your computer and on your students' machines: the server asks you first, every time.
- ๐ **Passwords stay out.** The machines' credentials in `config.yaml` are never shown to the AI.
- ๐ **Results you can act on.** Each student's grade and every target with what it expected and what it got.
- ๐ **Grades to Moodle.** Teuton's `moodle.csv`, ready for moodle-teacher's grade import.
- ๐ฅ๏ธ **Your teuton-panel too.** The class in session: its results, runs, students and grades.
## ๐งฐ What's inside (planned)
| Area | For example |
| --- | --- |
| ๐งช Tests | `new_test`, `check_test`, `test_readme`, `list_cases` |
| โถ๏ธ Running | `run_test` (asks first), `read_results`, `grades_csv` |
| ๐ฅ๏ธ teuton-panel | `panel_status`, `panel_results`, `panel_start_run`, `panel_grades_csv` |
| ๐ For agents | The `teuton` extension in [agent-extensions](https://github.com/falkenslab/agent-extensions), with its skills and capabilities |
## ๐ ๏ธ Developing
The plan is in [`.minispec/features/teuton-tools.md`](.minispec/features/teuton-tools.md) and the main decisions in [ADR-005](.minispec/decisions/ADR-005-running-asks-the-person.md) and [ADR-006](.minispec/decisions/ADR-006-cli-and-panel.md); `CLAUDE.md` lists every command. `npm run build`, `npm test` and `npm run check` before every commit. Releases are published to npm by the owner.
<div align="center">
Made with ๐ by Falken's Lab Team
</div>
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of confusion or misselection. Any agent asking for server metadata has exactly one target.
The single name 'server_info' is a clean noun-based identifier, but with only one tool there is no pattern to verify consistency against. It reads predictably and would fit a consistent resource_noun convention.
A single informational tool is very thin for an MCP server surface; there is essentially no workflow to support. It earns its place as a diagnostic, but one tool cannot be called well-scoped for a server identity like teuton-mcp.
For the narrow stated purpose of reporting name, version, data folder, and dependency presence, the tool is self-contained and complete. However, the surface offers no other operations, so any broader domain implied by the server name goes entirely uncovered.