Skip to main content
Glama
rajivdatta

collibra MCP

by rajivdatta
README.md
# collibra MCP

Local MCP server for the **Collibra Core REST API (2.0)**. Lets a Claude session read
and write Collibra assets/attributes/relations so the Power BI semantic-model detail
(tables, columns, measures, DAX, descriptions) can be pushed onto the report's Collibra
asset page.

Pairs with `powerbi` / `powerbi-modeling-mcp` (which read the PBI model). Collibra Edge
keeps the basic inventory/lineage in sync; this server fills in the rich detail Edge
does not push.

## Setup

1. `copy .env.example .env` and fill in `COLLIBRA_BASE_URL`, `COLLIBRA_USERNAME`,
   `COLLIBRA_PASSWORD`. Leave `COLLIBRA_READONLY=true` for now.
2. Registered in `~/.claude.json` as the `collibra` MCP server (launcher:
   `run_collibra.cmd`, venv: `.venv`). Restart Claude Code / run `/mcp` to connect.
3. `collibra_ping` to verify auth.

## Auth

Username/password session against `/rest/2.0/auth/sessions`. The cookie + CSRF token are
captured on login and reused; a 401/403 triggers one automatic re-login. SSL verify on
by default (`COLLIBRA_VERIFY_SSL`).

## Tools

Read/discovery: `collibra_ping`, `collibra_find_assets`, `collibra_get_asset`,
`collibra_get_attributes`, `collibra_list_asset_types`, `collibra_list_attribute_types`,
`collibra_list_relation_types`, `collibra_list_domains`, `collibra_list_communities`,
`collibra_get` (generic GET explorer).

Write (blocked while `COLLIBRA_READONLY=true`): `collibra_create_asset`,
`collibra_set_attribute`, `collibra_add_relation`, `collibra_import_json` (bulk idempotent
upsert via the Import API) + `collibra_job_status`, and `collibra_request` (generic call).

## Workflow

1. Discover what Edge created: `collibra_list_asset_types`, `collibra_list_relation_types`,
   then `collibra_find_assets(type_name="...")` for a sample report. This reveals the
   target asset types, attribute types, and lineage relations to map onto.
2. Map PBI -> Collibra structure.
3. Flip `COLLIBRA_READONLY=false`, dry-run with `collibra_import_json(..., simulation=true)`,
   then commit.