ezyVet MCP
# ezyVet MCP
**Model Context Protocol (MCP) server for [ezyVet](https://www.ezyvet.com/)** — cloud-based veterinary practice management software.
Talk to ezyVet from Claude, Cursor, or any MCP client. Read animals (patients), contacts (owners), appointments, consults, invoices. Create new records. Tokens are OAuth2 client-credentials with 12-hour TTL, auto-refreshed.
Built against the [ezyVet REST API](https://developers.ezyvet.com/). No existing MCP for ezyVet — this is the first.
## What you can do with it
```
You: "Find dog 'Rex' for owner Sarah Johnson and show upcoming appointments."
Claude: *find_contacts + find_animals + find_appointments → summary*
You: "Book a vaccination appointment for animal 4523 next Tuesday at 10am."
Claude: *list_appointment_types, then create_appointment with right type_id*
You: "Open a new consult for the cat we just saw — note the diagnosis."
Claude: *create_consult with animal_id, vet_id, notes*
You: "What invoices does contact 892 have from this month?"
Claude: *find_invoices with contact_id + date range*
```
## Install
```bash
pip install -e .
```
## Configure
Register as an [ezyVet integration partner](https://www.ezyvet.com/become-a-partner) to get your credentials.
```bash
export EZYVET_PARTNER_ID="..."
export EZYVET_CLIENT_ID="..."
export EZYVET_CLIENT_SECRET="..."
export EZYVET_SITE_UID="..."
export EZYVET_SCOPE="read-animal read-contact read-appointment read-consult read-invoice read-user"
```
## Use with Claude Desktop
```json
{
"mcpServers": {
"ezyvet_mcp": {
"command": "ezyvet_mcp",
"env": {
"EZYVET_PARTNER_ID": "...",
"EZYVET_CLIENT_ID": "...",
"EZYVET_CLIENT_SECRET": "...",
"EZYVET_SITE_UID": "...",
"EZYVET_SCOPE": "..."
}
}
}
}
```
## Tools
| Tool | Type | What it does |
| --- | --- | --- |
| `health_check` | Diagnostic | Mints a token + lists users |
| `get_animal` | Read | Single animal (patient) |
| `find_animals` | Read | Search animals |
| `create_animal` | Write | New patient |
| `update_animal` | Write | Patch patient fields |
| `get_contact` | Read | Single contact (owner) |
| `find_contacts` | Read | Search owners |
| `create_contact` | Write | New owner |
| `find_appointments` | Read | List appointments |
| `create_appointment` | Write | Book appointment |
| `find_consults` | Read | List visits |
| `create_consult` | Write | Open visit |
| `find_invoices` | Read | List invoices |
| `list_species` | Read | Reference: species |
| `list_breeds` | Read | Reference: breeds |
| `list_appointment_types` | Read | Reference: appointment types |
| `list_users` | Read | Reference: practice staff |
## API coverage
Maps MCP tools to ezyVet's 216-endpoint REST API. Full docs: <https://developers.ezyvet.com/>
## Rate limits
ezyVet throttles most endpoints at 60 req/min and globally at 180 req/min per database. The client auto-retries 401s (token refresh) but doesn't retry 429s — slow down on your end if you hit them.
## Development
```bash
pip install -e ".[dev]"
pytest
ezyvet_mcp
```
---
## Need a custom MCP for your SaaS?
I build production-grade MCP servers for vertical SaaS — insurance, dental, veterinary, legal, property mgmt, home services. Typical engagement: 2-4 weeks, $25K-$120K. Source-owned, MIT-licensed, no vendor lock-in.
See [sanjibani/mcp-services](https://github.com/sanjibani/mcp-services) or email sanjibani@users.noreply.github.com.
---
*Ships in the [sanjibani vertical-MCP portfolio](https://github.com/sanjibani?q=-mcp) — see also [hawksoft-mcp](https://github.com/sanjibani/hawksoft-mcp), [open-dental-mcp](https://github.com/sanjibani/open-dental-mcp), [ezyvet-mcp](https://github.com/sanjibani/ezyvet-mcp), [jobber-mcp](https://github.com/sanjibani/jobber-mcp), [paid-skills](https://github.com/sanjibani/paid-skills), [mcp-vertical-template](https://github.com/sanjibani/mcp-vertical-template).*
---
MIT.
## Acknowledgements
- ezyVet for the public REST API + OAuth flow
- Built using [mcp-vertical-template](https://github.com/sanjibani/mcp-vertical-template)
- Inspired by [sanjibani/hawksoft-mcp](https://github.com/sanjibani/hawksoft-mcp) and [sanjibani/open-dental-mcp](https://github.com/sanjibani/open-dental-mcp) (same template pattern)
## See also
- [ezyVet API docs](https://developers.ezyvet.com/)
- [ezyVet integration partner program](https://www.ezyvet.com/become-a-partner)
- [Model Context Protocol](https://modelcontextprotocol.io)
- [More vertical MCPs from sanjibani](https://github.com/sanjibani?q=-mcp)TDQS
Scored across 17 tools
Each tool targets a distinct resource-action pair (e.g., create_animal, find_animals, get_animal, update_animal), with no overlapping purposes. All tools are clearly separable.
All tool names follow a consistent verb_noun pattern in snake_case. Create/find/get/update for nouns, and list_ for type enumerations, with no mixing of styles.
17 tools is well-scoped for a veterinary practice management server. Each tool serves a distinct purpose, covering animals, appointments, consults, contacts, invoices, and administrative lists without unnecessary bloat.
The set covers core CRUD for animals but misses update and delete for appointments, consults, contacts, and invoices. Creation and reading are well-covered, but missing mutability options create gaps for typical workflows.