Curator
Enables natural language search and exploration of over 1.15 million museum records from Museums Victoria, including specimens, items, articles, and species, with full-text search and detailed record retrieval.
README
Curator — Museums Victoria Collections MCP Server
An MCP server that turns the Museums Victoria Collections API (1.15M+ records) into natural-language discovery tools for MCP clients such as Copilot Studio.
Overview
Curator is a Model Context Protocol server exposing the Museums Victoria Collections API as a set of tools. It lets an AI agent search and explore specimens, items, articles, and species across the museum's Natural Sciences and Humanities collections — with taxonomy, images, provenance, and dates.
It runs as a streamable-HTTP MCP service (built with FastMCP) and is served over HTTPS on Azure
Container Apps.
Tools
| Tool | Purpose |
|---|---|
search_collections |
Full-text search with type/image/category filters |
get_specimen / get_item / get_article |
Fetch a single record by ID |
list_specimens / list_items / list_articles / list_species |
Paginated browse |
Architecture
flowchart LR
Dev([Developer]) -->|git push main| GH[GitHub Actions]
subgraph Azure["Azure · rg-curator"]
direction LR
ACR[("Container Registry<br/><i>ABAC mode</i>")]
APP["Container App<br/>HTTPS · always-warm"]
ACR -->|"pull via<br/>managed identity"| APP
end
GH -->|"build & push<br/>(SP AAD token)"| ACR
APP -->|"serves /mcp"| CS["Copilot Studio<br/>agent"]
TF[/"Terraform<br/>infra as code"/] -. provisions .-> Azure
Flow: a push to main triggers GitHub Actions, which builds the image and pushes it to the
registry; the Container App pulls that image via a managed identity and serves the MCP endpoint over
HTTPS, which the Copilot Studio agent calls. Terraform declares the same Azure resources.
- Server:
curator_mcp_server.py— FastMCP streamable-HTTP app, MCP endpoint at/mcpon port 8000. - CI/CD:
.github/workflows/deploy-azure.yml— builds the image, pushes to ACR with the workflow service principal's AAD token, and deploys to Container Apps. No registry passwords in the pipeline. - Auth: the container app pulls images via a user-assigned managed identity; the ACR admin user is
disabled. Because the registry runs in ABAC mode, the ABAC-native Container Registry Repository
Reader/Writer roles are used (not the classic
AcrPull/AcrPush). - IaC:
infra/terraform/— the whole Azure stack as Terraform (see its README).
Local development
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# Run the MCP server on http://localhost:8000/mcp
python curator_mcp_server.py
Or with Docker:
docker compose up --build # serves on http://localhost:8000/mcp
Deployment
Deployment is automated: pushing to main runs the GitHub Actions workflow, which builds the image
and rolls the Container App to the new build. The workflow needs one repository secret,
AZURE_CREDENTIALS (a service principal with Contributor on the resource group).
To provision the underlying infrastructure declaratively, use the Terraform in infra/terraform/.
Data source & acknowledgement
This project is built on the Museums Victoria Collections API
(https://collections.museumsvictoria.com.au/api) and would not exist without it. All collection
data — specimens, items, articles, and species — is provided by Museums Victoria. Huge thanks to
Museums Victoria for making this data openly available.
Please note when using the data:
- Licensing is per-record. Individual records carry their own licence (commonly
CC BY 4.0, Public Domain Mark, or
CC0) — check each record's
licenceandrightsStatementfields and attribute accordingly. - A
User-Agentheader is required on every API request; this server sends one. - Some records contain culturally sensitive content. Handle Aboriginal and Torres Strait Islander cultural material with appropriate respect.
This project is not affiliated with or endorsed by Museums Victoria.
License
MIT — see the note above; the museum data is licensed per-record by Museums Victoria and is not covered by this repository's licence.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.