No official MCP server existed for the ERP — and the vendor was not going to ship one. Without an MCP layer, every AI agent the contractor wanted to deploy (AP automation, project status reporting, vendor outreach) would re-implement the same auth + audit + integration plumbing.
Custom MCP servers are not what most operators need. We only recommend a custom build when no official or trusted community server exists. If Intuit ships an official QuickBooks MCP server, we use it. If CData ships a JDBC-backed MCP wrapper, we evaluate it. Building bespoke is a fallback, not a default. Operators who ask us to build custom servers because they “want to own the code” are usually buying the wrong thing.
The contractor’s CFO described the MCP server as “the cheapest insurance policy we’ve bought” against future agent integration costs.
Stack. Custom MCP server in Python (FastMCP) · Streamable HTTP transport · OAuth 2.1 + PKCE bolted onto the ERP’s native auth · AWS PrivateLink · CloudWatch audit logging.
Modern OAuth 2.1 + PKCE layered onto the ERP's older auth. AP automation agent (built by us) shipped on time on the new surface. A second internal project (custom dashboarding tool, built by the contractor's IT team) consumed the same MCP surface — validating the "durable layer" investment.