- Tell me about customer ALFKI.
- When was the last order on that account?
- Find customers who have not created a new project in 45 days.
{yourRoute}/mcp. Customers point their harness at that URL.
Add it
https://your-host/odata/mcp. OData at /odata is unchanged.
- OData 8
- Restier
- Several APIs
AddRouteComponents + MapControllers, then UseODataMcp.UseODataMcp after your OData routes exist. That is the whole on switch.
What the harness gets
Named tools from your model:list_customers, get_customer, create_order, action_order_ship. Generic odata_* tools cover everything else. Type cards are compact, so the model spends tokens on the question instead of your $metadata.
Answers come back as the same JSON your API already returns. A bad create or a missing key fails with a readable message before it ever hits your controllers.
Give the assistant a one-line preface about your product in advanced setup. If an action opens a browser for the operator, see Tasks and Elicitations. Lock /mcp the same way you lock the API in authentication.