Knossos-MCP
Het labyrint één keer in kaart, zodat niemand er nog doorheen hoeft te dwalen.
Knossos (Κνωσός) is het bronstijdpaleis in het hart van Minoïsch Kreta, een complex zo uitgestrekt dat de Griekse mythologie het onthield als het Labyrint, de doolhof die Daedalus bouwde voor de Minotaurus, die niemand kon doorkruisen zonder een draad om de weg terug te vinden. Ariadne gaf die draad aan Theseus.
Wat het doet
Knossos-MCP is een local-first MCP-server die een repository één keer scant en architectuurvragen beantwoordt uit een graph die op bewijs steunt, zodat een agent niet telkens de hele broncode hoeft te herlezen om te weten wat van wat afhangt. Elk feit verwijst terug naar een bestand en een regel; wat statische analyse niet kan bewijzen, krijgt een confidence-label in plaats van een gok.
Scannen installeert nooit dependencies, importeert nooit een module en start nooit een framework op: workers draaien gesuperviseerd, met een resource-limiet, en hun uitvoer telt pas mee nadat die een schema- en limietcontrole doorstaat. Drieëndertig MCP-tools dekken oriëntatie, projecten en historie, het opzoeken van componenten, structuur- en impactanalyse en onderhoud; alleen server_info heeft geen CLI-equivalent. De vier schrijftools tonen standaard een preview en passen pas iets toe zodra je expliciet execute meegeeft.
Snel starten
Knossos-MCP staat nog niet op Packagist of in een container-registry, dus bouw de image zelf vanaf de broncode. De aanbevolen distributie is Docker: die pint PHP, Node, Python, Composer, SQLite, de PHP-parser en de TypeScript-compiler vast, zodat het gescande project daar zelf niets van nodig hoeft te hebben.
docker build -t knossos-mcp:dev .
docker run --rm knossos-mcp:dev doctor --jsonVoorbeelden
Twee aanroepen, echt uitgevoerd op de eigen broncode van Knossos-MCP, ingekort met '…'.
Een scan van de repository:
$ knossos scan . --json
{"summary":"Scanned 394 files into 5446 nodes and 31972 relationships.",
"data":{"files":394,"nodes":5446,"edges":31972,"diagnostics":0,"mode":"full",
"scanner_metadata":{"knossos.php":{"files_scanned":372},
"knossos.typescript":{"files_scanned":17,"programs":1},
"knossos.python":{"files_scanned":5,"parser":"python.ast"}},
"metrics":{"elapsed_ms":7443.85, …}}}Jezelf oriënteren in de resulterende graph:
$ knossos architecture-summary project_1b4f41… --json
{"summary":"Knossos-MCP contains 5446 nodes and 31972 relationships.",
"data":{"node_kinds":[{"kind":"method","count":3814},{"kind":"class","count":415},
{"kind":"external_method","count":378},{"kind":"external_function","count":297},
{"kind":"property","count":205}, …],
"languages":[{"kind":"php","count":372},{"kind":"javascript","count":17},{"kind":"python","count":5}]}}Mogelijkheden
| Categorie | Tools (selectie) | Wat het beantwoordt |
|---|---|---|
| Oriëntatie | server_info, diagnose_runtime | Welke roots toegankelijk zijn, of de runtimes gezond zijn |
| Projecten en historie | scan_project, list_snapshots, snapshot_diff, quality_gate | De graph bouwen of verversen, wat er tussen twee scans veranderde, of een wijziging architectuurbudgetten doorbreekt |
| Componenten vinden en lezen | find_component, inspect_component, list_usages, architecture_summary | Kandidaten bij een halve naam, de rollen en relaties van een component, elke usage met bewijs |
| Structuur- en impactanalyse | impact_analysis, explain_flow, dependency_cycles, change_impact, test_impact, review_diff | Wat van een symbol afhangt, hoe A bij B komt, circulaire afhankelijkheden, hoe ver een wijziging uitstraalt, welke tests erdoor geraakt worden |
| Onderhoud | annotate_component, remove_project, cleanup_stale_scans, maintain_database | Een blijvende annotatie vastleggen, projecten opruimen, database-integriteit bewaken |
| Taal | Extractie | Framework-verrijking |
|---|---|---|
| PHP 8.3+ | Declaraties, overerving, aanroepen, constructie, types, injectie | Laravel, Symfony |
| TypeScript/JavaScript | Compiler-symboolresolutie, imports, aanroepen, types | Next.js, React, Vue, stores, endpoints |
| Python 3.11+ | AST uit de standaardbibliotheek, in een geïsoleerde interpreter | FastAPI, Django, Celery |
Gemengde repositories komen samen in één graph. impact_analysis en verwante tools labelen elke conclusie met een confidence (certain, probable, possible) in plaats van hem als zekerheid te presenteren.
Configuratie
Knossos-MCP leest knossos.json (of knossos.jsonc) uit de root van het gescande project. Dit is de configuratie van Knossos-MCP zelf:
{
"$schema": "./schemas/project-config-v1.schema.json",
"version": 1,
"ignores": ["tests/Fixtures"],
"boundaries": [
{ "name": "core", "path_prefix": "src" },
{ "name": "php-worker", "path_prefix": "workers/php" },
{ "name": "typescript-worker", "path_prefix": "workers/typescript" },
{ "name": "python-worker", "path_prefix": "workers/python" },
{ "name": "tooling", "path_prefix": "tools" },
{ "name": "tests", "path_prefix": "tests" }
],
"policies": [
{
"id": "workers-are-out-of-process",
"from_boundary": "php-worker",
"deny_targets": ["core"]
}
],
"quality_budgets": {
"new_cycles": 0,
"boundary_violations": 0,
"error_diagnostics": 0,
"warning_diagnostics": 0,
"hub_degree_growth": 25,
"unreferenced_candidates": 110
}
}boundaries verdeelt de codebase in benoemde grenzen; policies verbiedt specifieke relaties tussen die grenzen, en check_architecture toetst elke wijziging eraan. quality_budgets zet harde drempels op regressies zoals nieuwe circulaire afhankelijkheden of grensoverschrijdingen, gecontroleerd door quality_gate.