The bet
EasyAF exists so a .NET team can ship a real application without inventing a framework first. The APIs it produces are already standards: OData, REST, ordinary HTTP. Assistants do not speak those APIs fluently. Left alone, a model will download$metadata, burn thousands of tokens guessing at Customers, and still miss $filter. You pay for the round trips. The customer pays for the tokens. Nobody gets a good answer.
EasyAF.AI is the other half of that bet. Keep the API. Give the assistant a catalog and a protocol.
Standards in, standards out
OData stays OData
Filter, expand, page, and act over HTTP the way the service already does. MCP does not become a second query language.
MCP stays MCP
Claude Desktop, Cursor, Claude Code, and any other MCP harness connect the same way. No vendor SDK in the assistant.
Catalog, not dump
$metadata is for compilers. The assistant gets named tools, compact type cards, and a short list of rules.Identity is a host concern
A generic MCP server has more than one user. Tasks belong to the principal that created them. Stores persist that rule.
What the numbers look like
OData$metadata is honest and huge. A compact catalog is the same service, described for a model:
That reduction is the product. Faster answers, smaller bills, fewer hallucinated entity sets.
Three libraries, one idea
MCP Essentials is the hosting layer. The official MCP C# SDK’s in-memory task store is process-wide. A remote server that more than one person uses needs one more rule: the user who started a task is the only one who can poll, update, or cancel it. Core ships that store. Entity Framework Core persists it on the database you already run. OData MCP is the queryable-AI layer. Local MCP is a small app on your machine that talks to any OData v4 service. Remote MCP is a NuGet package you put on the API you host, so customers point their harness athttps://your-api/odata/mcp. Both share a catalog built from $metadata.
ClaudeEssentials is the agent-runtime layer. Claude Code hooks are JSON over stdin/stdout. This library is the AOT-ready, source-generated model of every hook Claude can fire, so your policy is C# instead of hand-rolled JSON.
Each tab is that project’s own documentation. EasyAF.AI does not restate it. This site exists to show how they compose.