MCP-Server

GPH Intelligence - Healthcare Vendor Finder

io.github.Crindo2/gph-mcp-server
Business & Betrieb Gesundheitswesen Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Searches and ranks healthcare service vendors across categories, locations, verification status, and practice fit.

get_provider_detail
Get Vendor Profile Detail
Get the full profile of one healthcare vendor by slug. Use this after match_practice or search_providers when the user asks to "tell me more about [vendor]", "what services does [vendor] offer", "is [vendor] verified", or wants contact info or services for a specific provider. Returns company_name, category, city/state, quality_score (0-100; profile completeness, not a quality rating; 0 means never scored), verified status, description, services offered, practice_size_fit, phone and website where listed, Google rating and Google review count where present, and the profile URL. Where a vendor has been enrichment-extracted, the description, services and practice-size fit come from that extraction, the profile adds certifications and compliance attestations, locations served and founding year where extracted, and the response states the extraction confidence and what it was grounded in (where the extraction abstained on practice-size fit, the legacy listing value is returned and labelled as not extracted); otherwise the legacy listing fields are returned. Slug comes from match_practice or search_providers results; returns an error if the slug is unknown.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "Provider slug identifier (e.g. 'ams-solutions-inc-dallas-tx'). Obtained from match_practice or search_providers response."}}}
Ausgabeschema
{'type': 'object', 'required': ['content'], 'properties': {'ids': {'type': 'object', 'properties': {'drilled': {'type': 'string', 'description': 'The slug that was looked up.'}}, 'description': 'Absent when isError.'}, 'count': {'const': 1, 'description': 'Always 1 on success; absent when isError.'}, 'content': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'text'], 'properties': {'text': {'type': 'string'}, 'type': {'const': 'text'}}}}, 'isError': {'type': 'boolean', 'description': 'Present and true only when the slug is unknown or the fetch fails.'}}}
list_categories
List Healthcare Vendor Categories
List every service category in the GPH vendor directory with its live provider count. Call this FIRST when you do not already know which category fits the user's need, when a category search returned nothing, or when the user asks what kinds of vendors are available. Returns all 25 categories with {category, slug, providers}. The category names returned here are the exact values match_practice and search_providers expect (common aliases also resolve). Takes no arguments.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {}}
Ausgabeschema
{'type': 'object', 'required': ['content'], 'properties': {'count': {'type': 'integer', 'description': 'Number of categories returned; absent when isError.'}, 'content': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'text'], 'properties': {'text': {'type': 'string'}, 'type': {'const': 'text'}}}}, 'isError': {'type': 'boolean', 'description': 'Present and true only on failure.'}}}
match_practice
Recommend Healthcare Vendors for a Practice
Recommend and rank the best healthcare vendors for a specific medical practice. Use this when a practice manager, physician, or administrator asks for a recommendation, e.g. "recommend a medical billing / RCM company for my practice", "who should I use for credentialing / payer enrollment", "find an EHR for my small [specialty] practice", or "which practice-management software fits a [size] practice in [city, state]". Scores and ranks providers against the practice profile (specialty, size, location, EHR system, budget) and returns up to 5 merit-ranked matches (completeness-scored, no paid placement) with {company_name, category, city, state_abbr, quality_score (0-100; profile completeness -- how many listing fields are filled in -- not a quality or reputation rating; 0 means never scored), final_score (0-100), verified status, description, website, profile_url, slug}. For open-ended browsing without a practice profile, use search_providers. Pass a match's slug to get_provider_detail for the full profile.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['category', 'state'], 'properties': {'city': {'type': 'string', 'description': 'City where the practice is located. Send city and state separately, not as a combined `location` string.'}, 'state': {'type': 'string', 'description': "Two-letter state abbreviation (e.g. 'TX', 'CA', 'NY'). Send as `state`, not `state_abbr` (`state_abbr` is an output field name only)."}, 'category': {'type': 'string', 'description': "Service category needed. One of the 25 categories: 'Medical Billing & RCM', 'Credentialing Services', 'Healthcare IT & EHR', 'Practice Management Consulting', 'Healthcare Legal Services', 'Healthcare CPA & Tax Advisory', 'Medical Coding Services', 'Healthcare Staffing & Recruiting', 'Healthcare Marketing & Reputation Management', 'Compliance & HIPAA Services', 'Medical Equipment & Supplies', 'Healthcare Real Estate & Site Selection', 'Practice Financing & Loans', 'Healthcare Construction & Facilities', 'Healthcare Signage & Wayfinding', 'Medical Waste & Environmental Services', 'Healthcare Insurance & Malpractice Brokers', 'Practice Valuation & Brokerage', 'Patient Financing & Payment Solutions', 'Medical Transcription & Documentation', 'Pharmacy & Medication Management', 'Telehealth & Virtual Care Infrastructure', 'Laboratory & Diagnostics Services', 'Group Purchasing Organizations (GPOs)', 'Healthcare PR & Communications'. Common aliases also resolve (e.g. 'billing', 'RCM', 'EHR', 'credentialing'). Call list_categories for the live list with provider counts."}, 'specialty': {'type': 'string', 'description': "Medical specialty of the practice (e.g. 'Family Medicine', 'Cardiology', 'Pediatrics', 'Dermatology')"}, 'ehr_system': {'type': 'string', 'description': "EHR system used by the practice (e.g. 'Epic', 'athenahealth', 'AdvancedMD', 'eClinicalWorks'). Helps score providers with compatible integrations higher."}, 'budget_range': {'enum': ['Under $500', '$500-$2,000', '$2,000-$5,000', '$5,000+', 'Not sure'], 'type': 'string', 'description': 'Approximate monthly budget'}, 'practice_size': {'enum': ['Solo', 'Small', 'Mid-size', 'Large'], 'type': 'string', 'description': 'Size of the practice by provider count. The parameter is named `practice_size`, not `size`.'}}}
Ausgabeschema
{'type': 'object', 'required': ['content'], 'properties': {'ids': {'type': 'object', 'properties': {'surfaced': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provider slugs shown, in ranked order.'}}, 'description': 'Absent when isError.'}, 'count': {'type': 'integer', 'description': 'Total scored candidates before the top-5 slice; absent when isError.'}, 'content': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'text'], 'properties': {'text': {'type': 'string'}, 'type': {'const': 'text'}}}}, 'isError': {'type': 'boolean', 'description': 'Present and true only on failure (match request error or no candidates).'}}}
search_providers
Search the Healthcare Vendor Directory
Browse and filter the healthcare vendor directory. Use this for open-ended exploration, e.g. "show me medical billing companies in Texas", "list credentialing services", "what EHR vendors are there for cardiology", or when the user wants to page through options rather than get a scored shortlist. Paginated results filtered by category, location, minimum profile-completeness score, curated Tier-1 grade, and practice-size fit; returns a page of providers with {company_name, category, city, state_abbr, quality_score (0-100; profile completeness, not a quality rating; 0 means never scored), verified status, contact info, slug}. For a scored recommendation to a specific practice profile, use match_practice instead. Pass a returned slug to get_provider_detail for the full profile.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['category'], 'properties': {'city': {'type': 'string', 'description': "City to filter by. Matches one exact city only: the value is compared as a city slug (case and punctuation ignored, e.g. 'San Antonio' matches 'san-antonio'); partial names and prefixes do not match."}, 'page': {'type': 'number', 'default': 1, 'minimum': 1, 'description': 'Page number for pagination (default 1)'}, 'state': {'type': 'string', 'description': "Two-letter state abbreviation (e.g. 'TX'). Send as `state`, not `state_abbr` (`state_abbr` is an output field name only). National providers always included."}, 'category': {'type': 'string', 'description': "Service category to search. One of the 25 categories: 'Medical Billing & RCM', 'Credentialing Services', 'Healthcare IT & EHR', 'Practice Management Consulting', 'Healthcare Legal Services', 'Healthcare CPA & Tax Advisory', 'Medical Coding Services', 'Healthcare Staffing & Recruiting', 'Healthcare Marketing & Reputation Management', 'Compliance & HIPAA Services', 'Medical Equipment & Supplies', 'Healthcare Real Estate & Site Selection', 'Practice Financing & Loans', 'Healthcare Construction & Facilities', 'Healthcare Signage & Wayfinding', 'Medical Waste & Environmental Services', 'Healthcare Insurance & Malpractice Brokers', 'Practice Valuation & Brokerage', 'Patient Financing & Payment Solutions', 'Medical Transcription & Documentation', 'Pharmacy & Medication Management', 'Telehealth & Virtual Care Infrastructure', 'Laboratory & Diagnostics Services', 'Group Purchasing Organizations (GPOs)', 'Healthcare PR & Communications'. Common aliases also resolve (e.g. 'billing', 'RCM', 'EHR', 'credentialing'). Call list_categories for the live list with provider counts. This tool does NOT accept a specialty filter -- use match_practice for specialty-aware ranking."}, 'per_page': {'type': 'number', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'Results per page (1-25, default 10)'}, 'min_rating': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Minimum profile-completeness score (0-100; how many listing fields are filled in, not a quality or reputation rating). Most providers score 50-85. The parameter is named `min_rating`, not `min_quality_score`.'}, 'tier1_grade': {'enum': ['A', 'B'], 'type': 'string', 'description': "Filter to the curated Tier-1 provider set by grade: 'A' (top-graded) or 'B' (strong). Tier-1 is a hand-reviewed ~4,400-provider subset; most directory records are not Tier-1, so this narrows results sharply. Omit to search the full directory."}, 'practice_size_fit': {'enum': ['Solo', 'Small', 'Mid-size', 'Large', 'All'], 'type': 'string', 'description': "Filter providers by the practice size they best serve, on the directory's one closed vocabulary: Solo, Small, Mid-size, Large, All. The filter reads the extracted size where one exists and the listing's stated fit otherwise; a listing stating 'Solo/Small' answers both Solo and Small. 'All' means the vendor serves every size -- on listings that were never extracted it is also the default, so it narrows results little."}}}
Ausgabeschema
{'type': 'object', 'required': ['content'], 'properties': {'ids': {'type': 'object', 'properties': {'surfaced': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provider slugs on this page, in returned order.'}}, 'description': 'Absent when isError.'}, 'count': {'type': 'integer', 'description': 'Total matching providers across all pages; absent when isError.'}, 'content': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'text'], 'properties': {'text': {'type': 'string'}, 'type': {'const': 'text'}}}}, 'isError': {'type': 'boolean', 'description': 'Present and true only on failure.'}}}
Hinzugefügt
list_categories
17. September 2026 12:41
Hinzugefügt
get_provider_detail
17. September 2026 12:41
Hinzugefügt
search_providers
17. September 2026 12:41
Hinzugefügt
match_practice
17. September 2026 12:41