|
69 | 69 | // Infrastructure (DbContext, Repositories, UoW) |
70 | 70 | mcpHttpBuilder.Services.AddInfrastructure(mcpHttpBuilder.Configuration); |
71 | 71 |
|
72 | | - // Register Application services needed by MCP resources and tools. |
73 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.AuthorizationService>(); |
74 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.IAuthorizationService>( |
75 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.AuthorizationService>()); |
76 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.BoardService>(sp => |
77 | | - new Taskdeck.Application.Services.BoardService( |
78 | | - sp.GetRequiredService<IUnitOfWork>(), |
79 | | - sp.GetRequiredService<Taskdeck.Application.Services.IAuthorizationService>())); |
80 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.ColumnService>(); |
81 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.CardService>(); |
82 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.LabelService>(); |
83 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.AutomationProposalService>(); |
84 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.IAutomationProposalService>( |
85 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.AutomationProposalService>()); |
86 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.CaptureService>(); |
87 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.ICaptureService>( |
88 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.CaptureService>()); |
89 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.NotificationService>(); |
90 | | - mcpHttpBuilder.Services.AddScoped<Taskdeck.Application.Services.INotificationService>( |
91 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.NotificationService>()); |
| 72 | + // Application services needed by MCP resources and tools (shared with stdio mode). |
| 73 | + mcpHttpBuilder.Services.AddMcpApplicationServices(); |
92 | 74 |
|
93 | 75 | // HTTP identity: maps API key to user via HttpUserContextProvider. |
94 | 76 | mcpHttpBuilder.Services.AddHttpContextAccessor(); |
|
119 | 101 | // MCP server: HTTP transport + all resources and tools. |
120 | 102 | mcpHttpBuilder.Services.AddMcpServer() |
121 | 103 | .WithHttpTransport() |
122 | | - .WithResources<BoardResources>() |
123 | | - .WithResources<CaptureResources>() |
124 | | - .WithResources<ProposalResources>() |
125 | | - .WithTools<ReadTools>() |
126 | | - .WithTools<WriteTools>() |
127 | | - .WithTools<ProposalTools>(); |
| 104 | + .AddMcpResourcesAndTools(); |
128 | 105 |
|
129 | 106 | var mcpHttpApp = mcpHttpBuilder.Build(); |
130 | 107 |
|
|
189 | 166 | // Infrastructure (DbContext, Repositories, UoW) |
190 | 167 | services.AddInfrastructure(ctx.Configuration); |
191 | 168 |
|
192 | | - // Register Application services needed by MCP resources and tools. |
193 | | - // We deliberately skip web-only services (SignalR notifiers, workers, |
194 | | - // LLM providers, rate limiting, etc.) to keep the MCP host minimal. |
195 | | - services.AddScoped<Taskdeck.Application.Services.AuthorizationService>(); |
196 | | - services.AddScoped<Taskdeck.Application.Services.IAuthorizationService>( |
197 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.AuthorizationService>()); |
198 | | - services.AddScoped<Taskdeck.Application.Services.BoardService>(sp => |
199 | | - new Taskdeck.Application.Services.BoardService( |
200 | | - sp.GetRequiredService<IUnitOfWork>(), |
201 | | - sp.GetRequiredService<Taskdeck.Application.Services.IAuthorizationService>())); |
202 | | - services.AddScoped<Taskdeck.Application.Services.ColumnService>(); |
203 | | - services.AddScoped<Taskdeck.Application.Services.CardService>(); |
204 | | - services.AddScoped<Taskdeck.Application.Services.LabelService>(); |
205 | | - services.AddScoped<Taskdeck.Application.Services.AutomationProposalService>(); |
206 | | - services.AddScoped<Taskdeck.Application.Services.IAutomationProposalService>( |
207 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.AutomationProposalService>()); |
208 | | - services.AddScoped<Taskdeck.Application.Services.CaptureService>(); |
209 | | - services.AddScoped<Taskdeck.Application.Services.ICaptureService>( |
210 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.CaptureService>()); |
211 | | - services.AddScoped<Taskdeck.Application.Services.NotificationService>(); |
212 | | - services.AddScoped<Taskdeck.Application.Services.INotificationService>( |
213 | | - sp => sp.GetRequiredService<Taskdeck.Application.Services.NotificationService>()); |
| 169 | + // Application services needed by MCP resources and tools (shared with HTTP mode). |
| 170 | + services.AddMcpApplicationServices(); |
214 | 171 |
|
215 | 172 | // Stdio identity: maps the OS process owner to the local default user. |
216 | 173 | services.AddScoped<IUserContextProvider, StdioUserContextProvider>(); |
|
221 | 178 | // MCP server: stdio transport + all resources and tools. |
222 | 179 | services.AddMcpServer() |
223 | 180 | .WithStdioServerTransport() |
224 | | - .WithResources<BoardResources>() |
225 | | - .WithResources<CaptureResources>() |
226 | | - .WithResources<ProposalResources>() |
227 | | - .WithTools<ReadTools>() |
228 | | - .WithTools<WriteTools>() |
229 | | - .WithTools<ProposalTools>(); |
| 181 | + .AddMcpResourcesAndTools(); |
230 | 182 | }) |
231 | 183 | .Build(); |
232 | 184 |
|
|
357 | 309 | builder.Services.AddMcpTelemetry(); |
358 | 310 | builder.Services.AddMcpServer() |
359 | 311 | .WithHttpTransport() |
360 | | - .WithResources<BoardResources>() |
361 | | - .WithResources<CaptureResources>() |
362 | | - .WithResources<ProposalResources>() |
363 | | - .WithTools<ReadTools>() |
364 | | - .WithTools<WriteTools>() |
365 | | - .WithTools<ProposalTools>(); |
| 312 | + .AddMcpResourcesAndTools(); |
366 | 313 |
|
367 | 314 | // Add JWT Authentication (with optional GitHub OAuth and OIDC providers, circuit-breaker-protected backchannel) |
368 | 315 | // CircuitBreakerStateTracker is already registered as a singleton by AddLlmProviders above. |
|
0 commit comments