MCP for Enterprises: What Nobody Tells You Before You Build Your First Server

    MCP for Enterprises: What Nobody Tells You Before You Build Your First Server

    A practitioner's guide to the Model Context Protocol, the seven mistakes that kill enterprise deployments, when to build vs buy, and why your software engineers are closer to AI-ready than you think.

    1 minute

    MCP for Enterprises: What Nobody Tells You Before You Build Your First Server

    A practitioner's guide to the Model Context Protocol, the mistakes that kill enterprise deployments, and why your software engineers are closer to AI-ready than you think

    The Model Context Protocol went from an internal Anthropic experiment in July 2024 to 97 million monthly SDK downloads and Linux Foundation governance in fourteen months. Every major AI company, OpenAI, Google, Microsoft, AWS, has adopted it. Block deployed it to 10,000 employees. The MCP market hit $1.8 billion in 2025.

    And yet, most enterprise MCP projects still fail.

    Not because the protocol is flawed. It works remarkably well for what it does. They fail because teams misunderstand what MCP actually is, build servers that fight the protocol's design, ignore security fundamentals that have been documented since April 2025, and treat the project as a purely technical exercise when the real challenge is organizational.

    I have spent the past year building MCP integrations, evaluating enterprise deployments, and watching teams repeat the same mistakes. This post is everything I wish someone had told me before we built our first server.

    What MCP Actually Is (And Is Not)

    Before diving into mistakes, let me clear up a confusion that persists even among experienced engineers.

    MCP is a protocol for connecting AI models to tools and data sources. Anthropic's co-creators, David Soria Parra and Justin Spahr-Summers, built it while working on Claude Desktop in mid-2024. They kept copy-pasting code between AI tools and their IDE, recognized this was the same M x N integration problem that plagued code editors before the Language Server Protocol, and decided to solve it the same way.

    The analogy matters. Before LSP, every editor needed a custom integration for every programming language. Ten editors and twenty languages meant two hundred integrations. LSP reduced that to thirty: each editor implements the client once, each language implements the server once, and everything works together. MCP does the same thing for AI. Ten AI applications and one hundred tools no longer require one thousand custom integrations. It is M plus N, not M times N.

    What MCP is not: an agent-to-agent communication protocol, a replacement for function calling, or a complete enterprise AI platform. It is specifically the "USB-C for AI," a standardized connector between models and external capabilities. Understanding this boundary is the first step to using it correctly.

    The protocol defines four primitives. Tools are functions the model can invoke (query a database, send an email, create a file). Resources are data the model can read (documents, database schemas, API responses). Prompts are reusable templates for common interactions. Sampling allows servers to request LLM completions from the client. Everything rides on JSON-RPC 2.0 over either stdio (for local processes) or Streamable HTTP (for remote servers).

    MCP vs Function Calling vs Plugins: The Confusion That Costs Months

    The single most expensive misunderstanding I encounter is teams conflating MCP with function calling or treating it as a replacement for OpenAI plugins. These solve different problems at different layers.

    DimensionFunction CallingOpenAI Plugins (Legacy)MCP
    ScopeApp-localChatGPT-onlyCross-runtime
    StandardizationPer-vendor SDKPer-plugin API specOpen protocol (JSON-RPC)
    Session StateStateless per callOne-off connectionsPersistent sessions
    EcosystemBroad but vendor-lockedDeprecated10,000+ servers, Linux Foundation
    Best ForSimple automations, tight latencyHistorical reference onlyMulti-tool, multi-runtime portability

    Function calling is what happens inside a single application. You register functions with the API, the model returns JSON with a function name and arguments, your code executes and feeds the result back. It is fast, it is simple, and it is tied to whichever vendor's SDK you are using. If you need three tools in one app with tight latency, function calling is the right choice.

    OpenAI plugins were ChatGPT-specific integrations that required bespoke API schemas. They were a walled garden. OpenAI deprecated them and evolved the concept into Actions and eventually embraced MCP itself. Sam Altman announced in March 2025: "People love MCP and we are excited to add support across our products."

    MCP sits at a different layer entirely. It provides cross-runtime portability. Build an MCP server for your internal database once, and it works with Claude, ChatGPT, Cursor, Gemini, VS Code, and any other MCP-compatible client. The server maintains persistent sessions, handles capability negotiation, and provides a standardized interface that survives vendor switches.

    The practical implication: function calling and MCP are complementary, not competitive. A developer can implement a generic call_mcp_tool function within OpenAI's function calling framework. Start with function calling when you need speed and a small surface area. Add MCP when you want portability and shared integrations across multiple runtimes.

    There is also the question of Clawdbot's proprietary skills system, which we covered in our previous deep-dive. Skills are runtime-modifiable extensions that the agent itself can install and configure. They operate at a higher abstraction level than MCP tools, closer to "capabilities" than "functions." The Clawdbot team chose ACP (Agent Client Protocol) over MCP specifically because they needed streaming, persistent sessions, and human-in-the-loop patterns that MCP's original request-response design did not support. The November 2025 MCP spec update (with Tasks and async execution) closes much of this gap, but the architectural decision reveals a real limitation: MCP was designed for tool invocation, not for ongoing agent relationships.

    The Protocol Landscape: MCP, A2A, and Why It Matters

    MCP does not exist in isolation. Two other protocols have emerged to address different layers of the agentic AI stack, and understanding where each fits prevents architectural mistakes.

    ProtocolCreated ByPurposeTransportGovernance
    MCPAnthropic (Nov 2024)Model-to-tool integrationJSON-RPC (stdio, Streamable HTTP)Linux Foundation (AAIF)
    A2AGoogle (Apr 2025)Agent-to-agent coordinationJSON-RPC, SSE, gRPCLinux Foundation
    ACPIBM (Mar 2025)Local-first agent messagingREST, HTTP+SSEMerged into A2A

    MCP is the tool layer. It answers the question: "How does my AI model read this database, call this API, or access this file system?" If LSP is the analogy for MCP, then A2A's analogy is a meeting room protocol. It answers: "How do two autonomous agents from different organizations discover each other, negotiate capabilities, delegate tasks, and report results?"

    Google launched A2A in April 2025 with over fifty technology partners. The core concepts are Agent Cards (JSON metadata that function as a "LinkedIn profile" for agents), structured task lifecycles with progress tracking, multimodal data exchange, and enterprise-grade security with per-task scoped tokens. IBM's ACP started as a local-first alternative optimized for clusters of cooperating agents on a single machine. In August 2025, ACP officially merged into A2A under the Linux Foundation, consolidating the agent-to-agent layer into a single standard.

    The practical takeaway: a production multi-agent system in 2026 likely uses MCP for tool access and A2A for agent coordination. An A2A agent can use MCP internally to access tools before returning results to the A2A client. If you are building a single agent that needs to talk to your database, MCP is what you need. If you are orchestrating multiple agents across departments or organizations, you need A2A on top of MCP.

    Seven Mistakes That Kill Enterprise MCP Deployments

    Mistake 1: Building Servers for Humans Instead of Agents

    This is the most common and most subtle mistake. Developers instinctively design MCP tools the way they would design a REST API for a frontend application, with human-readable error messages, paginated responses, and UI-oriented data structures.

    The consumer of an MCP tool is not a human. It is an LLM. Error messages should provide context the model can reason about, not friendly prose. Responses should be structured for the model's context window, not for a browser. When your tool returns "Error: Invalid date format. Please use YYYY-MM-DD," that is a message designed for a human eye. When it returns a structured error with the received value, expected format, and a description of what the tool needs to retry, that is a message designed for an agent.

    This distinction extends to tool descriptions. The description field is what the model uses to decide when and how to invoke the tool. Vague descriptions like "Manages user data" give the model nothing to work with. Specific descriptions like "Retrieves a user profile by email address. Returns name, role, department, and last login timestamp. Use this when you need to look up information about a specific employee" give the model clear decision criteria.

    Mistake 2: The Monolithic Anti-Pattern

    The MCP specification's own best practices guide warns against this, and teams still do it: building a single mega-server that handles databases, file systems, external APIs, email, and everything else in one process.

    Each MCP server should have one clear, well-defined purpose. A database server. A file system server. A Slack integration server. Single responsibility is not just good engineering practice here, it is a protocol design principle. When you expose too many tools from a single server, you create several cascading problems.

    First, context window bloat. Popular MCP clients do not have sophisticated routing. They inject every tool definition into the LLM's context window. Many clients cap at forty tools. Docker's MCP Catalog review found that focused tool selection improved user adoption by thirty percent.

    Second, security surface expansion. A monolithic server that can read your database and send emails has the exact combination of capabilities that makes prompt injection attacks devastating. Separating concerns means a compromised email server cannot access your database.

    Third, operational complexity. When your monolithic server needs a restart for a database schema change, your email integration goes down too.

    Mistake 3: Mirroring Your API One-to-One

    A related anti-pattern: naively mapping every REST API endpoint to an MCP tool. If your API has forty-seven endpoints, you do not need forty-seven MCP tools. Vercel's engineering team puts it directly: "Think of MCP tools as tailored toolkits that help an AI achieve a particular task, not as API mirrors."

    The better approach is workflow-based tools. Instead of separate tools for get_user, get_user_orders, get_order_details, and get_order_status, create a single investigate_customer_issue tool that accepts a user identifier and returns everything the agent needs to understand the situation. Handle the complete process internally, return conversational updates.

    Mistake 4: Ignoring Security Until Production

    Red Hat said it well: "AI has become a Formula 1 car while security is still on a bicycle." The MCP security landscape is not theoretical. Real attacks have been documented, real data has been exfiltrated, and the fundamental vulnerabilities remain unsolved at the protocol level.

    In July 2025, Knostic scanned the internet and found 1,862 exposed MCP servers. Every single one lacked authentication. One hundred percent. A Cornell University study of 1,899 open-source MCP servers found that 5.5% exhibited tool-poisoning vulnerabilities, where malicious instructions hidden in tool descriptions can hijack agent behavior.

    The documented attacks are sobering. Invariant Labs demonstrated a malicious MCP server silently exfiltrating a user's entire WhatsApp history by hiding instructions in a tool description. A separate attack against the official GitHub MCP server showed that a malicious public issue could hijack an AI assistant, pull data from private repositories, and leak it into a public pull request. In mid-2025, Supabase's Cursor agent, running with privileged access, was exploited through support tickets to exfiltrate sensitive integration tokens.

    Simon Willison, one of the most respected voices in the Python and AI communities, articulated the fundamental problem: any system that combines access to private data, exposure to untrusted content, and the ability to communicate externally is vulnerable to instruction injection through any untrusted input channel. He calls this the "lethal trifecta," and most enterprise MCP deployments have all three conditions.

    The mitigation is not a single fix but a defense-in-depth strategy. Enforce OAuth 2.1 (standardized in the November 2025 spec). Run servers in sandboxed containers. Apply least-privilege principles to every tool. Require human approval for destructive operations. Monitor tool descriptions for changes (to prevent rug-pull attacks where a server modifies its behavior after initial approval). And critically, never bind production MCP servers to public network interfaces.

    Mistake 5: Making Servers Too Smart

    When teams use AI-assisted coding tools to build MCP servers, the LLM instinctively tries to make the server intelligent. It generates code that attempts to understand context, make analytical decisions, and provide ready-to-use insights. This is backwards.

    Effective MCP servers are information multipliers that enhance LLM capabilities rather than replacing them. The intelligence lives in the model, not in the server. Your database MCP server should return raw query results, not pre-analyzed summaries. Your file system server should return file contents, not interpretations. The model is better at analysis than your server code, and your server code is better at reliable data retrieval than the model.

    The goal is not to build mini-LLMs. It is to build the best possible information sources.

    Mistake 6: No Governance Layer

    Directly connecting AI agents to a dozen MCP servers might work for demos. In production, it becomes unmanageable. Without centralized governance, you get shadow MCP servers (teams deploying unapproved integrations), inconsistent authentication, no audit trail of tool invocations, and zero visibility into what agents actually do with tools.

    The industry has responded with MCP gateways, intermediary platforms that provide a single governed entry point for all tool access. Gateways centralize authentication, enforce role-based access controls, maintain audit trails, and catalog approved servers. Solutions like Bifrost, IBM's Context Forge, and Microsoft's Azure-integrated offering are emerging as the enterprise standard.

    If you are deploying MCP beyond a prototype, you need a registry of approved servers, an approval workflow for new ones, and a gateway that sits between your agents and your tools.

    Mistake 7: Treating It as a Technology Project

    Block deployed Goose, their MCP-powered AI agent, to 10,000 employees across fifteen job profiles in eight weeks. Engineers, sales, design, product, customer success, operations. Most employees report saving fifty to seventy-five percent of their time on common tasks. The company's CTO, Dhanji Prasanna, says ninety percent of his code is now written by Goose.

    But Block did not succeed because they wrote good MCP servers. They succeeded because they treated deployment as an organizational transformation. Goose is auto-installed on every laptop. Sixty internal MCP servers come pre-bundled. Weekly education sessions run across the company. Internal communication channels provide support. The tooling meets people where they already work.

    The teams that fail build technically correct MCP servers, announce them in a Slack channel, and wonder why adoption stalls. Enterprise MCP deployment is ten percent protocol implementation and ninety percent change management.

    When Should Your Company Build an MCP Server?

    Not every organization needs custom MCP servers. The decision framework is straightforward.

    Use off-the-shelf servers when common integrations already exist. Slack, Google Drive, Notion, PostgreSQL, GitHub, Stripe: all have well-maintained community servers. If you are running a proof of concept, speed matters more than customization. For standard tools, the operational burden of maintaining your own server outweighs the control benefits.

    Build custom servers when you need to connect to internal systems (your ERP, your proprietary database, your legacy APIs), when regulatory requirements demand full code ownership and audit trails, when domain-specific workflows cannot be served by generic servers, or when trust and security require that you control every line of code that touches business-critical data.

    The hybrid strategy is the emerging enterprise consensus: buy for commodity integrations, build for sensitive or complex systems. A typical enterprise deployment uses community servers for Slack and Google Drive alongside custom servers for internal databases and proprietary tools.

    Development costs for custom MCP servers range from $25,000 to $50,000 for SMB-scale MVPs and $60,000 to $120,000 for production-grade, multi-tenant deployments. Compare this to the traditional integration cost: connecting twenty tools to five AI systems via custom integrations averages $50,000 per integration point and $15,000 annually in maintenance, totaling $1 million upfront and $1.5 million over five years. The MCP approach converts that to roughly $200,000 for twenty servers with dramatically lower maintenance.

    One prerequisite that teams often skip: before deploying MCP servers, you need a solid foundation of governed, scalable integrations between your existing systems. If your data infrastructure is a mess of point-to-point integrations built with various tools and methods, MCP will not fix that. It will amplify the chaos. Get your integration layer right first.

    Leveraging the Open Source Community

    The MCP open source ecosystem is one of the fastest-growing in recent memory. Understanding how to leverage it is a strategic advantage.

    The numbers tell the story. As of late 2025, the ecosystem includes 97 million monthly SDK downloads, over 10,000 active servers, 2,900+ contributors on Discord with 100+ new contributors joining every week, 58 maintainers supporting 9 core and lead maintainers, and official SDKs in Python, TypeScript, C#, Java, Swift, and Kotlin.

    FastMCP deserves special attention. This Python framework was incorporated into the official MCP SDK in 2024 and now powers an estimated seventy percent of MCP servers across all languages. It downloads a million times a day. If you are building an MCP server in Python, FastMCP is the default choice, not a nice-to-have. It abstracts protocol-level complexity (serialization, validation, error handling) so you can focus on business logic. The @mcp.tool decorator turns a Python function into an MCP tool with automatic schema generation, validation, and documentation.

    The governance model matters for enterprise adoption. In December 2025, Anthropic donated MCP to the Agentic AI Foundation under the Linux Foundation. Platinum members include Amazon, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, and OpenAI. This puts MCP on the same governance path as Kubernetes, PyTorch, and Node.js. For enterprises making multi-year infrastructure bets, neutral governance under the Linux Foundation makes MCP a safer investment than any vendor-controlled alternative.

    The Specification Enhancement Proposal (SEP) process, inspired by Python PEPs and Rust RFCs, is how the protocol evolves. Anyone can propose changes. Core and lead maintainers meet bi-weekly to review proposals. The community successfully collaborated on seventeen SEPs in roughly a quarter. If your organization has specific needs that the protocol does not yet address, the SEP process is the mechanism to get them included.

    Practical ways to leverage the community: start by auditing the MCP Registry (launched September 2025, over 2,000 indexed servers by November). Before building anything custom, check if a community server already covers your use case. Contribute back when you build custom servers for common patterns, as well-documented open-source servers see two times higher developer adoption. Participate in Working Groups and Interest Groups to shape the protocol's direction and build relationships with other enterprise adopters. And monitor the security research, because the community has been remarkably transparent about vulnerabilities, and early awareness protects your deployments.

    Executing an MCP Project: A Practitioner's Framework

    Having built and supervised multiple MCP deployments, here is the framework that works.

    Phase 1: Scope and Design

    Identify the systems that benefit most from AI integration. Start with high-impact, low-risk workflows: customer support triage, data pipeline monitoring, document processing, internal knowledge retrieval. Avoid starting with financial systems or anything involving PII.

    Design your server architecture around the single-responsibility principle. Map each server to exactly one external system or capability domain. Plan your tool interfaces as workflow-oriented abstractions, not API mirrors. Write tool descriptions as if you were briefing a new team member: what the tool does, when to use it, what inputs it needs, what output it returns.

    Phase 2: Build with FastMCP

    Use FastMCP as your foundation. Install with pip install fastmcp and start with a minimal server that exposes one or two tools. Test locally using the MCP Inspector before adding complexity. Containerize from day one using Docker. This is not optional for production, and starting with containers avoids the painful migration later. Implement OAuth 2.1 before your first deployment, not after.

    A production MCP server needs health checks (a /health endpoint), structured logging (forty percent reduction in mean time to resolution), Prometheus metrics for observability, and semantic versioning with changelogs.

    Phase 3: Security Review

    Before any deployment, run through the security checklist. Sandbox the server in a container with restricted network access. Enforce least-privilege on every tool (annotate tools as read-only or destructive). Validate all inputs at the boundary. Scan dependencies continuously (forty-eight percent fewer vulnerability incidents with continuous scanning). Never expose servers on public interfaces. Implement human-in-the-loop approval for any operation that modifies data.

    Review the documented attack vectors: prompt injection via tool descriptions, tool poisoning, rug-pull attacks, and the lethal trifecta. If your server has access to private data, processes untrusted content, and can communicate externally, you need additional controls or architectural separation.

    Phase 4: Deploy and Govern

    Deploy behind an MCP gateway for centralized auth, logging, and policy enforcement. Register the server in your internal MCP registry with clear ownership, usage policies, and approval status. Set up monitoring and alerting for tool invocation patterns, error rates, and latency.

    Use Cloudflare Workers for prototyping, Google Cloud Run or AWS ECS for production, and Kubernetes with Helm charts when you need full orchestration control. Remote MCP servers now outnumber local installations, a milestone crossed in late 2025.

    Phase 5: Organizational Rollout

    This is where most projects succeed or fail. Pre-install and auto-update the agent on employee machines (Block's approach). Bundle approved MCP servers into the default configuration so new users get value immediately. Run weekly education sessions. Create internal communication channels for support. Celebrate early wins publicly. The easier you make it to start, the faster adoption takes off.

    Enabling Your Engineers: The Transition from SWE to AI-Ready

    Gartner projects that eighty percent of the engineering workforce will need to upskill for AI by 2027. AI job postings grew nearly two hundred times between 2021 and 2025, from fifty-five listings to nearly ten thousand. By 2026, over ninety percent of organizations will face IT skills shortages, costing an estimated $5.5 trillion according to IDC.

    The good news: traditional software engineers are closer to AI-ready than most people think. The transition does not require a PhD in machine learning or years of retraining. It requires a mindset shift and targeted skill development.

    The mindset shift is the hardest part. McKinsey consistently shows forty to sixty percent productivity gains when AI adoption is paired with workforce readiness, and near-zero gains when it is not. The technology is not the barrier. The willingness to rethink how work gets done is the barrier.

    Software engineers already have the foundational skills: system design, API integration, debugging, testing, deployment, and infrastructure management. The gap is specific to AI integration patterns. LLM integration and application building is the primary market demand, not training models from scratch. MLOps and cloud AI platforms (AWS SageMaker, Google Cloud AI) are extensions of existing DevOps knowledge. Containerization and CI/CD for ML are the same Docker and Kubernetes skills applied to a new domain. Prompt engineering and evaluation are genuinely new skills, but they build on the engineering discipline of writing clear specifications and measuring outcomes.

    For MCP specifically, the learning path is concrete. An experienced Python developer can build a functional MCP server with FastMCP in an afternoon. The protocol concepts map directly to familiar patterns: servers are just API servers, tools are just function definitions with schemas, resources are just data endpoints, and the JSON-RPC transport is standard RPC. The complexity is not in the protocol. It is in understanding how LLMs consume and reason about the tools you expose.

    At Vindler, we approach this transition through what we call "No Vibe Coding." We do not put junior developers in front of ChatGPT and call it an AI team. We pair senior engineers, people who understand system architecture, security, and production reliability, with AI tools and frameworks. Every line of code is understood, reviewed, and intentional. The result is AI-augmented engineering where the human expertise is amplified, not replaced.

    The practical onboarding strategy that works: start engineers with a single MCP server for a system they already know well. Their internal database, their deployment pipeline, their monitoring stack. The familiarity with the underlying system removes one variable, letting them focus entirely on learning the MCP patterns. Once they have built one server, the second is dramatically faster, and the third is routine.

    Block's experience validates this approach. Their engineering team built sixty internal MCP servers. The first few were slow, requiring careful design and extensive testing. By the twentieth server, teams were shipping new integrations in days. The compound learning effect is real and measurable.

    The Vindler Perspective

    We have been building multi-agent systems with LangGraph, deploying voice assistants with LiveKit, and running production AI infrastructure for the past year. MCP fits naturally into our stack because it solves a real problem we encounter on every engagement: connecting AI capabilities to the specific tools and data sources each client needs.

    The protocol is mature enough for production use. The security risks are real but manageable with proper architecture. The open-source ecosystem provides an enormous head start. And the organizational challenges, training engineers, managing change, building governance, are where experienced consultancies deliver the most value.

    If you are evaluating MCP for your enterprise, the question is no longer whether to adopt it. The protocol has won. The question is whether you build the deployment correctly: secure by default, governed from day one, and supported by engineers who understand every line of code running in production.

    That is what we do.

    The Vindler team builds production AI systems for enterprises. If you are planning an MCP deployment and want engineers who understand the protocol's capabilities and limitations from hands-on experience, reach out at vindler.solutions.

    Share:
    Carlos from Vindler

    Carlos from Vindler

    Founder and AI Engineering Lead at Vindler. Passionate about building intelligent systems that solve real-world problems. When I'm not coding, I'm exploring the latest in AI research and helping teams leverage AWS to scale their applications.

    Get in Touch

    Subscribe to our newsletter

    Get notified when we publish new posts on AI development, AWS, and software engineering.