Careeroza
Real World Example
Where MCP Is Used
- Developer tools: Claude Code, VS Code and Cursor connect to GitHub, Jira/Confluence (Atlassian), Sentry and database MCP servers.
- SaaS companies (for example GitHub, Notion, Atlassian, Stripe and Razorpay) publish MCP servers so any AI assistant can use their APIs.
- Inside companies: one internal MCP server for orders, CRM or HR data, shared by every team's assistant.
ShopEase Support Desk Server over HTTP
ShopEase runs one MCP server for its support team. Support agents use it from Claude Desktop; the customer chatbot uses the same server from FastAPI.
# support_mcp.py - shared, read-mostly MCP server for ShopEase support
import os
import psycopg
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("shopease-support")
DB_URL = os.environ["SUPPORT_DB_URL"] # read-only database user
@mcp.tool()
def recent_orders(customer_phone: str, limit: int = 5) -> list[dict]:
"""List a customer's most recent orders. Use when the customer gives a phone number."""
with psycopg.connect(DB_URL) as conn:
rows = conn.execute(
"SELECT id, status, total_inr FROM orders WHERE phone = %s ORDER BY created_at DESC LIMIT %s",
(customer_phone, min(limit, 20)),
).fetchall()
return [{"order_id": r[0], "status": r[1], "total_inr": r[2]} for r in rows]
@mcp.resource("policy://returns")
def returns_policy() -> str:
"""The current ShopEase returns policy."""
return open("policies/returns.md", encoding="utf-8").read()
if __name__ == "__main__":
mcp.run(transport="streamable-http")Run it
python support_mcp.pyExample output
INFO: Started server process [4182] INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
Design Notes
- Parameterised SQL and a cap on
limit: the model's input is untrusted. - Read-only database role; write actions (refunds) stay in a separate, approval-gated service.
- Put the HTTP server behind authentication (OAuth or an API gateway) before exposing it outside the office network.