MCP Demo - .NET Web API with Model Context Protocol Server
This project demonstrates a simple .NET 8 Web API that implements a Model Context Protocol (MCP) server with Basic Authentication.
Features
- MCP Server Implementation: Handles MCP protocol messages including initialization, tool calls, and resource management 
- Basic Authentication: Simple username/password authentication for API endpoints 
- Sample Tools: Includes example tools like time retrieval, echo, and calculator 
- RESTful API: Standard REST endpoints for MCP operations 
- Swagger Documentation: Auto-generated API documentation 
Prerequisites
- .NET 8.0 SDK or later 
- Visual Studio 2022, VS Code, or any preferred IDE 
Getting Started
1. Restore Dependencies
2. Build the Project
3. Run the Application
The application will start on https://localhost:5001 and http://localhost:5000.
4. Access Swagger UI
Open your browser and navigate to: https://localhost:5001/swagger
Authentication
The API uses Basic Authentication with hardcoded credentials for demonstration:
- Username: - admin
- Password: - password123
Using Basic Auth in HTTP Requests
Include the Authorization header with Base64 encoded credentials:
API Endpoints
MCP Endpoints (Require Authentication)
- POST /api/mcp/message- Handle MCP protocol messages
- GET /api/mcp/tools- Get available tools
- GET /api/mcp/resources- Get available resources
Health Check (Public)
- GET /api/mcp/health- Health check endpoint
Sample Endpoints
- GET /api/weather- Get weather data (requires authentication)
- GET /api/weather/public- Get public weather data (no authentication)
MCP Protocol Usage
Initialize the Server
List Available Tools
Call a Tool
Calculate Tool Example
Available Tools
- get_time: Returns the current date and time 
- echo: Echoes back the provided message 
- calculate: Performs basic arithmetic operations (add, subtract, multiply, divide) 
Project Structure
Security Considerations
⚠️ Important: This implementation uses hardcoded credentials for demonstration purposes only. In production:
- Use proper user authentication with a database 
- Implement secure password hashing 
- Use HTTPS only 
- Consider JWT tokens instead of Basic Auth 
- Implement proper authorization policies 
- Add rate limiting and input validation 
Extending the Server
Adding New Tools
- Add the tool definition in - McpServer.GetToolsAsync()
- Implement the tool logic in - McpServer.ExecuteToolAsync()
- Define the input schema for the tool 
Adding New Resources
- Add resource definitions in - McpServer.GetResourcesAsync()
- Implement resource reading logic in - HandleResourceReadAsync()
Testing with curl
Health Check
Get Tools (with auth)
Send MCP Message
License
This project is for demonstration purposes only.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A demonstration .NET 8 Web API that implements the Model Context Protocol with basic authentication. Provides sample tools for time retrieval, echo functionality, and basic arithmetic calculations through RESTful endpoints.
Related MCP Servers
- -security-license-qualityThis server enables running a Model Context Protocol in a web browser with functionalities including arithmetic operations and session-based key-value storage.Last updated -26
- -security-license-qualityA Model Context Protocol server that enables AI assistants to interact with n8n workflows through natural language, supporting actions like listing, creating, updating, executing and monitoring workflows.Last updated -1331,377MIT License
- -security-license-qualityA Model Context Protocol server that enables AI assistants to interact with n8n workflows through natural language, providing access to n8n's complete API functionality including workflow management, user administration, and credential handling.
- Asecurity-licenseAqualityA Model Context Protocol server for time manipulation tasks, enabling AI models to get the current date/time and calculate duration between timestamps.Last updated -72MIT License