Skip to content

MCP Server Classes

The twelve classes that own the 44 tools. Each is a [McpServerToolType] class in Aetherium_Refactor/McpServers/, registered in Program.cs with a .WithTools<T>() call. "MCP server class" means the class — all are hosted in-process; none is a separate running process. See §07 — MCP Architecture for the role they play in dispatch.

No constructor injection

These classes are stateless tool containers — they have no constructor dependencies. Every tool method takes IServiceProvider serviceProvider as its first parameter and resolves what it needs at call time via GetRequiredService<T>() / GetService<T>(). The "Dependencies" column lists the services each class actually resolves, not constructor parameters. Routing and filtering happen in McpToolRouter (in Services/, not a tool class).

The twelve classes

Class Tools (count) Dependencies (resolved per call)
WorkspaceTools read_file, write_file, edit_file, list_files, revert_file, search_files (6) IWorkspaceExecutor, IMcpSessionProvider, FileSnapshotService
ShellTools run_shell, read_logs (2) IMcpSessionProvider, IWorkspaceExecutor, IContainerExecutor, DockerService, ToolApprovalService, IDbContextFactory<AetheriumDbContext> (command log), ILoggerFactory
ResearchTools web_search, web_fetch, http_request, download_pdf, http_health_check, capture_reference (6) IHttpClientFactory, ISettingsService (SearXNG_Url), IMcpSessionProvider, ToolApprovalService, IWorkspaceExecutor (PDF save); PdfPig for extraction. partial class.
KnowledgeTools search_knowledge, write_knowledge (2) IRagService (cast to ChromaDbRagService for domain collections), IMcpSessionProvider
QualityTools analyze_code, code_review, run_tests, validate_web_app, capture_api_schema, record_style, check_finishing, play_test (8) IWorkspaceExecutor, IContainerExecutor, IMcpSessionProvider, ModelSchedulerService (LLM review)
PlanningTools create_plan, read_plan, update_plan, todo (4) PlanningService (resolved in a scope), IMcpSessionProvider, TodoStore (todo only)
CommunicationTools notify_user, report_progress (2) IHubContext<NotificationHub>, IHubContext<ProjectRunHub>, IMcpSessionProvider
OrchestrationTools delegate, reply, spawn_subagents (3) None — all three return marker JSON and call no service
TeamMessagingTools send_message_to (1) IMcpSessionProvider, PersistentAgentService, OrchestratorService (optional, for target metadata)
ComfyUITools comfyui_generate, comfyui_status, finish_image, comfyui_video (4) ComfyUIService; ffmpeg on the host for comfyui_video
AudioTools tts_render, tts_status (2) IHttpClientFactory (the voice service), IOptions<TtsOptions>, IMcpSessionProvider, WorkspaceImageManifest; ffmpeg on the host
DeviceTools frame_status, frame_install, frame_run, frame_grab (4) IOptions<SteamFrameOptions> (Aetherium:Devices:SteamFrame), the session's workspace; the device/steam-frame scripts, adb and ssh on the host. One call at a time holds the headset

Twelve classes, 44 tools, thirteen server groups. The team group (the tenth, for send_message_to) was added in a later iteration; some in-code comments still say "9 server groups" — the live count from the router's group map is 13 (video, for comfyui_video, is the twelfth; device, for the Steam Frame tools, the thirteenth).

Group and tier maps

Both maps are static in McpToolRouter — fixed at compile time, not configurable.

  • ToolToServerGroup maps each of the 44 tools to one of workspace, shell, research, knowledge, quality, planning, comms, orchestration, team, comfyui, video, audio, device. The full mapping is the Group column in the tool catalog.
  • ToolSecurityLevels lists only the non-Standard tools (8 Elevated, 4 Restricted); the lookup defaults everything else to Standard. See tiers.

A boot-time ToolCatalogValidator (a hosted service) asserts the router's registered tool set matches what the prompt-enhancer documents, failing fast on drift when Aetherium:ToolCatalog:FailOnDrift is true (Configuration).

Where to go next