Enabling record creation does not enable purges, which is exactly the split you want when an agent is doing bulk data work. The data domain is the setting that catches people out — it is the internal ACL domain rather than the hostname in your server URL, and entitlements_mine shows the format your own groups use.
A Python server over OSDU's services: search, storage, schema, legal, partition and entitlements. Writes are disabled by default and deletes are controlled separately, so a fresh install is read-only.
- Platform connectivity and service health — health_check
- Search with Elasticsearch syntax, by record id, or by kind — search_query, search_by_id, search_by_kind
- Records read by id or version, versions listed, ids queried by kind, and many records fetched at once — storage_get_record, storage_get_record_version, storage_list_record_versions, storage_query_records_by_kind, storage_fetch_records
- Records created or updated, logically deleted, and permanently purged — storage_create_update_records, storage_delete_record, storage_purge_record
- Schemas listed, fetched, searched with rich filtering, created and updated — schema_list, schema_get, schema_search, schema_create, schema_update
- Legal tags listed, fetched, searched, batch-retrieved, created, updated and deleted — legaltag_list, legaltag_get, legaltag_get_properties, legaltag_search, legaltag_batch_retrieve, legaltag_create, legaltag_update, legaltag_delete
- Partitions listed, read, created, updated and deleted, and the current user's groups — partition_list, partition_get, partition_create, partition_update, partition_delete, entitlements_mine
- Two prompts — list_mcp_assets for a capability overview, guide_search_patterns for Elasticsearch syntax
OSDU_MCP_SERVER_URL and OSDU_MCP_SERVER_DATA_PARTITION, plus credentials — Azure (AZURE_CLIENT_ID and AZURE_TENANT_ID with az login, or a service principal secret), AWS or GCP are detected automatically, and OSDU_MCP_USER_TOKEN takes priority over all of them. Set OSDU_MCP_SERVER_DOMAIN to your deployment's data domain or ACL formats will be wrong. Writes need OSDU_MCP_ENABLE_WRITE_MODE and deletes need OSDU_MCP_ENABLE_DELETE_MODE. Runs with uvx straight from the repository.
One command plus a key — claude mcp add osdu-mcp-server uvx "git+https://github.com/danielscholl-osdu/osdu-mcp-server@main" \ -e "OSDU_MCP_SERVER_URL=https://your-osdu.com" \ -e "OSDU_MCP_SERVER_DATA_PARTITION=your-partition" \ -e "AZURE_CLIENT_ID=your-client-id" \ -e "AZURE_TENANT_ID=your-tenant-id", then supply credentials
