dotnet-mcp-hero
Clean Architecture Hero API + MCP Server
Documentation
.NET Hero API with Model Context Protocol
A .NET-based superhero management system comprised of a Clean Architecture API backend and a Model Context Protocol (MCP) server for AI assistant integration.
๐ฏ Project Overview
This project demonstrates how to build a modern .NET application with clean architecture principles and integrate it with the Model Context Protocol (MCP) for AI assistant capabilities. It consists of two main parts:
1. HeroApi - A .NET 9 WebAPI built with Clean Architecture principles
2. HeroMcp - A Model Context Protocol server that provides AI tool capabilities for interacting with the API
Domain
The application is built around a superhero domain model that includes:
- Heroes - Characters with powers, name, alias, and power level
- Teams - Groups of heroes that can undertake missions
- Missions - Tasks that teams can execute and complete
๐ Getting Started
Prerequisites
- .NET 9 SDK
- Docker (for database)
- VS Code or other .NET IDE
Running the Hero API
1. Navigate to the AppHost directory:
cd Api/tools/AppHost2. Run the application with the .NET CLI:
dotnet runThis will:
- Start a SQL Server container for the database
- Run migrations to set up the database schema
- Start the HeroApi on https://localhost:7255
3. Open https://localhost:7255/scalar/v1 in your browser to view the API documentation
Running the MCP Server
1. Navigate to the Mcp directory:
cd Mcp2. Run the MCP server:
dotnet runThis starts the MCP server which provides tools for interacting with the HeroApi.
Running the MCP Inspector
The MCP Inspector is a helpful tool for testing your MCP server directly. It allows you to inspect available tools and call them interactively.
1. Navigate to the Mcp directory:
cd Mcp2. Run the MCP Inspector with the following command:
npx @modelcontextprotocol/inspector dotnet runThis will:
- Start the MCP server
- Launch the MCP Inspector in a terminal interface
- Display available tools and allow you to test them interactively
The inspector will show all available tools from your MCP server and provides a simple interface to call them and view their responses, which is useful for development and debugging.
Generating the API Client
The project uses Microsoft Kiota to generate a strongly-typed API client. To regenerate the client:
1. Ensure the HeroApi is running
2. Navigate to the Mcp directory:
cd Mcp3. Run the Kiota generator:
dotnet kiota generate --openapi https://localhost:7255/openapi/v1.json --language csharp --class-name HeroClient --clean-output --additional-data falseThis will regenerate the API client in the `output` directory based on the latest OpenAPI specification.
โจ Features
HeroApi
- Clean Architecture: Separation of concerns with Domain, Application, Infrastructure, and WebApi layers
- Domain-Driven Design: Rich domain model with aggregates, entities, and value objects
- CQRS Pattern: Separation of commands and queries using MediatR
- Minimal APIs: Fast and lightweight API endpoints
- OpenAPI/Scalar: Modern, interactive API documentation
- EF Core: Data access with Entity Framework Core
- Aspire Dashboard: For observability and resource orchestration
- Strongly Typed IDs: Using Vogen to prevent primitive obsession
- Health Checks: Monitor application health
- Comprehensive Testing: Architecture tests, domain unit tests, and API integration tests
HeroMcp
- Model Context Protocol: Integration with AI assistants using the MCP standard
- AI Tools: Custom tools for managing heroes, teams, and missions
- Generated API Client: Uses Microsoft Kiota to access the HeroApi
๐ API Endpoints
The HeroApi provides the following endpoints:
- GET /api/heroes - Get all heroes
- POST /api/heroes - Create a new hero
- GET /api/teams - Get all teams
- GET /api/teams/{id} - Get a specific team
- POST /api/teams - Create a new team
- POST /api/teams/{id}/heroes/{heroId} - Add a hero to a team
- POST /api/teams/{id}/execute-mission - Execute a mission with a team
- POST /api/teams/{id}/complete-mission - Complete a team's current mission
๐ค MCP Tools
The MCP server provides the following tools to AI assistants:
- GetHeroes - Retrieve all heroes from the API
- CreateHero - Create a new hero
- GetTeams - Retrieve all teams from the API
- GetTeam - Get a specific team by ID
- CreateTeam - Create a new team
- AddHeroToTeam - Add a hero to a team
- ExecuteMission - Execute a mission with a team
- CompleteMission - Complete a team's mission
- Echo and ReverseEcho - Simple tools for testing the MCP connection
๐๏ธ Project Structure
dotnet-mcp-hero/
โโโ Api/ # Clean Architecture API
โ โโโ src/ # Source code
โ โ โโโ Application/ # Application layer (use cases)
โ โ โโโ Domain/ # Domain layer (business entities)
โ โ โโโ Infrastructure/ # Infrastructure layer
โ โ โโโ WebApi/ # WebApi layer (controllers)
โ โโโ tests/ # Test projects
โ โ โโโ Architecture.Tests/ # Architecture tests
โ โ โโโ Domain.UnitTests/ # Domain unit tests
โ โ โโโ WebApi.IntegrationTests/ # API integration tests
โ โโโ tools/ # Developer tools
โ โโโ AppHost/ # Aspire host
โ โโโ MigrationService/ # Database migrations
โโโ Mcp/ # Model Context Protocol server
โ โโโ Program.cs # MCP server setup
โ โโโ Tools/ # MCP tools
โ โ โโโ Echo/ # Echo tools
โ โ โโโ Heroes/ # Hero management tools
โ โ โโโ Teams/ # Team management tools
โ โโโ output/ # Generated API client
โโโ McpHero.sln # Solution file๐ Architecture
This project follows Clean Architecture principles with the following layers:
1. Domain Layer - Contains business entities, aggregates, value objects, and domain events
2. Application Layer - Contains business logic, commands, queries, and interfaces
3. Infrastructure Layer - Implements interfaces from the application layer
4. WebApi Layer - Exposes the API endpoints
๐งช Testing
- Architecture Tests - Verifies that the codebase adheres to clean architecture principles
- Domain Unit Tests - Tests the business logic in isolation
- Integration Tests - Tests the API endpoints against a real database
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgements
- Clean Architecture - Robert C. Martin
- Architectural Decision Records - For documenting architectural decisions
- Model Context Protocol - Microsoft's protocol for AI tool integration
Frequently asked questions
What is dotnet-mcp-hero?
dotnet-mcp-hero is Clean Architecture Hero API + MCP Server
How do I install dotnet-mcp-hero?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is dotnet-mcp-hero open source?
Yes โ it is hosted on GitHub at https://github.com/danielmackay/dotnet-mcp-hero and has 4 stars.
Related MCP tools
๐งฉ MCP Gateway - A lightweight gateway service that instantly transforms existing MCP Servers and APIs into MCP servers with zero code changes.
MCP Aggregator, Orchestrator, Middleware, Gateway in one docker TypeScript-based implementation. Trusted by 1400+ developers.
Model Context Protocol with Neo4j Python-based implementation. Trusted by 700+ developers. Trusted by 700+ developers. Trusted by 700+ developers.
Fantasy Premier League Kotlin/Compose Multiplatform sample for the Model Context Protocol. Enhance AI assistants with powerful integrations.
Lunar.dev: Ground Control for 3rd Party APIs for the Model Context Protocol. Enhance AI assistants with powerful integrations. Go-based implementation.
An MCP server that allows MCP clients like Claude Desktop or Cursor to perform actions in the Unity Editor C#-based implementation.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP