mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-11 13:17:07 +00:00
A role with a Model Context Protocol surface declares one mcp: entry in meta/services.yml. The vocabulary module owns every allowed value, a hard lint validates each declaration, and roles_with_service gains an opt-in direction= kwarg so a client role resolves its servers at deploy time. The lookup stays backwards compatible: without direction= the entries keep their original four keys, so the existing dashboard, prometheus and matomo callers are untouched. With it, each entry additionally carries transport, auth, auth_subject and an endpoint dict whose port is resolved from the referenced service's ports.local or ports.internal. The lint rejects Jinja on MCP-specific fields (only enabled/shared may carry it) because the static resolver cannot evaluate a templated block, and it verifies that endpoint.service_key names a service in the same file whose ports.* actually contain endpoint.port_key. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Design 🎨
This directory contains contributor guidance for code design and implementation. Its scope is architecture, service wiring, coding principles, exceptions, and the boundaries that shape maintainable changes.