---
title: "Discussion on \"Building a Customer-Facing MCP Server: What Do You Actually Need?\" | Hashnode"
description: "Discussion on \"Building a Customer-Facing MCP Server: What Do You Actually Need?\". In the previous article, we looked at how MCP works behind the scenes and the role played by clients, servers, tools, resources, and prompts.\nThis time, let's look at a specific use case: building a c"
url: "https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c"
---

[Feed](https://hashnode.com/feed) /

Discussion

# [Building a Customer-Facing MCP Server: What Do You Actually Need?](https://codelikeawoman.com/building-a-customer-facing-mcp-server-what-do-you-actually-need?utm_source=hashnode&utm_medium=feed)

In the previous article, we looked at how MCP works behind the scenes and the role played by clients, servers, tools, resources, and prompts. This time, let's look at a specific use case: building a c

Jul 3 · 7 min read · codelikeawoman.com  
Read the article

-   [#apis](https://hashnode.com/tag/apis)
-   [#mcp](https://hashnode.com/tag/mcp)
-   [#api-design](https://hashnode.com/tag/api-design)
-   [#ai](https://hashnode.com/tag/ai)
-   [#ai-agents](https://hashnode.com/tag/ai-agents)

## Written by

[Mirna De Jesus Cambero](https://hashnode.com/@mirnadjc)

@mirnadjc · Dominican Republic

  
[View profile](https://hashnode.com/@mirnadjc)

Coding, Debugging, Practicing

I'm a software engineer with over 15 years of experience. While my background is primarily in backend engineering, my work today spans cloud infrastructure, AI integrations, and the systems that support modern software applications. I started this blog to share what I’ve learned in a simplified, approachable way — and to add value for fellow developers. Though I’m an introvert, I’ve chosen to put myself out there to encourage more women to explore and thrive in tech. I believe that by sharing what we know, we learn twice as much — that’s precisely why I’m here.

## Responses 3

Markdown supported · ⌘↵ to post

[Mirna De Jesus Cambero](https://hashnode.com/@mirnadjc)

[Jul 6](https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c/comment/6a4af4f2686f49c6dcc4fed9)

Totally agree with you. The AI client doesn't know your data model—that's exactly why good tool descriptions and the right context matter so much. AI is smart, but the quality of the outcome is often only as good as the clarity of the input and context you provide.

I couldn't agree more about the stdio part as well. I got my server working with stdio pretty quickly, and it was a great way to get my feet wet. But I soon realized it was really just a prototype, and that building a production-ready MCP server meant moving to HTTP to support multiple users and proper session handling.

Thanks for stopping by and taking the time to leave such a thoughtful comment!

[Opportunity Biz](https://hashnode.com/@opptybiz)

[Jul 6](https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c/comment/6a4af4f2686f49c6dcc4fed9#reply-6a4b821f4baf028a0efbeee6)

The session isolation point is where most production issues surface — the typical trap is passing auth context at server init instead of per-request, so the first time two users hit the server concurrently, one session's context bleeds into the other. Worth calling out explicitly in a follow-up article if you cover the multi-tenant path in more depth.

[Opportunity Biz](https://hashnode.com/@opptybiz)

[Jul 4](https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c/comment/6a48e4c4047b24be0febcbc5)

The "capabilities over API mirror" framing is the right mental model, and it takes a few embarrassing false starts before it clicks. The moment it clicked for me was realizing the AI client doesn't know your data model — it only knows what the tool description says. A tool called get\_documents with a vague description never gets called correctly; find\_invoices\_by\_vendor\_and\_date\_range with a two-line description that includes the expected output format hits on the first try, consistently.

The stdio→HTTP migration point is also underrated — most tutorials skip it because they don't model concurrent connections or session state. For multi-tenant setups, per-session context isolation is the piece most examples handle poorly or not at all.
