Lepuroshi - Scheduling Service with MCP Integration
A scheduling platform built with React and .NET, plus an MCP server that lets AI assistants book and manage appointments through plain language.

Overview
Lepuroshi is a scheduling platform where businesses manage their calendars and clients book services online. The part I find most interesting sits underneath: an MCP (Model Context Protocol) server that lets AI assistants like Claude or ChatGPT create, reschedule, and cancel appointments through natural language. No custom integration is needed for each model.
Key features
- Clients browse availability and book time slots through a clean booking interface
- Real-time sync across devices via SignalR, so availability is always current
- Automatic email reminders before upcoming appointments
- Conflict detection at the data layer, so double bookings cannot happen
- An MCP server exposing the full scheduling lifecycle to AI agents over JSON-RPC
The MCP server
The MCP server treats appointments, availability windows, and client records as tools that any AI agent can call. In practice an assistant can:
- Check which time slots are open on a given day
- Create a new appointment for a client
- Reschedule or cancel an existing booking
- Trigger a confirmation message
Any client that speaks the Model Context Protocol works out of the box, which is exactly the point of building on an open protocol instead of writing one-off integrations.
Stack
- Frontend: React 18, TypeScript
- Backend: ASP.NET Core (.NET 8), Entity Framework Core
- Real-time: SignalR
- Database: SQL Server
- AI Integration: Custom MCP server, OpenAI API for natural language understanding
- Deployment: Docker, cloud hosting
My role
This one was full stack: I designed the database schema, built the REST API and the MCP server from scratch, and wrote the React frontend. The MCP implementation was the most novel part. There were very few reference examples at the time, so a lot of it was me working directly from the protocol spec and figuring things out as I went.