mvp24hours-dotnet-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mvp24hours-dotnet-mcp might be problematic. Click here for more details.
- package/CONTRIBUTING.md +217 -0
- package/LICENSE +21 -0
- package/README.md +221 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1454 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/ai-implementation.d.ts +28 -0
- package/dist/tools/ai-implementation.d.ts.map +1 -0
- package/dist/tools/ai-implementation.js +1251 -0
- package/dist/tools/ai-implementation.js.map +1 -0
- package/dist/tools/architecture-advisor.d.ts +42 -0
- package/dist/tools/architecture-advisor.d.ts.map +1 -0
- package/dist/tools/architecture-advisor.js +442 -0
- package/dist/tools/architecture-advisor.js.map +1 -0
- package/dist/tools/containerization-patterns.d.ts +18 -0
- package/dist/tools/containerization-patterns.d.ts.map +1 -0
- package/dist/tools/containerization-patterns.js +819 -0
- package/dist/tools/containerization-patterns.js.map +1 -0
- package/dist/tools/core-patterns.d.ts +18 -0
- package/dist/tools/core-patterns.d.ts.map +1 -0
- package/dist/tools/core-patterns.js +1039 -0
- package/dist/tools/core-patterns.js.map +1 -0
- package/dist/tools/cqrs-guide.d.ts +18 -0
- package/dist/tools/cqrs-guide.d.ts.map +1 -0
- package/dist/tools/cqrs-guide.js +2777 -0
- package/dist/tools/cqrs-guide.js.map +1 -0
- package/dist/tools/database-advisor.d.ts +39 -0
- package/dist/tools/database-advisor.d.ts.map +1 -0
- package/dist/tools/database-advisor.js +598 -0
- package/dist/tools/database-advisor.js.map +1 -0
- package/dist/tools/get-started.d.ts +20 -0
- package/dist/tools/get-started.d.ts.map +1 -0
- package/dist/tools/get-started.js +254 -0
- package/dist/tools/get-started.js.map +1 -0
- package/dist/tools/get-template.d.ts +17 -0
- package/dist/tools/get-template.d.ts.map +1 -0
- package/dist/tools/get-template.js +605 -0
- package/dist/tools/get-template.js.map +1 -0
- package/dist/tools/infrastructure-guide.d.ts +18 -0
- package/dist/tools/infrastructure-guide.d.ts.map +1 -0
- package/dist/tools/infrastructure-guide.js +1078 -0
- package/dist/tools/infrastructure-guide.js.map +1 -0
- package/dist/tools/messaging-patterns.d.ts +18 -0
- package/dist/tools/messaging-patterns.d.ts.map +1 -0
- package/dist/tools/messaging-patterns.js +718 -0
- package/dist/tools/messaging-patterns.js.map +1 -0
- package/dist/tools/modernization-guide.d.ts +23 -0
- package/dist/tools/modernization-guide.d.ts.map +1 -0
- package/dist/tools/modernization-guide.js +1072 -0
- package/dist/tools/modernization-guide.js.map +1 -0
- package/dist/tools/observability-setup.d.ts +23 -0
- package/dist/tools/observability-setup.d.ts.map +1 -0
- package/dist/tools/observability-setup.js +592 -0
- package/dist/tools/observability-setup.js.map +1 -0
- package/dist/tools/reference-guide.d.ts +18 -0
- package/dist/tools/reference-guide.d.ts.map +1 -0
- package/dist/tools/reference-guide.js +890 -0
- package/dist/tools/reference-guide.js.map +1 -0
- package/dist/tools/security-patterns.d.ts +18 -0
- package/dist/tools/security-patterns.d.ts.map +1 -0
- package/dist/tools/security-patterns.js +898 -0
- package/dist/tools/security-patterns.js.map +1 -0
- package/dist/tools/testing-patterns.d.ts +18 -0
- package/dist/tools/testing-patterns.d.ts.map +1 -0
- package/dist/tools/testing-patterns.js +1151 -0
- package/dist/tools/testing-patterns.js.map +1 -0
- package/dist/utils/doc-loader.d.ts +28 -0
- package/dist/utils/doc-loader.d.ts.map +1 -0
- package/dist/utils/doc-loader.js +88 -0
- package/dist/utils/doc-loader.js.map +1 -0
- package/docs/ai-context/ai-decision-matrix.md +216 -0
- package/docs/ai-context/ai-implementation-index.md +333 -0
- package/docs/ai-context/api-versioning-patterns.md +597 -0
- package/docs/ai-context/architecture-templates.md +794 -0
- package/docs/ai-context/containerization-patterns.md +633 -0
- package/docs/ai-context/database-patterns.md +575 -0
- package/docs/ai-context/decision-matrix.md +329 -0
- package/docs/ai-context/error-handling-patterns.md +727 -0
- package/docs/ai-context/home.md +298 -0
- package/docs/ai-context/messaging-patterns.md +547 -0
- package/docs/ai-context/modernization-patterns.md +756 -0
- package/docs/ai-context/observability-patterns.md +594 -0
- package/docs/ai-context/project-structure.md +264 -0
- package/docs/ai-context/security-patterns.md +662 -0
- package/docs/ai-context/structure-complex-nlayers.md +982 -0
- package/docs/ai-context/structure-minimal-api.md +668 -0
- package/docs/ai-context/structure-simple-nlayers.md +754 -0
- package/docs/ai-context/template-agent-framework-basic.md +1159 -0
- package/docs/ai-context/template-agent-framework-middleware.md +519 -0
- package/docs/ai-context/template-agent-framework-multi-agent.md +1187 -0
- package/docs/ai-context/template-agent-framework-workflows.md +1234 -0
- package/docs/ai-context/template-clean-architecture.md +858 -0
- package/docs/ai-context/template-cqrs.md +938 -0
- package/docs/ai-context/template-ddd.md +1053 -0
- package/docs/ai-context/template-event-driven.md +884 -0
- package/docs/ai-context/template-hexagonal.md +922 -0
- package/docs/ai-context/template-microservices.md +788 -0
- package/docs/ai-context/template-sk-chat-completion.md +816 -0
- package/docs/ai-context/template-sk-planners.md +859 -0
- package/docs/ai-context/template-sk-plugins.md +793 -0
- package/docs/ai-context/template-sk-rag-basic.md +890 -0
- package/docs/ai-context/template-skg-chain-of-thought.md +981 -0
- package/docs/ai-context/template-skg-chatbot-memory.md +785 -0
- package/docs/ai-context/template-skg-checkpointing.md +1314 -0
- package/docs/ai-context/template-skg-document-pipeline.md +1110 -0
- package/docs/ai-context/template-skg-graph-executor.md +777 -0
- package/docs/ai-context/template-skg-human-in-loop.md +1179 -0
- package/docs/ai-context/template-skg-multi-agent.md +901 -0
- package/docs/ai-context/template-skg-observability.md +1020 -0
- package/docs/ai-context/template-skg-react-agent.md +742 -0
- package/docs/ai-context/template-skg-streaming.md +930 -0
- package/docs/ai-context/testing-patterns.md +715 -0
- package/docs/application-services.md +883 -0
- package/docs/broker-advanced.md +738 -0
- package/docs/broker.md +188 -0
- package/docs/caching-advanced.md +666 -0
- package/docs/core/entity-interfaces.md +412 -0
- package/docs/core/exceptions.md +439 -0
- package/docs/core/functional-patterns.md +382 -0
- package/docs/core/guard-clauses.md +385 -0
- package/docs/core/home.md +109 -0
- package/docs/core/infrastructure-abstractions.md +386 -0
- package/docs/core/smart-enums.md +327 -0
- package/docs/core/strongly-typed-ids.md +352 -0
- package/docs/core/value-objects.md +356 -0
- package/docs/cqrs/api-reference.md +433 -0
- package/docs/cqrs/behaviors.md +215 -0
- package/docs/cqrs/best-practices.md +300 -0
- package/docs/cqrs/commands.md +267 -0
- package/docs/cqrs/concepts-comparison.md +208 -0
- package/docs/cqrs/domain-events.md +244 -0
- package/docs/cqrs/event-sourcing/aggregate.md +303 -0
- package/docs/cqrs/event-sourcing/event-store.md +292 -0
- package/docs/cqrs/event-sourcing/home.md +182 -0
- package/docs/cqrs/event-sourcing/projections.md +312 -0
- package/docs/cqrs/event-sourcing/snapshots.md +316 -0
- package/docs/cqrs/extensibility.md +473 -0
- package/docs/cqrs/getting-started.md +163 -0
- package/docs/cqrs/home.md +81 -0
- package/docs/cqrs/integration-caching.md +238 -0
- package/docs/cqrs/integration-events.md +257 -0
- package/docs/cqrs/integration-rabbitmq.md +304 -0
- package/docs/cqrs/integration-repository.md +235 -0
- package/docs/cqrs/integration-unitofwork.md +224 -0
- package/docs/cqrs/mediator.md +232 -0
- package/docs/cqrs/migration-mediatr.md +304 -0
- package/docs/cqrs/multi-tenancy.md +473 -0
- package/docs/cqrs/notifications.md +234 -0
- package/docs/cqrs/observability/audit.md +300 -0
- package/docs/cqrs/observability/telemetry.md +290 -0
- package/docs/cqrs/observability/tracing.md +284 -0
- package/docs/cqrs/queries.md +263 -0
- package/docs/cqrs/resilience/circuit-breaker.md +341 -0
- package/docs/cqrs/resilience/idempotency.md +200 -0
- package/docs/cqrs/resilience/inbox-outbox.md +450 -0
- package/docs/cqrs/resilience/retry.md +238 -0
- package/docs/cqrs/saga/compensation.md +311 -0
- package/docs/cqrs/saga/home.md +199 -0
- package/docs/cqrs/saga/implementation.md +422 -0
- package/docs/cqrs/scheduled-commands.md +537 -0
- package/docs/cqrs/specifications.md +580 -0
- package/docs/cqrs/validation-behavior.md +287 -0
- package/docs/cronjob-advanced.md +921 -0
- package/docs/cronjob-observability.md +369 -0
- package/docs/cronjob-resilience.md +378 -0
- package/docs/cronjob.md +343 -0
- package/docs/database/efcore-advanced.md +765 -0
- package/docs/database/mongodb-advanced.md +716 -0
- package/docs/database/nosql.md +226 -0
- package/docs/database/relational.md +145 -0
- package/docs/database/use-context.md +97 -0
- package/docs/database/use-entity.md +72 -0
- package/docs/database/use-repository.md +120 -0
- package/docs/database/use-service.md +58 -0
- package/docs/database/use-unitofwork.md +34 -0
- package/docs/documentation.md +186 -0
- package/docs/getting-started.md +163 -0
- package/docs/home.md +76 -0
- package/docs/index.md +175 -0
- package/docs/logging.md +301 -0
- package/docs/mapping.md +163 -0
- package/docs/migration.md +411 -0
- package/docs/modernization/aspire.md +393 -0
- package/docs/modernization/channels.md +440 -0
- package/docs/modernization/dotnet9-features.md +281 -0
- package/docs/modernization/generic-resilience.md +373 -0
- package/docs/modernization/http-resilience.md +250 -0
- package/docs/modernization/hybrid-cache.md +431 -0
- package/docs/modernization/keyed-services.md +383 -0
- package/docs/modernization/migration-guide.md +657 -0
- package/docs/modernization/minimal-apis.md +407 -0
- package/docs/modernization/native-openapi.md +426 -0
- package/docs/modernization/options-configuration.md +404 -0
- package/docs/modernization/output-caching.md +454 -0
- package/docs/modernization/periodic-timer.md +315 -0
- package/docs/modernization/problem-details.md +432 -0
- package/docs/modernization/rate-limiting.md +385 -0
- package/docs/modernization/source-generators.md +219 -0
- package/docs/modernization/time-provider.md +303 -0
- package/docs/observability/exporters.md +556 -0
- package/docs/observability/home.md +186 -0
- package/docs/observability/logging.md +589 -0
- package/docs/observability/metrics.md +504 -0
- package/docs/observability/migration.md +337 -0
- package/docs/observability/tracing.md +453 -0
- package/docs/pipeline.md +383 -0
- package/docs/release.md +253 -0
- package/docs/specification.md +130 -0
- package/docs/telemetry.md +189 -0
- package/docs/validation.md +205 -0
- package/docs/webapi-advanced.md +1188 -0
- package/docs/webapi.md +401 -0
- package/package.json +68 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,1454 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Mvp24Hours .NET MCP Server
|
|
4
|
+
*
|
|
5
|
+
* This MCP server provides intelligent documentation routing for AI agents
|
|
6
|
+
* working with the Mvp24Hours .NET framework. Instead of loading all documentation
|
|
7
|
+
* at once, it provides specialized tools that return only relevant content.
|
|
8
|
+
*/
|
|
9
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
10
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListResourceTemplatesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
12
|
+
import { architectureAdvisor, architectureAdvisorSchema } from "./tools/architecture-advisor.js";
|
|
13
|
+
import { databaseAdvisor, databaseAdvisorSchema } from "./tools/database-advisor.js";
|
|
14
|
+
import { cqrsGuide, cqrsGuideSchema } from "./tools/cqrs-guide.js";
|
|
15
|
+
import { aiImplementation, aiImplementationSchema } from "./tools/ai-implementation.js";
|
|
16
|
+
import { modernizationGuide, modernizationGuideSchema } from "./tools/modernization-guide.js";
|
|
17
|
+
import { observabilitySetup, observabilitySetupSchema } from "./tools/observability-setup.js";
|
|
18
|
+
import { messagingPatterns, messagingPatternsSchema } from "./tools/messaging-patterns.js";
|
|
19
|
+
import { getTemplate, getTemplateSchema } from "./tools/get-template.js";
|
|
20
|
+
import { getStarted, getStartedSchema } from "./tools/get-started.js";
|
|
21
|
+
import { corePatterns, corePatternsSchema } from "./tools/core-patterns.js";
|
|
22
|
+
import { infrastructureGuide, infrastructureGuideSchema } from "./tools/infrastructure-guide.js";
|
|
23
|
+
import { referenceGuide, referenceGuideSchema } from "./tools/reference-guide.js";
|
|
24
|
+
import { testingPatterns, testingPatternsSchema } from "./tools/testing-patterns.js";
|
|
25
|
+
import { securityPatterns, securityPatternsSchema } from "./tools/security-patterns.js";
|
|
26
|
+
import { containerizationPatterns, containerizationPatternsSchema } from "./tools/containerization-patterns.js";
|
|
27
|
+
import { loadDoc, docExists } from "./utils/doc-loader.js";
|
|
28
|
+
const server = new Server({
|
|
29
|
+
name: "mvp24hours-dotnet-mcp",
|
|
30
|
+
version: "1.0.0",
|
|
31
|
+
}, {
|
|
32
|
+
capabilities: {
|
|
33
|
+
tools: {},
|
|
34
|
+
resources: {},
|
|
35
|
+
prompts: {},
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
// List available tools
|
|
39
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
40
|
+
return {
|
|
41
|
+
tools: [
|
|
42
|
+
{
|
|
43
|
+
name: "mvp24h_get_started",
|
|
44
|
+
description: `Get an overview of Mvp24Hours framework and determine the best starting point.
|
|
45
|
+
Use this tool FIRST when the user wants to create a new .NET project or asks about Mvp24Hours.
|
|
46
|
+
Returns: Framework overview, quick decision tree, and recommended next steps.`,
|
|
47
|
+
inputSchema: getStartedSchema,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "mvp24h_architecture_advisor",
|
|
51
|
+
description: `Recommends the best architecture template based on project requirements.
|
|
52
|
+
Use when the user needs to choose between: Minimal API, Simple N-Layers, Complex N-Layers,
|
|
53
|
+
CQRS, Event-Driven, Hexagonal, Clean Architecture, DDD, or Microservices.
|
|
54
|
+
Returns: Recommended template with decision rationale and project structure.`,
|
|
55
|
+
inputSchema: architectureAdvisorSchema,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "mvp24h_database_advisor",
|
|
59
|
+
description: `Recommends database technology and patterns based on data requirements.
|
|
60
|
+
Use when choosing between: SQL Server, PostgreSQL, MySQL, MongoDB, Redis.
|
|
61
|
+
Also covers: EF Core, Dapper, Repository pattern, Unit of Work, hybrid approaches.
|
|
62
|
+
Returns: Database selection, NuGet packages, configuration, and implementation patterns.`,
|
|
63
|
+
inputSchema: databaseAdvisorSchema,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "mvp24h_cqrs_guide",
|
|
67
|
+
description: `Provides CQRS/Mediator pattern implementation guidance.
|
|
68
|
+
Topics: Commands, Queries, Notifications, Domain Events, Integration Events,
|
|
69
|
+
Pipeline Behaviors, Validation, Saga Pattern, Event Sourcing, Resilience patterns.
|
|
70
|
+
Returns: Specific documentation for the requested CQRS topic.`,
|
|
71
|
+
inputSchema: cqrsGuideSchema,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "mvp24h_ai_implementation",
|
|
75
|
+
description: `Recommends AI implementation approach for .NET applications.
|
|
76
|
+
Covers: Semantic Kernel (Pure), Semantic Kernel Graph, Microsoft Agent Framework.
|
|
77
|
+
Use cases: Chatbots, RAG, Multi-agent systems, Workflows, Human-in-the-loop.
|
|
78
|
+
Returns: AI decision matrix, recommended approach, and implementation template.`,
|
|
79
|
+
inputSchema: aiImplementationSchema,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "mvp24h_modernization_guide",
|
|
83
|
+
description: `Provides .NET 9 modernization patterns and features.
|
|
84
|
+
Categories: Resilience (HTTP, Generic, Rate Limiting), Time (TimeProvider, PeriodicTimer),
|
|
85
|
+
Caching (HybridCache, Output Caching), DI (Keyed Services, Options),
|
|
86
|
+
APIs (ProblemDetails, Minimal APIs, OpenAPI), Performance (Source Generators), Cloud (Aspire).
|
|
87
|
+
Returns: Feature documentation with implementation examples.`,
|
|
88
|
+
inputSchema: modernizationGuideSchema,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "mvp24h_observability_setup",
|
|
92
|
+
description: `Configures observability stack for .NET applications.
|
|
93
|
+
Components: Logging (NLog, OpenTelemetry), Tracing, Metrics, Exporters.
|
|
94
|
+
Integrations: Jaeger, Zipkin, Prometheus, Application Insights.
|
|
95
|
+
Returns: Setup instructions, configuration, and best practices.`,
|
|
96
|
+
inputSchema: observabilitySetupSchema,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: "mvp24h_messaging_patterns",
|
|
100
|
+
description: `Implements async messaging and background processing patterns.
|
|
101
|
+
Patterns: RabbitMQ integration, Hosted Services, Pipeline pattern, Outbox pattern.
|
|
102
|
+
Returns: Implementation templates and configuration.`,
|
|
103
|
+
inputSchema: messagingPatternsSchema,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "mvp24h_get_template",
|
|
107
|
+
description: `Retrieves a specific architecture template by name.
|
|
108
|
+
Available templates: minimal-api, simple-nlayers, complex-nlayers, cqrs,
|
|
109
|
+
event-driven, hexagonal, clean-architecture, ddd, microservices,
|
|
110
|
+
sk-chat-completion, sk-plugins, sk-rag, skg-graph-executor, skg-react-agent,
|
|
111
|
+
skg-multi-agent, agent-framework-basic, and more.
|
|
112
|
+
Returns: Complete template code and project structure.`,
|
|
113
|
+
inputSchema: getTemplateSchema,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "mvp24h_core_patterns",
|
|
117
|
+
description: `Provides documentation for Mvp24Hours Core module patterns.
|
|
118
|
+
Topics: guard-clauses, value-objects, strongly-typed-ids, functional-patterns,
|
|
119
|
+
smart-enums, entity-interfaces, infrastructure abstractions, exceptions.
|
|
120
|
+
Returns: Core pattern documentation with code examples.`,
|
|
121
|
+
inputSchema: corePatternsSchema,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: "mvp24h_infrastructure_guide",
|
|
125
|
+
description: `Provides documentation for Pipeline, Caching, WebAPI, and CronJob patterns.
|
|
126
|
+
Topics: pipeline (Pipe and Filters), caching (Redis), webapi, webapi-advanced,
|
|
127
|
+
cronjob (background jobs), application-services (service layer).
|
|
128
|
+
Returns: Infrastructure pattern documentation with implementation examples.`,
|
|
129
|
+
inputSchema: infrastructureGuideSchema,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: "mvp24h_reference_guide",
|
|
133
|
+
description: `Provides reference documentation for supporting patterns.
|
|
134
|
+
Topics: mapping (AutoMapper), validation (FluentValidation), specification pattern,
|
|
135
|
+
documentation (Swagger/XML docs), migration (EF Core migrations).
|
|
136
|
+
Returns: Reference documentation with code examples.`,
|
|
137
|
+
inputSchema: referenceGuideSchema,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: "mvp24h_testing_patterns",
|
|
141
|
+
description: `Provides testing patterns and best practices for .NET applications.
|
|
142
|
+
Topics: unit-testing (xUnit, FluentAssertions), integration-testing (WebApplicationFactory),
|
|
143
|
+
mocking (Moq, NSubstitute), test-containers (Docker-based tests), api-testing,
|
|
144
|
+
architecture-testing (ArchUnitNET).
|
|
145
|
+
Returns: Testing documentation with code examples.`,
|
|
146
|
+
inputSchema: testingPatternsSchema,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: "mvp24h_security_patterns",
|
|
150
|
+
description: `Provides security patterns and best practices for .NET applications.
|
|
151
|
+
Topics: authentication (Identity, OAuth), authorization (roles, policies),
|
|
152
|
+
jwt (token generation, refresh), data-protection (encryption),
|
|
153
|
+
input-validation (sanitization), secrets-management (Key Vault).
|
|
154
|
+
Returns: Security documentation with implementation examples.`,
|
|
155
|
+
inputSchema: securityPatternsSchema,
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: "mvp24h_containerization_patterns",
|
|
159
|
+
description: `Provides Docker and Kubernetes patterns for .NET applications.
|
|
160
|
+
Topics: dockerfile (multi-stage builds), docker-compose (local development),
|
|
161
|
+
kubernetes (deployments, services, config), health-checks (probes),
|
|
162
|
+
configuration (ConfigMaps, secrets).
|
|
163
|
+
Returns: Containerization documentation with YAML/Dockerfile examples.`,
|
|
164
|
+
inputSchema: containerizationPatternsSchema,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
// Handle tool calls
|
|
170
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
171
|
+
const { name, arguments: args } = request.params;
|
|
172
|
+
try {
|
|
173
|
+
switch (name) {
|
|
174
|
+
case "mvp24h_get_started":
|
|
175
|
+
return { content: [{ type: "text", text: await getStarted(args) }] };
|
|
176
|
+
case "mvp24h_architecture_advisor":
|
|
177
|
+
return { content: [{ type: "text", text: await architectureAdvisor(args) }] };
|
|
178
|
+
case "mvp24h_database_advisor":
|
|
179
|
+
return { content: [{ type: "text", text: await databaseAdvisor(args) }] };
|
|
180
|
+
case "mvp24h_cqrs_guide":
|
|
181
|
+
return { content: [{ type: "text", text: await cqrsGuide(args) }] };
|
|
182
|
+
case "mvp24h_ai_implementation":
|
|
183
|
+
return { content: [{ type: "text", text: await aiImplementation(args) }] };
|
|
184
|
+
case "mvp24h_modernization_guide":
|
|
185
|
+
return { content: [{ type: "text", text: await modernizationGuide(args) }] };
|
|
186
|
+
case "mvp24h_observability_setup":
|
|
187
|
+
return { content: [{ type: "text", text: await observabilitySetup(args) }] };
|
|
188
|
+
case "mvp24h_messaging_patterns":
|
|
189
|
+
return { content: [{ type: "text", text: await messagingPatterns(args) }] };
|
|
190
|
+
case "mvp24h_get_template":
|
|
191
|
+
return { content: [{ type: "text", text: await getTemplate(args) }] };
|
|
192
|
+
case "mvp24h_core_patterns":
|
|
193
|
+
return { content: [{ type: "text", text: await corePatterns(args) }] };
|
|
194
|
+
case "mvp24h_infrastructure_guide":
|
|
195
|
+
return { content: [{ type: "text", text: await infrastructureGuide(args) }] };
|
|
196
|
+
case "mvp24h_reference_guide":
|
|
197
|
+
return { content: [{ type: "text", text: await referenceGuide(args) }] };
|
|
198
|
+
case "mvp24h_testing_patterns":
|
|
199
|
+
return { content: [{ type: "text", text: await testingPatterns(args) }] };
|
|
200
|
+
case "mvp24h_security_patterns":
|
|
201
|
+
return { content: [{ type: "text", text: await securityPatterns(args) }] };
|
|
202
|
+
case "mvp24h_containerization_patterns":
|
|
203
|
+
return { content: [{ type: "text", text: await containerizationPatterns(args) }] };
|
|
204
|
+
default:
|
|
205
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
210
|
+
return {
|
|
211
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
212
|
+
isError: true,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
// List available resources (documentation files)
|
|
217
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
218
|
+
return {
|
|
219
|
+
resources: [
|
|
220
|
+
// Getting Started & Overview
|
|
221
|
+
{
|
|
222
|
+
uri: "mvp24hours://docs/overview",
|
|
223
|
+
name: "Mvp24Hours Overview",
|
|
224
|
+
description: "Framework overview and getting started guide",
|
|
225
|
+
mimeType: "text/markdown",
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
uri: "mvp24hours://docs/getting-started",
|
|
229
|
+
name: "Getting Started",
|
|
230
|
+
description: "Quick start guide for Mvp24Hours framework",
|
|
231
|
+
mimeType: "text/markdown",
|
|
232
|
+
},
|
|
233
|
+
// Decision Matrices
|
|
234
|
+
{
|
|
235
|
+
uri: "mvp24hours://docs/decision-matrix",
|
|
236
|
+
name: "Decision Matrix",
|
|
237
|
+
description: "Architecture and technology selection guide",
|
|
238
|
+
mimeType: "text/markdown",
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
uri: "mvp24hours://docs/ai-decision-matrix",
|
|
242
|
+
name: "AI Decision Matrix",
|
|
243
|
+
description: "AI implementation approach selection guide",
|
|
244
|
+
mimeType: "text/markdown",
|
|
245
|
+
},
|
|
246
|
+
// Architecture Templates (matches template: mvp24hours://docs/template/{templateName})
|
|
247
|
+
{
|
|
248
|
+
uri: "mvp24hours://docs/architecture-templates",
|
|
249
|
+
name: "Architecture Templates",
|
|
250
|
+
description: "Overview of all architecture templates available",
|
|
251
|
+
mimeType: "text/markdown",
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
uri: "mvp24hours://docs/template/minimal-api",
|
|
255
|
+
name: "Template: Minimal API",
|
|
256
|
+
description: "Minimal API project structure and implementation",
|
|
257
|
+
mimeType: "text/markdown",
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
uri: "mvp24hours://docs/template/simple-nlayers",
|
|
261
|
+
name: "Template: Simple N-Layers",
|
|
262
|
+
description: "Simple N-Layers architecture template",
|
|
263
|
+
mimeType: "text/markdown",
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
uri: "mvp24hours://docs/template/complex-nlayers",
|
|
267
|
+
name: "Template: Complex N-Layers",
|
|
268
|
+
description: "Complex N-Layers architecture template",
|
|
269
|
+
mimeType: "text/markdown",
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
uri: "mvp24hours://docs/template/cqrs",
|
|
273
|
+
name: "Template: CQRS",
|
|
274
|
+
description: "CQRS architecture template with Mediator pattern",
|
|
275
|
+
mimeType: "text/markdown",
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
uri: "mvp24hours://docs/template/event-driven",
|
|
279
|
+
name: "Template: Event-Driven",
|
|
280
|
+
description: "Event-driven architecture template",
|
|
281
|
+
mimeType: "text/markdown",
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
uri: "mvp24hours://docs/template/hexagonal",
|
|
285
|
+
name: "Template: Hexagonal",
|
|
286
|
+
description: "Hexagonal (Ports & Adapters) architecture template",
|
|
287
|
+
mimeType: "text/markdown",
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
uri: "mvp24hours://docs/template/clean-architecture",
|
|
291
|
+
name: "Template: Clean Architecture",
|
|
292
|
+
description: "Clean Architecture template with dependency inversion",
|
|
293
|
+
mimeType: "text/markdown",
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
uri: "mvp24hours://docs/template/ddd",
|
|
297
|
+
name: "Template: DDD",
|
|
298
|
+
description: "Domain-Driven Design template",
|
|
299
|
+
mimeType: "text/markdown",
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
uri: "mvp24hours://docs/template/microservices",
|
|
303
|
+
name: "Template: Microservices",
|
|
304
|
+
description: "Microservices architecture template",
|
|
305
|
+
mimeType: "text/markdown",
|
|
306
|
+
},
|
|
307
|
+
// AI Templates - Semantic Kernel (matches template: mvp24hours://docs/ai-template/{templateName})
|
|
308
|
+
{
|
|
309
|
+
uri: "mvp24hours://docs/ai-template/sk-chat-completion",
|
|
310
|
+
name: "Template: SK Chat Completion",
|
|
311
|
+
description: "Semantic Kernel chat completion template",
|
|
312
|
+
mimeType: "text/markdown",
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
uri: "mvp24hours://docs/ai-template/sk-plugins",
|
|
316
|
+
name: "Template: SK Plugins",
|
|
317
|
+
description: "Semantic Kernel plugins template",
|
|
318
|
+
mimeType: "text/markdown",
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
uri: "mvp24hours://docs/ai-template/sk-rag",
|
|
322
|
+
name: "Template: SK RAG",
|
|
323
|
+
description: "Semantic Kernel RAG template",
|
|
324
|
+
mimeType: "text/markdown",
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
uri: "mvp24hours://docs/ai-template/sk-planners",
|
|
328
|
+
name: "Template: SK Planners",
|
|
329
|
+
description: "Semantic Kernel planners template",
|
|
330
|
+
mimeType: "text/markdown",
|
|
331
|
+
},
|
|
332
|
+
// AI Templates - Semantic Kernel Graph (matches template: mvp24hours://docs/ai-template/{templateName})
|
|
333
|
+
{
|
|
334
|
+
uri: "mvp24hours://docs/ai-template/skg-graph-executor",
|
|
335
|
+
name: "Template: SKG Graph Executor",
|
|
336
|
+
description: "Semantic Kernel Graph executor template",
|
|
337
|
+
mimeType: "text/markdown",
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
uri: "mvp24hours://docs/ai-template/skg-react-agent",
|
|
341
|
+
name: "Template: SKG ReAct Agent",
|
|
342
|
+
description: "Semantic Kernel Graph ReAct agent template",
|
|
343
|
+
mimeType: "text/markdown",
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
uri: "mvp24hours://docs/ai-template/skg-multi-agent",
|
|
347
|
+
name: "Template: SKG Multi-Agent",
|
|
348
|
+
description: "Semantic Kernel Graph multi-agent template",
|
|
349
|
+
mimeType: "text/markdown",
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
uri: "mvp24hours://docs/ai-template/skg-human-in-loop",
|
|
353
|
+
name: "Template: SKG Human-in-Loop",
|
|
354
|
+
description: "Semantic Kernel Graph human-in-the-loop template",
|
|
355
|
+
mimeType: "text/markdown",
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
uri: "mvp24hours://docs/ai-template/skg-streaming",
|
|
359
|
+
name: "Template: SKG Streaming",
|
|
360
|
+
description: "Semantic Kernel Graph streaming template",
|
|
361
|
+
mimeType: "text/markdown",
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
uri: "mvp24hours://docs/ai-template/skg-checkpointing",
|
|
365
|
+
name: "Template: SKG Checkpointing",
|
|
366
|
+
description: "Semantic Kernel Graph checkpointing template",
|
|
367
|
+
mimeType: "text/markdown",
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
uri: "mvp24hours://docs/ai-template/skg-chatbot-memory",
|
|
371
|
+
name: "Template: SKG Chatbot Memory",
|
|
372
|
+
description: "Semantic Kernel Graph chatbot with memory template",
|
|
373
|
+
mimeType: "text/markdown",
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
uri: "mvp24hours://docs/ai-template/skg-observability",
|
|
377
|
+
name: "Template: SKG Observability",
|
|
378
|
+
description: "Semantic Kernel Graph observability template",
|
|
379
|
+
mimeType: "text/markdown",
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
uri: "mvp24hours://docs/ai-template/skg-chain-of-thought",
|
|
383
|
+
name: "Template: SKG Chain of Thought",
|
|
384
|
+
description: "Semantic Kernel Graph chain of thought template",
|
|
385
|
+
mimeType: "text/markdown",
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
uri: "mvp24hours://docs/ai-template/skg-document-pipeline",
|
|
389
|
+
name: "Template: SKG Document Pipeline",
|
|
390
|
+
description: "Semantic Kernel Graph document pipeline template",
|
|
391
|
+
mimeType: "text/markdown",
|
|
392
|
+
},
|
|
393
|
+
// AI Templates - Agent Framework (matches template: mvp24hours://docs/ai-template/{templateName})
|
|
394
|
+
{
|
|
395
|
+
uri: "mvp24hours://docs/ai-template/agent-framework-basic",
|
|
396
|
+
name: "Template: Agent Framework Basic",
|
|
397
|
+
description: "Microsoft Agent Framework basic template",
|
|
398
|
+
mimeType: "text/markdown",
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
uri: "mvp24hours://docs/ai-template/agent-framework-multi-agent",
|
|
402
|
+
name: "Template: Agent Framework Multi-Agent",
|
|
403
|
+
description: "Microsoft Agent Framework multi-agent template",
|
|
404
|
+
mimeType: "text/markdown",
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
uri: "mvp24hours://docs/ai-template/agent-framework-workflows",
|
|
408
|
+
name: "Template: Agent Framework Workflows",
|
|
409
|
+
description: "Microsoft Agent Framework workflows template",
|
|
410
|
+
mimeType: "text/markdown",
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
uri: "mvp24hours://docs/ai-template/agent-framework-middleware",
|
|
414
|
+
name: "Template: Agent Framework Middleware",
|
|
415
|
+
description: "Microsoft Agent Framework middleware template",
|
|
416
|
+
mimeType: "text/markdown",
|
|
417
|
+
},
|
|
418
|
+
// Core Patterns
|
|
419
|
+
{
|
|
420
|
+
uri: "mvp24hours://docs/core/overview",
|
|
421
|
+
name: "Core Module Overview",
|
|
422
|
+
description: "Mvp24Hours.Core module overview",
|
|
423
|
+
mimeType: "text/markdown",
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
uri: "mvp24hours://docs/core/guard-clauses",
|
|
427
|
+
name: "Guard Clauses",
|
|
428
|
+
description: "Guard clauses for defensive programming",
|
|
429
|
+
mimeType: "text/markdown",
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
uri: "mvp24hours://docs/core/value-objects",
|
|
433
|
+
name: "Value Objects",
|
|
434
|
+
description: "Value objects implementation patterns",
|
|
435
|
+
mimeType: "text/markdown",
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
uri: "mvp24hours://docs/core/strongly-typed-ids",
|
|
439
|
+
name: "Strongly Typed IDs",
|
|
440
|
+
description: "Strongly typed ID implementations",
|
|
441
|
+
mimeType: "text/markdown",
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
uri: "mvp24hours://docs/core/functional-patterns",
|
|
445
|
+
name: "Functional Patterns",
|
|
446
|
+
description: "Functional programming patterns (Result, Option)",
|
|
447
|
+
mimeType: "text/markdown",
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
uri: "mvp24hours://docs/core/smart-enums",
|
|
451
|
+
name: "Smart Enums",
|
|
452
|
+
description: "Smart enumeration patterns",
|
|
453
|
+
mimeType: "text/markdown",
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
uri: "mvp24hours://docs/core/entity-interfaces",
|
|
457
|
+
name: "Entity Interfaces",
|
|
458
|
+
description: "Entity interfaces and base classes",
|
|
459
|
+
mimeType: "text/markdown",
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
uri: "mvp24hours://docs/core/exceptions",
|
|
463
|
+
name: "Exception Handling",
|
|
464
|
+
description: "Exception handling patterns",
|
|
465
|
+
mimeType: "text/markdown",
|
|
466
|
+
},
|
|
467
|
+
// Database Patterns
|
|
468
|
+
{
|
|
469
|
+
uri: "mvp24hours://docs/database/relational",
|
|
470
|
+
name: "Relational Databases",
|
|
471
|
+
description: "SQL Server, PostgreSQL, MySQL patterns",
|
|
472
|
+
mimeType: "text/markdown",
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
uri: "mvp24hours://docs/database/nosql",
|
|
476
|
+
name: "NoSQL Databases",
|
|
477
|
+
description: "MongoDB, Redis patterns",
|
|
478
|
+
mimeType: "text/markdown",
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
uri: "mvp24hours://docs/database/efcore-advanced",
|
|
482
|
+
name: "EF Core Advanced",
|
|
483
|
+
description: "Advanced Entity Framework Core patterns",
|
|
484
|
+
mimeType: "text/markdown",
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
uri: "mvp24hours://docs/database/mongodb-advanced",
|
|
488
|
+
name: "MongoDB Advanced",
|
|
489
|
+
description: "Advanced MongoDB patterns",
|
|
490
|
+
mimeType: "text/markdown",
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
uri: "mvp24hours://docs/database/repository",
|
|
494
|
+
name: "Repository Pattern",
|
|
495
|
+
description: "Repository pattern implementation",
|
|
496
|
+
mimeType: "text/markdown",
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
uri: "mvp24hours://docs/database/unit-of-work",
|
|
500
|
+
name: "Unit of Work",
|
|
501
|
+
description: "Unit of Work pattern implementation",
|
|
502
|
+
mimeType: "text/markdown",
|
|
503
|
+
},
|
|
504
|
+
// CQRS Patterns
|
|
505
|
+
{
|
|
506
|
+
uri: "mvp24hours://docs/cqrs/overview",
|
|
507
|
+
name: "CQRS Overview",
|
|
508
|
+
description: "CQRS and Mediator pattern overview",
|
|
509
|
+
mimeType: "text/markdown",
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
uri: "mvp24hours://docs/cqrs/commands",
|
|
513
|
+
name: "CQRS Commands",
|
|
514
|
+
description: "Command pattern implementation",
|
|
515
|
+
mimeType: "text/markdown",
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
uri: "mvp24hours://docs/cqrs/queries",
|
|
519
|
+
name: "CQRS Queries",
|
|
520
|
+
description: "Query pattern implementation",
|
|
521
|
+
mimeType: "text/markdown",
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
uri: "mvp24hours://docs/cqrs/notifications",
|
|
525
|
+
name: "CQRS Notifications",
|
|
526
|
+
description: "Notification pattern implementation",
|
|
527
|
+
mimeType: "text/markdown",
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
uri: "mvp24hours://docs/cqrs/domain-events",
|
|
531
|
+
name: "Domain Events",
|
|
532
|
+
description: "Domain events implementation",
|
|
533
|
+
mimeType: "text/markdown",
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
uri: "mvp24hours://docs/cqrs/pipeline-behaviors",
|
|
537
|
+
name: "Pipeline Behaviors",
|
|
538
|
+
description: "MediatR pipeline behaviors",
|
|
539
|
+
mimeType: "text/markdown",
|
|
540
|
+
},
|
|
541
|
+
// Infrastructure
|
|
542
|
+
{
|
|
543
|
+
uri: "mvp24hours://docs/pipeline",
|
|
544
|
+
name: "Pipeline Pattern",
|
|
545
|
+
description: "Pipe and Filters pattern implementation",
|
|
546
|
+
mimeType: "text/markdown",
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
uri: "mvp24hours://docs/webapi",
|
|
550
|
+
name: "Web API",
|
|
551
|
+
description: "Web API patterns and configuration",
|
|
552
|
+
mimeType: "text/markdown",
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
uri: "mvp24hours://docs/webapi-advanced",
|
|
556
|
+
name: "Web API Advanced",
|
|
557
|
+
description: "Advanced Web API patterns",
|
|
558
|
+
mimeType: "text/markdown",
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
uri: "mvp24hours://docs/cronjob",
|
|
562
|
+
name: "Background Jobs",
|
|
563
|
+
description: "Background job and CronJob patterns",
|
|
564
|
+
mimeType: "text/markdown",
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
uri: "mvp24hours://docs/application-services",
|
|
568
|
+
name: "Application Services",
|
|
569
|
+
description: "Service layer patterns",
|
|
570
|
+
mimeType: "text/markdown",
|
|
571
|
+
},
|
|
572
|
+
// Messaging
|
|
573
|
+
{
|
|
574
|
+
uri: "mvp24hours://docs/broker",
|
|
575
|
+
name: "Message Broker",
|
|
576
|
+
description: "RabbitMQ integration basics",
|
|
577
|
+
mimeType: "text/markdown",
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
uri: "mvp24hours://docs/broker-advanced",
|
|
581
|
+
name: "Message Broker Advanced",
|
|
582
|
+
description: "Advanced messaging patterns",
|
|
583
|
+
mimeType: "text/markdown",
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
uri: "mvp24hours://docs/messaging-patterns",
|
|
587
|
+
name: "Messaging Patterns",
|
|
588
|
+
description: "Async messaging and event patterns",
|
|
589
|
+
mimeType: "text/markdown",
|
|
590
|
+
},
|
|
591
|
+
// Modernization (.NET 9)
|
|
592
|
+
{
|
|
593
|
+
uri: "mvp24hours://docs/modernization/overview",
|
|
594
|
+
name: "Modernization Overview",
|
|
595
|
+
description: ".NET 9 modernization patterns overview",
|
|
596
|
+
mimeType: "text/markdown",
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
uri: "mvp24hours://docs/modernization/http-resilience",
|
|
600
|
+
name: "HTTP Resilience",
|
|
601
|
+
description: "HTTP client resilience patterns",
|
|
602
|
+
mimeType: "text/markdown",
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
uri: "mvp24hours://docs/modernization/generic-resilience",
|
|
606
|
+
name: "Generic Resilience",
|
|
607
|
+
description: "Generic resilience patterns",
|
|
608
|
+
mimeType: "text/markdown",
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
uri: "mvp24hours://docs/modernization/rate-limiting",
|
|
612
|
+
name: "Rate Limiting",
|
|
613
|
+
description: "Rate limiting patterns",
|
|
614
|
+
mimeType: "text/markdown",
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
uri: "mvp24hours://docs/modernization/hybrid-cache",
|
|
618
|
+
name: "Hybrid Cache",
|
|
619
|
+
description: "HybridCache implementation",
|
|
620
|
+
mimeType: "text/markdown",
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
uri: "mvp24hours://docs/modernization/output-caching",
|
|
624
|
+
name: "Output Caching",
|
|
625
|
+
description: "Output caching patterns",
|
|
626
|
+
mimeType: "text/markdown",
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
uri: "mvp24hours://docs/modernization/keyed-services",
|
|
630
|
+
name: "Keyed Services",
|
|
631
|
+
description: "Keyed services DI pattern",
|
|
632
|
+
mimeType: "text/markdown",
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
uri: "mvp24hours://docs/modernization/time-provider",
|
|
636
|
+
name: "Time Provider",
|
|
637
|
+
description: "TimeProvider abstraction",
|
|
638
|
+
mimeType: "text/markdown",
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
uri: "mvp24hours://docs/modernization/minimal-apis",
|
|
642
|
+
name: "Minimal APIs",
|
|
643
|
+
description: "Minimal API patterns",
|
|
644
|
+
mimeType: "text/markdown",
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
uri: "mvp24hours://docs/modernization/aspire",
|
|
648
|
+
name: ".NET Aspire",
|
|
649
|
+
description: ".NET Aspire cloud patterns",
|
|
650
|
+
mimeType: "text/markdown",
|
|
651
|
+
},
|
|
652
|
+
// Observability
|
|
653
|
+
{
|
|
654
|
+
uri: "mvp24hours://docs/observability/overview",
|
|
655
|
+
name: "Observability Overview",
|
|
656
|
+
description: "Observability patterns overview",
|
|
657
|
+
mimeType: "text/markdown",
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
uri: "mvp24hours://docs/observability/logging",
|
|
661
|
+
name: "Logging",
|
|
662
|
+
description: "Logging patterns with NLog/OpenTelemetry",
|
|
663
|
+
mimeType: "text/markdown",
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
uri: "mvp24hours://docs/observability/tracing",
|
|
667
|
+
name: "Distributed Tracing",
|
|
668
|
+
description: "Distributed tracing patterns",
|
|
669
|
+
mimeType: "text/markdown",
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
uri: "mvp24hours://docs/observability/metrics",
|
|
673
|
+
name: "Metrics",
|
|
674
|
+
description: "Metrics collection patterns",
|
|
675
|
+
mimeType: "text/markdown",
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
uri: "mvp24hours://docs/observability/exporters",
|
|
679
|
+
name: "Telemetry Exporters",
|
|
680
|
+
description: "Jaeger, Zipkin, Prometheus exporters",
|
|
681
|
+
mimeType: "text/markdown",
|
|
682
|
+
},
|
|
683
|
+
// Reference
|
|
684
|
+
{
|
|
685
|
+
uri: "mvp24hours://docs/mapping",
|
|
686
|
+
name: "Object Mapping",
|
|
687
|
+
description: "AutoMapper patterns",
|
|
688
|
+
mimeType: "text/markdown",
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
uri: "mvp24hours://docs/validation",
|
|
692
|
+
name: "Validation",
|
|
693
|
+
description: "FluentValidation patterns",
|
|
694
|
+
mimeType: "text/markdown",
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
uri: "mvp24hours://docs/specification",
|
|
698
|
+
name: "Specification Pattern",
|
|
699
|
+
description: "Specification pattern implementation",
|
|
700
|
+
mimeType: "text/markdown",
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
uri: "mvp24hours://docs/documentation",
|
|
704
|
+
name: "API Documentation",
|
|
705
|
+
description: "Swagger/OpenAPI documentation",
|
|
706
|
+
mimeType: "text/markdown",
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
uri: "mvp24hours://docs/migration",
|
|
710
|
+
name: "EF Core Migrations",
|
|
711
|
+
description: "Database migration patterns",
|
|
712
|
+
mimeType: "text/markdown",
|
|
713
|
+
},
|
|
714
|
+
// Testing
|
|
715
|
+
{
|
|
716
|
+
uri: "mvp24hours://docs/testing/overview",
|
|
717
|
+
name: "Testing Overview",
|
|
718
|
+
description: "Testing patterns overview",
|
|
719
|
+
mimeType: "text/markdown",
|
|
720
|
+
},
|
|
721
|
+
{
|
|
722
|
+
uri: "mvp24hours://docs/testing/unit-testing",
|
|
723
|
+
name: "Unit Testing",
|
|
724
|
+
description: "xUnit and FluentAssertions patterns",
|
|
725
|
+
mimeType: "text/markdown",
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
uri: "mvp24hours://docs/testing/integration-testing",
|
|
729
|
+
name: "Integration Testing",
|
|
730
|
+
description: "WebApplicationFactory patterns",
|
|
731
|
+
mimeType: "text/markdown",
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
uri: "mvp24hours://docs/testing/mocking",
|
|
735
|
+
name: "Mocking",
|
|
736
|
+
description: "Moq and NSubstitute patterns",
|
|
737
|
+
mimeType: "text/markdown",
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
uri: "mvp24hours://docs/testing/test-containers",
|
|
741
|
+
name: "Test Containers",
|
|
742
|
+
description: "Docker-based testing",
|
|
743
|
+
mimeType: "text/markdown",
|
|
744
|
+
},
|
|
745
|
+
// Security
|
|
746
|
+
{
|
|
747
|
+
uri: "mvp24hours://docs/security/overview",
|
|
748
|
+
name: "Security Overview",
|
|
749
|
+
description: "Security patterns overview",
|
|
750
|
+
mimeType: "text/markdown",
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
uri: "mvp24hours://docs/security/authentication",
|
|
754
|
+
name: "Authentication",
|
|
755
|
+
description: "Authentication patterns",
|
|
756
|
+
mimeType: "text/markdown",
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
uri: "mvp24hours://docs/security/authorization",
|
|
760
|
+
name: "Authorization",
|
|
761
|
+
description: "Authorization patterns",
|
|
762
|
+
mimeType: "text/markdown",
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
uri: "mvp24hours://docs/security/jwt",
|
|
766
|
+
name: "JWT Tokens",
|
|
767
|
+
description: "JWT token patterns",
|
|
768
|
+
mimeType: "text/markdown",
|
|
769
|
+
},
|
|
770
|
+
// Containerization
|
|
771
|
+
{
|
|
772
|
+
uri: "mvp24hours://docs/containerization/overview",
|
|
773
|
+
name: "Containerization Overview",
|
|
774
|
+
description: "Docker and Kubernetes patterns overview",
|
|
775
|
+
mimeType: "text/markdown",
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
uri: "mvp24hours://docs/containerization/dockerfile",
|
|
779
|
+
name: "Dockerfile Patterns",
|
|
780
|
+
description: "Multi-stage Dockerfile patterns",
|
|
781
|
+
mimeType: "text/markdown",
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
uri: "mvp24hours://docs/containerization/docker-compose",
|
|
785
|
+
name: "Docker Compose",
|
|
786
|
+
description: "Docker Compose for local development",
|
|
787
|
+
mimeType: "text/markdown",
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
uri: "mvp24hours://docs/containerization/kubernetes",
|
|
791
|
+
name: "Kubernetes",
|
|
792
|
+
description: "Kubernetes deployment patterns",
|
|
793
|
+
mimeType: "text/markdown",
|
|
794
|
+
},
|
|
795
|
+
],
|
|
796
|
+
};
|
|
797
|
+
});
|
|
798
|
+
// List resource templates (dynamic URI patterns)
|
|
799
|
+
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {
|
|
800
|
+
return {
|
|
801
|
+
resourceTemplates: [
|
|
802
|
+
{
|
|
803
|
+
uriTemplate: "mvp24hours://docs/template/{templateName}",
|
|
804
|
+
name: "Architecture Template",
|
|
805
|
+
description: "Get a specific architecture template by name. Available: minimal-api, simple-nlayers, complex-nlayers, cqrs, event-driven, hexagonal, clean-architecture, ddd, microservices",
|
|
806
|
+
mimeType: "text/markdown",
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
uriTemplate: "mvp24hours://docs/ai-template/{templateName}",
|
|
810
|
+
name: "AI Template",
|
|
811
|
+
description: "Get a specific AI template. Available: sk-chat-completion, sk-plugins, sk-rag, sk-planners, skg-graph-executor, skg-react-agent, skg-multi-agent, agent-framework-basic",
|
|
812
|
+
mimeType: "text/markdown",
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
uriTemplate: "mvp24hours://docs/core/{topic}",
|
|
816
|
+
name: "Core Pattern",
|
|
817
|
+
description: "Get core module documentation. Topics: overview, guard-clauses, value-objects, strongly-typed-ids, functional-patterns, smart-enums, entity-interfaces, exceptions",
|
|
818
|
+
mimeType: "text/markdown",
|
|
819
|
+
},
|
|
820
|
+
{
|
|
821
|
+
uriTemplate: "mvp24hours://docs/database/{topic}",
|
|
822
|
+
name: "Database Pattern",
|
|
823
|
+
description: "Get database documentation. Topics: relational, nosql, efcore-advanced, mongodb-advanced, repository, unit-of-work",
|
|
824
|
+
mimeType: "text/markdown",
|
|
825
|
+
},
|
|
826
|
+
{
|
|
827
|
+
uriTemplate: "mvp24hours://docs/cqrs/{topic}",
|
|
828
|
+
name: "CQRS Pattern",
|
|
829
|
+
description: "Get CQRS documentation. Topics: overview, commands, queries, notifications, domain-events, pipeline-behaviors",
|
|
830
|
+
mimeType: "text/markdown",
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
uriTemplate: "mvp24hours://docs/modernization/{feature}",
|
|
834
|
+
name: "Modernization Feature",
|
|
835
|
+
description: "Get .NET 9 modernization documentation. Features: overview, http-resilience, generic-resilience, rate-limiting, hybrid-cache, output-caching, keyed-services, time-provider, minimal-apis, aspire",
|
|
836
|
+
mimeType: "text/markdown",
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
uriTemplate: "mvp24hours://docs/observability/{component}",
|
|
840
|
+
name: "Observability Component",
|
|
841
|
+
description: "Get observability documentation. Components: overview, logging, tracing, metrics, exporters",
|
|
842
|
+
mimeType: "text/markdown",
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
uriTemplate: "mvp24hours://docs/testing/{topic}",
|
|
846
|
+
name: "Testing Pattern",
|
|
847
|
+
description: "Get testing documentation. Topics: overview, unit-testing, integration-testing, mocking, test-containers",
|
|
848
|
+
mimeType: "text/markdown",
|
|
849
|
+
},
|
|
850
|
+
{
|
|
851
|
+
uriTemplate: "mvp24hours://docs/security/{topic}",
|
|
852
|
+
name: "Security Pattern",
|
|
853
|
+
description: "Get security documentation. Topics: overview, authentication, authorization, jwt",
|
|
854
|
+
mimeType: "text/markdown",
|
|
855
|
+
},
|
|
856
|
+
{
|
|
857
|
+
uriTemplate: "mvp24hours://docs/containerization/{topic}",
|
|
858
|
+
name: "Containerization Pattern",
|
|
859
|
+
description: "Get containerization documentation. Topics: overview, dockerfile, docker-compose, kubernetes",
|
|
860
|
+
mimeType: "text/markdown",
|
|
861
|
+
},
|
|
862
|
+
],
|
|
863
|
+
};
|
|
864
|
+
});
|
|
865
|
+
// Resource URI to file path mapping (matches resource template patterns)
|
|
866
|
+
const resourceMapping = {
|
|
867
|
+
// Overview & Getting Started
|
|
868
|
+
"mvp24hours://docs/overview": "home.md",
|
|
869
|
+
"mvp24hours://docs/getting-started": "getting-started.md",
|
|
870
|
+
// Decision Matrices
|
|
871
|
+
"mvp24hours://docs/decision-matrix": "ai-context/decision-matrix.md",
|
|
872
|
+
"mvp24hours://docs/ai-decision-matrix": "ai-context/ai-decision-matrix.md",
|
|
873
|
+
// Architecture Templates (matches template: mvp24hours://docs/template/{templateName})
|
|
874
|
+
"mvp24hours://docs/architecture-templates": "ai-context/architecture-templates.md",
|
|
875
|
+
"mvp24hours://docs/template/minimal-api": "ai-context/structure-minimal-api.md",
|
|
876
|
+
"mvp24hours://docs/template/simple-nlayers": "ai-context/structure-simple-nlayers.md",
|
|
877
|
+
"mvp24hours://docs/template/complex-nlayers": "ai-context/structure-complex-nlayers.md",
|
|
878
|
+
"mvp24hours://docs/template/cqrs": "ai-context/template-cqrs.md",
|
|
879
|
+
"mvp24hours://docs/template/event-driven": "ai-context/template-event-driven.md",
|
|
880
|
+
"mvp24hours://docs/template/hexagonal": "ai-context/template-hexagonal.md",
|
|
881
|
+
"mvp24hours://docs/template/clean-architecture": "ai-context/template-clean-architecture.md",
|
|
882
|
+
"mvp24hours://docs/template/ddd": "ai-context/template-ddd.md",
|
|
883
|
+
"mvp24hours://docs/template/microservices": "ai-context/template-microservices.md",
|
|
884
|
+
// AI Templates - Semantic Kernel (matches template: mvp24hours://docs/ai-template/{templateName})
|
|
885
|
+
"mvp24hours://docs/ai-template/sk-chat-completion": "ai-context/template-sk-chat-completion.md",
|
|
886
|
+
"mvp24hours://docs/ai-template/sk-plugins": "ai-context/template-sk-plugins.md",
|
|
887
|
+
"mvp24hours://docs/ai-template/sk-rag": "ai-context/template-sk-rag-basic.md",
|
|
888
|
+
"mvp24hours://docs/ai-template/sk-planners": "ai-context/template-sk-planners.md",
|
|
889
|
+
// AI Templates - Semantic Kernel Graph (matches template: mvp24hours://docs/ai-template/{templateName})
|
|
890
|
+
"mvp24hours://docs/ai-template/skg-graph-executor": "ai-context/template-skg-graph-executor.md",
|
|
891
|
+
"mvp24hours://docs/ai-template/skg-react-agent": "ai-context/template-skg-react-agent.md",
|
|
892
|
+
"mvp24hours://docs/ai-template/skg-multi-agent": "ai-context/template-skg-multi-agent.md",
|
|
893
|
+
"mvp24hours://docs/ai-template/skg-human-in-loop": "ai-context/template-skg-human-in-loop.md",
|
|
894
|
+
"mvp24hours://docs/ai-template/skg-streaming": "ai-context/template-skg-streaming.md",
|
|
895
|
+
"mvp24hours://docs/ai-template/skg-checkpointing": "ai-context/template-skg-checkpointing.md",
|
|
896
|
+
"mvp24hours://docs/ai-template/skg-chatbot-memory": "ai-context/template-skg-chatbot-memory.md",
|
|
897
|
+
"mvp24hours://docs/ai-template/skg-observability": "ai-context/template-skg-observability.md",
|
|
898
|
+
"mvp24hours://docs/ai-template/skg-chain-of-thought": "ai-context/template-skg-chain-of-thought.md",
|
|
899
|
+
"mvp24hours://docs/ai-template/skg-document-pipeline": "ai-context/template-skg-document-pipeline.md",
|
|
900
|
+
// AI Templates - Agent Framework (matches template: mvp24hours://docs/ai-template/{templateName})
|
|
901
|
+
"mvp24hours://docs/ai-template/agent-framework-basic": "ai-context/template-agent-framework-basic.md",
|
|
902
|
+
"mvp24hours://docs/ai-template/agent-framework-multi-agent": "ai-context/template-agent-framework-multi-agent.md",
|
|
903
|
+
"mvp24hours://docs/ai-template/agent-framework-workflows": "ai-context/template-agent-framework-workflows.md",
|
|
904
|
+
"mvp24hours://docs/ai-template/agent-framework-middleware": "ai-context/template-agent-framework-middleware.md",
|
|
905
|
+
// Core Patterns
|
|
906
|
+
"mvp24hours://docs/core/overview": "core/home.md",
|
|
907
|
+
"mvp24hours://docs/core/guard-clauses": "core/guard-clauses.md",
|
|
908
|
+
"mvp24hours://docs/core/value-objects": "core/value-objects.md",
|
|
909
|
+
"mvp24hours://docs/core/strongly-typed-ids": "core/strongly-typed-ids.md",
|
|
910
|
+
"mvp24hours://docs/core/functional-patterns": "core/functional-patterns.md",
|
|
911
|
+
"mvp24hours://docs/core/smart-enums": "core/smart-enums.md",
|
|
912
|
+
"mvp24hours://docs/core/entity-interfaces": "core/entity-interfaces.md",
|
|
913
|
+
"mvp24hours://docs/core/exceptions": "core/exceptions.md",
|
|
914
|
+
// Database Patterns
|
|
915
|
+
"mvp24hours://docs/database/relational": "database/relational.md",
|
|
916
|
+
"mvp24hours://docs/database/nosql": "database/nosql.md",
|
|
917
|
+
"mvp24hours://docs/database/efcore-advanced": "database/efcore-advanced.md",
|
|
918
|
+
"mvp24hours://docs/database/mongodb-advanced": "database/mongodb-advanced.md",
|
|
919
|
+
"mvp24hours://docs/database/repository": "database/use-repository.md",
|
|
920
|
+
"mvp24hours://docs/database/unit-of-work": "database/use-unitofwork.md",
|
|
921
|
+
// CQRS Patterns
|
|
922
|
+
"mvp24hours://docs/cqrs/overview": "cqrs/home.md",
|
|
923
|
+
"mvp24hours://docs/cqrs/commands": "cqrs/commands.md",
|
|
924
|
+
"mvp24hours://docs/cqrs/queries": "cqrs/queries.md",
|
|
925
|
+
"mvp24hours://docs/cqrs/notifications": "cqrs/notifications.md",
|
|
926
|
+
"mvp24hours://docs/cqrs/domain-events": "cqrs/domain-events.md",
|
|
927
|
+
"mvp24hours://docs/cqrs/pipeline-behaviors": "cqrs/pipeline-behaviors.md",
|
|
928
|
+
// Infrastructure
|
|
929
|
+
"mvp24hours://docs/pipeline": "pipeline.md",
|
|
930
|
+
"mvp24hours://docs/webapi": "webapi.md",
|
|
931
|
+
"mvp24hours://docs/webapi-advanced": "webapi-advanced.md",
|
|
932
|
+
"mvp24hours://docs/cronjob": "cronjob.md",
|
|
933
|
+
"mvp24hours://docs/application-services": "application-services.md",
|
|
934
|
+
// Messaging
|
|
935
|
+
"mvp24hours://docs/broker": "broker.md",
|
|
936
|
+
"mvp24hours://docs/broker-advanced": "broker-advanced.md",
|
|
937
|
+
"mvp24hours://docs/messaging-patterns": "ai-context/messaging-patterns.md",
|
|
938
|
+
// Modernization (.NET 9)
|
|
939
|
+
"mvp24hours://docs/modernization/overview": "ai-context/modernization-patterns.md",
|
|
940
|
+
"mvp24hours://docs/modernization/http-resilience": "modernization/http-resilience.md",
|
|
941
|
+
"mvp24hours://docs/modernization/generic-resilience": "modernization/generic-resilience.md",
|
|
942
|
+
"mvp24hours://docs/modernization/rate-limiting": "modernization/rate-limiting.md",
|
|
943
|
+
"mvp24hours://docs/modernization/hybrid-cache": "modernization/hybrid-cache.md",
|
|
944
|
+
"mvp24hours://docs/modernization/output-caching": "modernization/output-caching.md",
|
|
945
|
+
"mvp24hours://docs/modernization/keyed-services": "modernization/keyed-services.md",
|
|
946
|
+
"mvp24hours://docs/modernization/time-provider": "modernization/time-provider.md",
|
|
947
|
+
"mvp24hours://docs/modernization/minimal-apis": "modernization/minimal-apis.md",
|
|
948
|
+
"mvp24hours://docs/modernization/aspire": "modernization/aspire.md",
|
|
949
|
+
// Observability
|
|
950
|
+
"mvp24hours://docs/observability/overview": "observability/home.md",
|
|
951
|
+
"mvp24hours://docs/observability/logging": "observability/logging.md",
|
|
952
|
+
"mvp24hours://docs/observability/tracing": "observability/tracing.md",
|
|
953
|
+
"mvp24hours://docs/observability/metrics": "observability/metrics.md",
|
|
954
|
+
"mvp24hours://docs/observability/exporters": "observability/exporters.md",
|
|
955
|
+
// Reference
|
|
956
|
+
"mvp24hours://docs/mapping": "mapping.md",
|
|
957
|
+
"mvp24hours://docs/validation": "validation.md",
|
|
958
|
+
"mvp24hours://docs/specification": "specification.md",
|
|
959
|
+
"mvp24hours://docs/documentation": "documentation.md",
|
|
960
|
+
"mvp24hours://docs/migration": "migration.md",
|
|
961
|
+
// Testing
|
|
962
|
+
"mvp24hours://docs/testing/overview": "ai-context/testing-patterns.md",
|
|
963
|
+
"mvp24hours://docs/testing/unit-testing": "ai-context/testing-patterns.md",
|
|
964
|
+
"mvp24hours://docs/testing/integration-testing": "ai-context/testing-patterns.md",
|
|
965
|
+
"mvp24hours://docs/testing/mocking": "ai-context/testing-patterns.md",
|
|
966
|
+
"mvp24hours://docs/testing/test-containers": "ai-context/testing-patterns.md",
|
|
967
|
+
// Security
|
|
968
|
+
"mvp24hours://docs/security/overview": "ai-context/security-patterns.md",
|
|
969
|
+
"mvp24hours://docs/security/authentication": "ai-context/security-patterns.md",
|
|
970
|
+
"mvp24hours://docs/security/authorization": "ai-context/security-patterns.md",
|
|
971
|
+
"mvp24hours://docs/security/jwt": "ai-context/security-patterns.md",
|
|
972
|
+
// Containerization
|
|
973
|
+
"mvp24hours://docs/containerization/overview": "ai-context/containerization-patterns.md",
|
|
974
|
+
"mvp24hours://docs/containerization/dockerfile": "ai-context/containerization-patterns.md",
|
|
975
|
+
"mvp24hours://docs/containerization/docker-compose": "ai-context/containerization-patterns.md",
|
|
976
|
+
"mvp24hours://docs/containerization/kubernetes": "ai-context/containerization-patterns.md",
|
|
977
|
+
};
|
|
978
|
+
// Dynamic template mappings for resource templates
|
|
979
|
+
const templateMappings = {
|
|
980
|
+
// Architecture templates: mvp24hours://docs/template/{templateName}
|
|
981
|
+
"template": {
|
|
982
|
+
"minimal-api": "ai-context/structure-minimal-api.md",
|
|
983
|
+
"simple-nlayers": "ai-context/structure-simple-nlayers.md",
|
|
984
|
+
"complex-nlayers": "ai-context/structure-complex-nlayers.md",
|
|
985
|
+
"cqrs": "ai-context/template-cqrs.md",
|
|
986
|
+
"event-driven": "ai-context/template-event-driven.md",
|
|
987
|
+
"hexagonal": "ai-context/template-hexagonal.md",
|
|
988
|
+
"clean-architecture": "ai-context/template-clean-architecture.md",
|
|
989
|
+
"ddd": "ai-context/template-ddd.md",
|
|
990
|
+
"microservices": "ai-context/template-microservices.md",
|
|
991
|
+
},
|
|
992
|
+
// AI templates: mvp24hours://docs/ai-template/{templateName}
|
|
993
|
+
"ai-template": {
|
|
994
|
+
"sk-chat-completion": "ai-context/template-sk-chat-completion.md",
|
|
995
|
+
"sk-plugins": "ai-context/template-sk-plugins.md",
|
|
996
|
+
"sk-rag": "ai-context/template-sk-rag-basic.md",
|
|
997
|
+
"sk-planners": "ai-context/template-sk-planners.md",
|
|
998
|
+
"skg-graph-executor": "ai-context/template-skg-graph-executor.md",
|
|
999
|
+
"skg-react-agent": "ai-context/template-skg-react-agent.md",
|
|
1000
|
+
"skg-multi-agent": "ai-context/template-skg-multi-agent.md",
|
|
1001
|
+
"skg-human-in-loop": "ai-context/template-skg-human-in-loop.md",
|
|
1002
|
+
"skg-streaming": "ai-context/template-skg-streaming.md",
|
|
1003
|
+
"skg-checkpointing": "ai-context/template-skg-checkpointing.md",
|
|
1004
|
+
"skg-chatbot-memory": "ai-context/template-skg-chatbot-memory.md",
|
|
1005
|
+
"skg-observability": "ai-context/template-skg-observability.md",
|
|
1006
|
+
"skg-chain-of-thought": "ai-context/template-skg-chain-of-thought.md",
|
|
1007
|
+
"skg-document-pipeline": "ai-context/template-skg-document-pipeline.md",
|
|
1008
|
+
"agent-framework-basic": "ai-context/template-agent-framework-basic.md",
|
|
1009
|
+
"agent-framework-multi-agent": "ai-context/template-agent-framework-multi-agent.md",
|
|
1010
|
+
"agent-framework-workflows": "ai-context/template-agent-framework-workflows.md",
|
|
1011
|
+
"agent-framework-middleware": "ai-context/template-agent-framework-middleware.md",
|
|
1012
|
+
},
|
|
1013
|
+
// Core patterns: mvp24hours://docs/core/{topic}
|
|
1014
|
+
"core": {
|
|
1015
|
+
"overview": "core/home.md",
|
|
1016
|
+
"guard-clauses": "core/guard-clauses.md",
|
|
1017
|
+
"value-objects": "core/value-objects.md",
|
|
1018
|
+
"strongly-typed-ids": "core/strongly-typed-ids.md",
|
|
1019
|
+
"functional-patterns": "core/functional-patterns.md",
|
|
1020
|
+
"smart-enums": "core/smart-enums.md",
|
|
1021
|
+
"entity-interfaces": "core/entity-interfaces.md",
|
|
1022
|
+
"exceptions": "core/exceptions.md",
|
|
1023
|
+
},
|
|
1024
|
+
// Database patterns: mvp24hours://docs/database/{topic}
|
|
1025
|
+
"database": {
|
|
1026
|
+
"relational": "database/relational.md",
|
|
1027
|
+
"nosql": "database/nosql.md",
|
|
1028
|
+
"efcore-advanced": "database/efcore-advanced.md",
|
|
1029
|
+
"mongodb-advanced": "database/mongodb-advanced.md",
|
|
1030
|
+
"repository": "database/use-repository.md",
|
|
1031
|
+
"unit-of-work": "database/use-unitofwork.md",
|
|
1032
|
+
},
|
|
1033
|
+
// CQRS patterns: mvp24hours://docs/cqrs/{topic}
|
|
1034
|
+
"cqrs": {
|
|
1035
|
+
"overview": "cqrs/home.md",
|
|
1036
|
+
"commands": "cqrs/commands.md",
|
|
1037
|
+
"queries": "cqrs/queries.md",
|
|
1038
|
+
"notifications": "cqrs/notifications.md",
|
|
1039
|
+
"domain-events": "cqrs/domain-events.md",
|
|
1040
|
+
"pipeline-behaviors": "cqrs/pipeline-behaviors.md",
|
|
1041
|
+
},
|
|
1042
|
+
// Modernization: mvp24hours://docs/modernization/{feature}
|
|
1043
|
+
"modernization": {
|
|
1044
|
+
"overview": "ai-context/modernization-patterns.md",
|
|
1045
|
+
"http-resilience": "modernization/http-resilience.md",
|
|
1046
|
+
"generic-resilience": "modernization/generic-resilience.md",
|
|
1047
|
+
"rate-limiting": "modernization/rate-limiting.md",
|
|
1048
|
+
"hybrid-cache": "modernization/hybrid-cache.md",
|
|
1049
|
+
"output-caching": "modernization/output-caching.md",
|
|
1050
|
+
"keyed-services": "modernization/keyed-services.md",
|
|
1051
|
+
"time-provider": "modernization/time-provider.md",
|
|
1052
|
+
"minimal-apis": "modernization/minimal-apis.md",
|
|
1053
|
+
"aspire": "modernization/aspire.md",
|
|
1054
|
+
},
|
|
1055
|
+
// Observability: mvp24hours://docs/observability/{component}
|
|
1056
|
+
"observability": {
|
|
1057
|
+
"overview": "observability/home.md",
|
|
1058
|
+
"logging": "observability/logging.md",
|
|
1059
|
+
"tracing": "observability/tracing.md",
|
|
1060
|
+
"metrics": "observability/metrics.md",
|
|
1061
|
+
"exporters": "observability/exporters.md",
|
|
1062
|
+
},
|
|
1063
|
+
// Testing: mvp24hours://docs/testing/{topic}
|
|
1064
|
+
"testing": {
|
|
1065
|
+
"overview": "ai-context/testing-patterns.md",
|
|
1066
|
+
"unit-testing": "ai-context/testing-patterns.md",
|
|
1067
|
+
"integration-testing": "ai-context/testing-patterns.md",
|
|
1068
|
+
"mocking": "ai-context/testing-patterns.md",
|
|
1069
|
+
"test-containers": "ai-context/testing-patterns.md",
|
|
1070
|
+
},
|
|
1071
|
+
// Security: mvp24hours://docs/security/{topic}
|
|
1072
|
+
"security": {
|
|
1073
|
+
"overview": "ai-context/security-patterns.md",
|
|
1074
|
+
"authentication": "ai-context/security-patterns.md",
|
|
1075
|
+
"authorization": "ai-context/security-patterns.md",
|
|
1076
|
+
"jwt": "ai-context/security-patterns.md",
|
|
1077
|
+
},
|
|
1078
|
+
// Containerization: mvp24hours://docs/containerization/{topic}
|
|
1079
|
+
"containerization": {
|
|
1080
|
+
"overview": "ai-context/containerization-patterns.md",
|
|
1081
|
+
"dockerfile": "ai-context/containerization-patterns.md",
|
|
1082
|
+
"docker-compose": "ai-context/containerization-patterns.md",
|
|
1083
|
+
"kubernetes": "ai-context/containerization-patterns.md",
|
|
1084
|
+
},
|
|
1085
|
+
};
|
|
1086
|
+
// Helper function to resolve dynamic URI to file path
|
|
1087
|
+
function resolveTemplateUri(uri) {
|
|
1088
|
+
// Pattern: mvp24hours://docs/{category}/{param}
|
|
1089
|
+
const match = uri.match(/^mvp24hours:\/\/docs\/([^/]+)\/([^/]+)$/);
|
|
1090
|
+
if (!match)
|
|
1091
|
+
return null;
|
|
1092
|
+
const [, category, param] = match;
|
|
1093
|
+
const categoryMappings = templateMappings[category];
|
|
1094
|
+
if (!categoryMappings)
|
|
1095
|
+
return null;
|
|
1096
|
+
return categoryMappings[param] || null;
|
|
1097
|
+
}
|
|
1098
|
+
// Read resources
|
|
1099
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
1100
|
+
const { uri } = request.params;
|
|
1101
|
+
// First, try static mapping
|
|
1102
|
+
let filePath = resourceMapping[uri];
|
|
1103
|
+
// If not found, try dynamic template resolution
|
|
1104
|
+
if (!filePath) {
|
|
1105
|
+
filePath = resolveTemplateUri(uri) || "";
|
|
1106
|
+
}
|
|
1107
|
+
if (filePath && docExists(filePath)) {
|
|
1108
|
+
try {
|
|
1109
|
+
const content = loadDoc(filePath);
|
|
1110
|
+
return {
|
|
1111
|
+
contents: [
|
|
1112
|
+
{
|
|
1113
|
+
uri,
|
|
1114
|
+
mimeType: "text/markdown",
|
|
1115
|
+
text: content,
|
|
1116
|
+
},
|
|
1117
|
+
],
|
|
1118
|
+
};
|
|
1119
|
+
}
|
|
1120
|
+
catch (error) {
|
|
1121
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
1122
|
+
return {
|
|
1123
|
+
contents: [
|
|
1124
|
+
{
|
|
1125
|
+
uri,
|
|
1126
|
+
mimeType: "text/markdown",
|
|
1127
|
+
text: `Error loading resource: ${message}`,
|
|
1128
|
+
},
|
|
1129
|
+
],
|
|
1130
|
+
};
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
// Fallback for unmapped resources with helpful message
|
|
1134
|
+
const availableTemplates = Object.keys(templateMappings).map(cat => {
|
|
1135
|
+
const params = Object.keys(templateMappings[cat]).join(", ");
|
|
1136
|
+
return `- mvp24hours://docs/${cat}/{param} - Available: ${params}`;
|
|
1137
|
+
}).join("\n");
|
|
1138
|
+
return {
|
|
1139
|
+
contents: [
|
|
1140
|
+
{
|
|
1141
|
+
uri,
|
|
1142
|
+
mimeType: "text/markdown",
|
|
1143
|
+
text: `Resource not found: ${uri}
|
|
1144
|
+
|
|
1145
|
+
## Available Resource Templates
|
|
1146
|
+
|
|
1147
|
+
${availableTemplates}
|
|
1148
|
+
|
|
1149
|
+
## Example URIs
|
|
1150
|
+
- mvp24hours://docs/template/cqrs
|
|
1151
|
+
- mvp24hours://docs/ai-template/sk-chat-completion
|
|
1152
|
+
- mvp24hours://docs/core/guard-clauses
|
|
1153
|
+
- mvp24hours://docs/database/relational
|
|
1154
|
+
- mvp24hours://docs/modernization/http-resilience
|
|
1155
|
+
|
|
1156
|
+
## Available Tools
|
|
1157
|
+
- mvp24h_get_started: Framework overview
|
|
1158
|
+
- mvp24h_architecture_advisor: Architecture selection
|
|
1159
|
+
- mvp24h_database_advisor: Database selection
|
|
1160
|
+
- mvp24h_cqrs_guide: CQRS/Mediator patterns
|
|
1161
|
+
- mvp24h_ai_implementation: AI implementation
|
|
1162
|
+
- mvp24h_get_template: Specific templates`,
|
|
1163
|
+
},
|
|
1164
|
+
],
|
|
1165
|
+
};
|
|
1166
|
+
});
|
|
1167
|
+
// List available prompts (templates)
|
|
1168
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
1169
|
+
return {
|
|
1170
|
+
prompts: [
|
|
1171
|
+
{
|
|
1172
|
+
name: "create-dotnet-project",
|
|
1173
|
+
description: "Guide to create a new .NET project with Mvp24Hours framework",
|
|
1174
|
+
arguments: [
|
|
1175
|
+
{
|
|
1176
|
+
name: "project_type",
|
|
1177
|
+
description: "Type of project: api, webapp, console, worker",
|
|
1178
|
+
required: true,
|
|
1179
|
+
},
|
|
1180
|
+
{
|
|
1181
|
+
name: "architecture",
|
|
1182
|
+
description: "Architecture pattern: minimal-api, simple-nlayers, complex-nlayers, cqrs, hexagonal, clean-architecture, ddd, microservices",
|
|
1183
|
+
required: false,
|
|
1184
|
+
},
|
|
1185
|
+
],
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
name: "implement-cqrs",
|
|
1189
|
+
description: "Guide to implement CQRS pattern with MediatR",
|
|
1190
|
+
arguments: [
|
|
1191
|
+
{
|
|
1192
|
+
name: "component",
|
|
1193
|
+
description: "CQRS component: command, query, notification, domain-event, pipeline-behavior",
|
|
1194
|
+
required: true,
|
|
1195
|
+
},
|
|
1196
|
+
],
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
name: "setup-database",
|
|
1200
|
+
description: "Guide to setup database with repository pattern",
|
|
1201
|
+
arguments: [
|
|
1202
|
+
{
|
|
1203
|
+
name: "database",
|
|
1204
|
+
description: "Database type: sqlserver, postgresql, mysql, mongodb, redis",
|
|
1205
|
+
required: true,
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
name: "orm",
|
|
1209
|
+
description: "ORM choice: efcore, dapper, hybrid",
|
|
1210
|
+
required: false,
|
|
1211
|
+
},
|
|
1212
|
+
],
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
name: "add-ai-capabilities",
|
|
1216
|
+
description: "Guide to add AI capabilities using Semantic Kernel or Agent Framework",
|
|
1217
|
+
arguments: [
|
|
1218
|
+
{
|
|
1219
|
+
name: "approach",
|
|
1220
|
+
description: "AI approach: semantic-kernel, sk-graph, agent-framework",
|
|
1221
|
+
required: true,
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
name: "use_case",
|
|
1225
|
+
description: "Use case: chatbot, rag, multi-agent, workflow",
|
|
1226
|
+
required: false,
|
|
1227
|
+
},
|
|
1228
|
+
],
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
name: "setup-observability",
|
|
1232
|
+
description: "Guide to setup logging, tracing, and metrics",
|
|
1233
|
+
arguments: [
|
|
1234
|
+
{
|
|
1235
|
+
name: "component",
|
|
1236
|
+
description: "Component: logging, tracing, metrics, all",
|
|
1237
|
+
required: true,
|
|
1238
|
+
},
|
|
1239
|
+
{
|
|
1240
|
+
name: "exporter",
|
|
1241
|
+
description: "Exporter: jaeger, zipkin, prometheus, application-insights",
|
|
1242
|
+
required: false,
|
|
1243
|
+
},
|
|
1244
|
+
],
|
|
1245
|
+
},
|
|
1246
|
+
{
|
|
1247
|
+
name: "modernize-dotnet",
|
|
1248
|
+
description: "Guide to modernize .NET application with .NET 9 features",
|
|
1249
|
+
arguments: [
|
|
1250
|
+
{
|
|
1251
|
+
name: "feature",
|
|
1252
|
+
description: "Feature: resilience, caching, keyed-services, minimal-apis, aspire",
|
|
1253
|
+
required: true,
|
|
1254
|
+
},
|
|
1255
|
+
],
|
|
1256
|
+
},
|
|
1257
|
+
{
|
|
1258
|
+
name: "containerize-app",
|
|
1259
|
+
description: "Guide to containerize .NET application with Docker and Kubernetes",
|
|
1260
|
+
arguments: [
|
|
1261
|
+
{
|
|
1262
|
+
name: "target",
|
|
1263
|
+
description: "Target: dockerfile, docker-compose, kubernetes",
|
|
1264
|
+
required: true,
|
|
1265
|
+
},
|
|
1266
|
+
],
|
|
1267
|
+
},
|
|
1268
|
+
],
|
|
1269
|
+
};
|
|
1270
|
+
});
|
|
1271
|
+
// Get prompt content
|
|
1272
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
1273
|
+
const { name, arguments: args } = request.params;
|
|
1274
|
+
switch (name) {
|
|
1275
|
+
case "create-dotnet-project": {
|
|
1276
|
+
const projectType = args?.project_type || "api";
|
|
1277
|
+
const architecture = args?.architecture || "simple-nlayers";
|
|
1278
|
+
return {
|
|
1279
|
+
description: `Create a new .NET ${projectType} project with ${architecture} architecture`,
|
|
1280
|
+
messages: [
|
|
1281
|
+
{
|
|
1282
|
+
role: "user",
|
|
1283
|
+
content: {
|
|
1284
|
+
type: "text",
|
|
1285
|
+
text: `I want to create a new .NET ${projectType} project using the ${architecture} architecture pattern with Mvp24Hours framework.
|
|
1286
|
+
|
|
1287
|
+
Please help me:
|
|
1288
|
+
1. Set up the project structure
|
|
1289
|
+
2. Configure the necessary NuGet packages
|
|
1290
|
+
3. Implement the base architecture
|
|
1291
|
+
4. Add common patterns (repository, validation, logging)
|
|
1292
|
+
|
|
1293
|
+
Use the mvp24h_get_started and mvp24h_architecture_advisor tools to get the relevant documentation.`,
|
|
1294
|
+
},
|
|
1295
|
+
},
|
|
1296
|
+
],
|
|
1297
|
+
};
|
|
1298
|
+
}
|
|
1299
|
+
case "implement-cqrs": {
|
|
1300
|
+
const component = args?.component || "command";
|
|
1301
|
+
return {
|
|
1302
|
+
description: `Implement CQRS ${component} pattern`,
|
|
1303
|
+
messages: [
|
|
1304
|
+
{
|
|
1305
|
+
role: "user",
|
|
1306
|
+
content: {
|
|
1307
|
+
type: "text",
|
|
1308
|
+
text: `I want to implement the CQRS ${component} pattern in my .NET application.
|
|
1309
|
+
|
|
1310
|
+
Please help me:
|
|
1311
|
+
1. Understand the ${component} pattern
|
|
1312
|
+
2. Create the necessary classes and interfaces
|
|
1313
|
+
3. Configure MediatR pipeline
|
|
1314
|
+
4. Add validation and error handling
|
|
1315
|
+
|
|
1316
|
+
Use the mvp24h_cqrs_guide tool with topic "${component}" to get the implementation details.`,
|
|
1317
|
+
},
|
|
1318
|
+
},
|
|
1319
|
+
],
|
|
1320
|
+
};
|
|
1321
|
+
}
|
|
1322
|
+
case "setup-database": {
|
|
1323
|
+
const database = args?.database || "sqlserver";
|
|
1324
|
+
const orm = args?.orm || "efcore";
|
|
1325
|
+
return {
|
|
1326
|
+
description: `Setup ${database} database with ${orm}`,
|
|
1327
|
+
messages: [
|
|
1328
|
+
{
|
|
1329
|
+
role: "user",
|
|
1330
|
+
content: {
|
|
1331
|
+
type: "text",
|
|
1332
|
+
text: `I want to setup ${database} database using ${orm} in my .NET application.
|
|
1333
|
+
|
|
1334
|
+
Please help me:
|
|
1335
|
+
1. Configure the database connection
|
|
1336
|
+
2. Implement the repository pattern
|
|
1337
|
+
3. Setup Unit of Work
|
|
1338
|
+
4. Add migrations (if applicable)
|
|
1339
|
+
|
|
1340
|
+
Use the mvp24h_database_advisor tool to get the configuration and implementation details.`,
|
|
1341
|
+
},
|
|
1342
|
+
},
|
|
1343
|
+
],
|
|
1344
|
+
};
|
|
1345
|
+
}
|
|
1346
|
+
case "add-ai-capabilities": {
|
|
1347
|
+
const approach = args?.approach || "semantic-kernel";
|
|
1348
|
+
const useCase = args?.use_case || "chatbot";
|
|
1349
|
+
return {
|
|
1350
|
+
description: `Add AI capabilities using ${approach} for ${useCase}`,
|
|
1351
|
+
messages: [
|
|
1352
|
+
{
|
|
1353
|
+
role: "user",
|
|
1354
|
+
content: {
|
|
1355
|
+
type: "text",
|
|
1356
|
+
text: `I want to add AI capabilities to my .NET application using ${approach} for a ${useCase} use case.
|
|
1357
|
+
|
|
1358
|
+
Please help me:
|
|
1359
|
+
1. Choose the right AI approach
|
|
1360
|
+
2. Configure the necessary packages
|
|
1361
|
+
3. Implement the AI integration
|
|
1362
|
+
4. Add proper error handling and observability
|
|
1363
|
+
|
|
1364
|
+
Use the mvp24h_ai_implementation tool to get the implementation template and guidance.`,
|
|
1365
|
+
},
|
|
1366
|
+
},
|
|
1367
|
+
],
|
|
1368
|
+
};
|
|
1369
|
+
}
|
|
1370
|
+
case "setup-observability": {
|
|
1371
|
+
const component = args?.component || "all";
|
|
1372
|
+
const exporter = args?.exporter || "jaeger";
|
|
1373
|
+
return {
|
|
1374
|
+
description: `Setup ${component} observability with ${exporter}`,
|
|
1375
|
+
messages: [
|
|
1376
|
+
{
|
|
1377
|
+
role: "user",
|
|
1378
|
+
content: {
|
|
1379
|
+
type: "text",
|
|
1380
|
+
text: `I want to setup ${component} observability in my .NET application using ${exporter} as the exporter.
|
|
1381
|
+
|
|
1382
|
+
Please help me:
|
|
1383
|
+
1. Configure OpenTelemetry
|
|
1384
|
+
2. Setup ${component === "all" ? "logging, tracing, and metrics" : component}
|
|
1385
|
+
3. Configure the ${exporter} exporter
|
|
1386
|
+
4. Add proper instrumentation
|
|
1387
|
+
|
|
1388
|
+
Use the mvp24h_observability_setup tool to get the configuration details.`,
|
|
1389
|
+
},
|
|
1390
|
+
},
|
|
1391
|
+
],
|
|
1392
|
+
};
|
|
1393
|
+
}
|
|
1394
|
+
case "modernize-dotnet": {
|
|
1395
|
+
const feature = args?.feature || "resilience";
|
|
1396
|
+
return {
|
|
1397
|
+
description: `Modernize .NET app with ${feature}`,
|
|
1398
|
+
messages: [
|
|
1399
|
+
{
|
|
1400
|
+
role: "user",
|
|
1401
|
+
content: {
|
|
1402
|
+
type: "text",
|
|
1403
|
+
text: `I want to modernize my .NET application using the ${feature} feature from .NET 9.
|
|
1404
|
+
|
|
1405
|
+
Please help me:
|
|
1406
|
+
1. Understand the ${feature} feature
|
|
1407
|
+
2. Configure the necessary packages
|
|
1408
|
+
3. Implement the pattern
|
|
1409
|
+
4. Add best practices
|
|
1410
|
+
|
|
1411
|
+
Use the mvp24h_modernization_guide tool to get the implementation details.`,
|
|
1412
|
+
},
|
|
1413
|
+
},
|
|
1414
|
+
],
|
|
1415
|
+
};
|
|
1416
|
+
}
|
|
1417
|
+
case "containerize-app": {
|
|
1418
|
+
const target = args?.target || "dockerfile";
|
|
1419
|
+
return {
|
|
1420
|
+
description: `Containerize app with ${target}`,
|
|
1421
|
+
messages: [
|
|
1422
|
+
{
|
|
1423
|
+
role: "user",
|
|
1424
|
+
content: {
|
|
1425
|
+
type: "text",
|
|
1426
|
+
text: `I want to containerize my .NET application using ${target}.
|
|
1427
|
+
|
|
1428
|
+
Please help me:
|
|
1429
|
+
1. Create an optimized ${target} configuration
|
|
1430
|
+
2. Setup multi-stage builds (if applicable)
|
|
1431
|
+
3. Configure health checks
|
|
1432
|
+
4. Add production best practices
|
|
1433
|
+
|
|
1434
|
+
Use the mvp24h_containerization_patterns tool to get the configuration templates.`,
|
|
1435
|
+
},
|
|
1436
|
+
},
|
|
1437
|
+
],
|
|
1438
|
+
};
|
|
1439
|
+
}
|
|
1440
|
+
default:
|
|
1441
|
+
throw new Error(`Unknown prompt: ${name}`);
|
|
1442
|
+
}
|
|
1443
|
+
});
|
|
1444
|
+
// Start the server
|
|
1445
|
+
async function main() {
|
|
1446
|
+
const transport = new StdioServerTransport();
|
|
1447
|
+
await server.connect(transport);
|
|
1448
|
+
console.error("Mvp24Hours .NET MCP Server running on stdio");
|
|
1449
|
+
}
|
|
1450
|
+
main().catch((error) => {
|
|
1451
|
+
console.error("Fatal error:", error);
|
|
1452
|
+
process.exit(1);
|
|
1453
|
+
});
|
|
1454
|
+
//# sourceMappingURL=index.js.map
|