The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Rescuedogs MCP Server listing page.


MCP server for discovering rescue dogs from European and UK organizations. Search, filter, and get detailed profiles of dogs available for adoption.
No install. Add the endpoint as a custom connector or remote MCP server:
It speaks MCP streamable HTTP, needs no authentication, and is read-only.
Then add it to your client's MCP config. For Claude Desktop that is
~/Library/Application Support/Claude/claude_desktop_config.json on macOS or
%APPDATA%\Claude\claude_desktop_config.json on Windows:
Search for rescue dogs with comprehensive filtering.
Parameters:
query - Free-text searchbreed - Filter by breed namebreed_group - Filter by breed group: Designer/Hybrid, Guardian, Herding, Hound, Mixed, Non-Sporting, Sporting, Terrier, Toy, Workingsize - Tiny, Small, Medium, Large, XLargeage_category - puppy, young, adult, seniorsex - male, femaleenergy_level - low, medium, high, very_highexperience_level - first_time_ok, some_experience, experienced_onlyhome_type - apartment_ok, house_preferred, house_requiredadoptable_to_country - ISO country code (GB, IE, FR, DE)organization_id - Restrict to one rescue (see rescuedogs_list_organizations)good_with_kids, good_with_dogs, good_with_cats - booleanlimit (1-50, default 10), offset - paginationinclude_images - Include dog photos (default: false, max 5 dogs)image_preset - thumbnail (200x200) or medium (400x400)response_format - markdown (default) or jsonGet full details for a specific dog including AI-generated personality profile.
Parameters:
slug - Dog's URL slug (required)include_image - Include photo (default: true)image_preset - thumbnail or medium (default)response_format - markdown (default) or jsonGet available breeds with counts and statistics.
Parameters:
breed_group - Filter by breed group (see the list under rescuedogs_search_dogs)min_count - Minimum dogs availablelimit - Number of breeds to return (1-100, default 20)response_format - markdown (default) or jsonGet overall platform statistics.
Parameters:
response_format - markdown (default) or jsonGet available filter options with counts based on current filters.
Parameters:
current_filters - Object with any of breed, size, age_category, sex,
adoptable_to_countryresponse_format - markdown (default) or jsonList rescue organizations with their statistics.
Parameters:
country - Filter by ISO country codeactive_only - Only active organizations (default: true)limit - Number to return (1-50, default 20)response_format - markdown (default) or jsonFind dogs matching your lifestyle preferences.
Parameters:
living_situation - apartment, house_small_garden, house_large_garden, ruralactivity_level - sedentary, moderate, active, very_activeexperience - first_time, some, experiencedhas_children, has_other_dogs, has_cats - boolean. Set to filter; omit to
not filter on it at alladoptable_to_country - ISO country codelimit - Number of matches (1-20, default 5)include_images - Include dog photos (default: false)response_format - markdown (default) or jsonGet information about the rescue dog adoption process.
Parameters:
topic - overview, transport, fees, requirements, timelinecountry - ISO code for country-specific infoDogs are listed by European and UK rescue organizations. They are currently located in the UK, Germany, Serbia, Bulgaria, Bosnia, Turkey and Cyprus, and most rescues ship across the EU, EEA and UK.
US, Canadian and Australian rescues are not covered.
Use rescuedogs_list_organizations to see where each rescue ships, and
rescuedogs_get_filter_counts for the live list of destination countries -
coverage changes as organizations are added.
Use these codes for the adoptable_to_country parameter:
| Code | Country |
|---|---|
| GB | United Kingdom (UK also accepted) |
| IE | Ireland |
| DE | Germany |
| FR | France |
| ES | Spain |
| IT | Italy |
| NL | Netherlands |
| BE | Belgium |
| AT | Austria |
| RO | Romania |
| GR | Greece |
| BG | Bulgaria |
| CY | Cyprus |
Dogs can be adopted to countries where the rescue organization ships to. Use rescuedogs_list_organizations to see which countries each organization serves.
All data comes from rescuedogs.me, which aggregates
listings from independent rescue organizations. At the time of writing that is
roughly 1,400 available dogs across 96 breeds from 11 organizations; call
rescuedogs_get_statistics for current figures. About 99% of dogs carry an
AI-generated personality profile.
The platform is powered by the open-source rescue-dog-aggregator project, which handles collection, breed standardization, AI personality extraction, and the public API.
Listings are collected from the public adoption pages of each rescue
organization. Nothing behind a login, paywall or robots.txt restriction is
collected, and no personal data about adopters or staff is stored.
Every result links to the rescue's own adoption page. This project sends people to the rescues; it does not take applications, take payment, or stand between an adopter and an organization.
If you run one of these organizations and want your listings removed, changed, or credited differently, open an issue on rescue-dog-aggregator or contact the maintainer. Removal requests are honoured, and no justification is required.
| Transport | Entrypoint | Used by |
|---|---|---|
| stdio | dist/index.js (npm start) | Local clients, the npm package, Smithery |
| Streamable HTTP | dist/http.js (npm run start:http) | The remote endpoint at /mcp |
The HTTP transport is stateless: every request gets its own server instance, so there are no sessions to expire and it scales horizontally without shared state. SSE is not implemented - it is deprecated in the MCP SDK, and the current spec revision defines only stdio and streamable HTTP.
The public endpoint is rate limited per IP, 120 requests/minute and
3,000 requests/hour. /health is exempt.
Those ceilings are deliberately generous. Hosted MCP clients egress from small shared IP pools, so a per-IP bucket is shared by everyone behind that client; the limits exist to stop a scraper hammering the backend, not to ration normal use.
Run it locally:
Then point the MCP Inspector
at http://localhost:3000/mcp with transport "Streamable HTTP".
The stdio image installs the published npm package:
The remote endpoint builds from source:
| Variable | Description | Default |
|---|---|---|
RESCUEDOGS_API_URL | Base URL for the rescuedogs API | https://api.rescuedogs.me |
RESCUEDOGS_IMAGE_URL | Base URL for the image CDN | https://images.rescuedogs.me |
PORT | Port for the HTTP transport | 3000 |
HOST | Bind address for the HTTP transport | 0.0.0.0 |
OPENAI_APPS_CHALLENGE | Token served at /.well-known/openai-apps-challenge for OpenAI domain verification | unset (route returns 404) |
CI runs lint, typecheck, typecheck:tests, lint:dead, lint:links, test
and build on
every pull request. test:contract runs on a schedule instead, so an upstream API
outage cannot block an unrelated PR.
See CHANGELOG.md. The 2.0.0 release changes the shape of
response_format: "json" output; markdown output is unaffected.
See CONTRIBUTING.md. Issues and PRs welcome!
MIT