
Jonah Zander
Engineer
Building the Bridges Your AI Needs
How we built a custom AI tool for Google Reviews, and why the same pattern can change how healthcare and life science businesses operate.
Your team probably already uses ChatGPT or Claude. Maybe daily. But you’ve noticed the gap: you ask about a specific patient scheduling system, a CRM, or an insurance portal, and the AI gives you a polished answer about nothing in particular.
That’s not an intelligence problem. It’s an access problem.
AI models today are like a brilliant new hire on their first day. They want to help, but they don’t have the login to your systems. They can’t look up a patient record, pull claims data, or check what your customers are saying on Google. They’re locked out of the world they need to work in.
So we built a bridge.
What Is an MCP Server?
MCP, the Model Context Protocol, is an open standard that lets AI models use custom tools. Think of it like giving your AI assistant a set of specialized apps on its phone. One app looks up Google Reviews. Another checks insurance eligibility. A third pulls data from your CRM.
Anthropic introduced MCP in November 2024. Since then, adoption has moved fast. OpenAI adopted the standard in March 2025, and by December 2025, Anthropic donated MCP to the Agentic AI Foundation under the Linux Foundation, co-founded with Block and OpenAI. It’s becoming the USB-C connector for AI: one protocol, any client, any tool.
Here’s how it works:
1. Define tools as functions with clear inputs and outputs, like “given a company URL, find all its Google Maps locations.”
2. Wrap them in a server, a lightweight web service that speaks MCP.
3. Any compatible AI client (Claude, Cursor, ChatGPT, or your own application) discovers the tools and calls them as needed.
The AI decides when to use a tool based on the conversation. You give it capabilities. It applies them when they are relevant.
The Architecture
How MCP Connects AI to Your Systems
AI Client
Claude
ChatGPT
Cursor
Your App
MCP Server
Tool: search_places()
Tool: fetch_reviews()
Tool: get_overview()
Data Sources
Google Maps API
Your CRM
Insurance Portal
EHR System
You define tools. The AI decides when to use them.
MCP sits between AI clients and your data sources. You define tools once, and any compatible AI client can use them.
Say you manage a group of healthcare practices across multiple locations. Keeping a pulse on patient sentiment is a headache. Google Reviews are scattered across dozens of listings. Most AI models, when asked “what are the reviews like for our clinics?”, will pull up maybe five recent ones from a single location and call it a day. That isn’t useful when you’re trying to spot patterns across ten or twenty sites. The operational value of getting that right comes through clearly in Independent for 38 Years and 5 Stars on Google, where Dr. Robert Layman of Pinnacle Eye Group explains how reputation quality directly shapes practice growth.
With the right tool, you can ask your AI to “pull the reviews across all our locations and summarize the biggest complaints patients are having,” and it actually can. It calls the search tool to find every location, fetches reviews sorted by rating, and gives you a useful summary instead of five reviews from one place.
What We Built
One example is an MCP server we built for Google Reviews. It lets AI agents look up and analyze reviews for any business. It can find all Google Maps listings for a company given its URL, fetch reviews sorted by best, worst, newest, or most relevant, and generate an overview across all locations with rating distributions.
A tool definition can be surprisingly short:
@mcp.tool()
async def search_company_places(
company_url: str,
company_name: str | None = None,
) -> str:
"""Search for all Google Maps / Google Business
locations associated with a company.
Returns a formatted overview of discovered places
including names, addresses, ratings,
and review counts.
"""
results = await maps_client.search(
query=company_name or company_url,
type="establishment",
)
return format_places_overview(results)This is one of the simpler tool definitions, but there’s a lot packed into it. The AI doesn’t just see the docstring. It receives the full schema: parameter names, types, descriptions, defaults. It uses all of that to decide which tool to call and how to fill in the arguments. You write a function with good annotations, and the AI figures out when and how to use it.
The function definition is the easy part.
The Engineering That Makes It Work
Behind that clean function signature, there’s a lot of messy work. And some scars.
The vendor I wanted to use didn’t work. When I started building this, I went with SearchAPI because it was significantly cheaper. That lasted until I noticed the same request would return different results on every call. I’d query reviews for a location, get nothing back, and have no way to know if the place genuinely had no reviews or if the API just failed silently. This happened often enough that I couldn’t trust the data. So I switched to SerpAPI, which costs more but returns consistent results. The code is built so that if SearchAPI improves (or a cheaper alternative shows up), swapping back is a config change, not a rewrite.
You don’t want to pay for the same data twice. Every API call costs money. If someone asks about the same company tomorrow, we shouldn’t have to hit the API again. So we cache results in PostgreSQL. Each batch of fetched data gets stored as a versioned snapshot. Same question twice, one API bill. Caching dropped our cost for repeat queries to zero.
Most of the time you don’t need every review. Each page of reviews from the API is a separate billable request, and a busy clinic might have 800 reviews across years of operation. Fetching all of them takes 15 seconds and 8 API calls. A subset of the best, worst, and newest usually tells you what you need to know. So we built two tools: one that gives a quick overview with a sensible default, and one that gives the AI full control over exactly how many reviews to fetch. The AI picks the right one depending on what you’re asking for.
APIs go down. External services fail and hit rate limits. The system retries automatically with increasing wait times, so a temporary outage becomes a brief delay rather than a broken response.
Why This Matters for Healthcare
Google Reviews is just one example. The pattern works anywhere a human currently looks something up in a system.
Think about what your team does every day. Imagine an AI tool that checks open appointment slots across providers and suggests optimal booking. Or one that verifies insurance coverage before a patient walks in the door. Your CRM could become something the AI actually reads before a call, pulling client history so your team shows up prepared. Case management, provider credentialing, license expirations. All of it follows the same idea.
The Pattern Repeats
One Architecture, Many Tools
review_monitor()
"Summarize patient complaints across all our clinics"
Fetches reviews from 20 locations, identifies patterns
appointment_slots()
"Find open slots for Dr. Chen this Thursday"
Checks scheduling system, returns available times
verify_coverage()
"Is this patient covered for an MRI at our facility?"
Queries insurance portal, returns eligibility in real time
crm_lookup()
"Pull the history on Acme Health before my call"
Reads CRM records, surfaces key contacts and deal stage
credential_check()
"Which provider licenses expire in the next 60 days?"
Scans credentialing database, returns upcoming expirations
claims_analysis()
"What are our top cost drivers this quarter?"
Analyzes claims data, ranks by total spend and trend
If a person copies data from one system to answer a question in another, that is a candidate for an MCP tool.
Each tool follows the same pattern: define the function, connect it to the data source, wrap it in an MCP server, let the AI call it when relevant.
Each of these follows the same architecture: define the tool, connect it to the data source, wrap it in an MCP server, let the AI call it when relevant.
Right now, the hard part isn’t the AI itself. It’s connecting it to the messy, fragmented systems where actual work happens. The scheduling platforms, the insurance portals, the homegrown databases that healthcare runs on. When your AI can instantly check schedule availability and verify insurance via MCP, you aren’t just saving clicks. You’re reducing front-desk administrative overhead and preventing leaky revenue from unverified claims. That same workflow pressure shows up in Leveraging AI for Prior Auth & Coding in Ambulatory Surgical Centers, where Dr. Gregory Hobbs of Milagro AI lays out how automation can remove bottlenecks in prior auth and coding.
MCP servers are how you build that connection.
Where to Start
If you’re running or investing in a healthcare or life sciences business, here’s a practical starting point.
Look at the most repetitive “lookup” tasks your team does. Patient eligibility. Appointment availability. Review sentiment. Claims status. Whatever it is, if a person is copying data from one system to answer a question in another, that’s a candidate for an MCP tool.
You don’t need to rebuild your tech stack. One server with one or two tools is enough to prove the value. Build clean interfaces, cache results, abstract your vendors. The work compounds.
The Model Context Protocol is open and growing. You can explore the specification at modelcontextprotocol.io.
We build these tools with the same rigor we bring to clinical data integrations. If you’re scaling a healthcare platform and want to explore what custom AI tools could do for your operations, reach out.
Cade Newsletter
Research that moves before the market does.
Original analysis on healthcare strategy, AI adoption, and market dynamics. Delivered when we publish.
No spam. Unsubscribe anytime.
