An MCP server that exposes OpenAssetIO functionality as tools for LLM clients.
pip install .openassetio-mcpNote
The MCP server assumes OpenAssetIO is configured using the
OPENASSETIO_DEFAULT_CONFIGenvironment variable. See OpenAssetIO docs for details.
The server starts on http://localhost:8000/mcp by default.
$ openassetio-mcp --help
usage: openassetio-mcp [-h] [--host HOST] [--port PORT]
OpenAssetIO MCP server
options:
-h, --help show this help message and exit
--host HOST Host to bind to (env: OPENASSETIO_MCP_HOST, default: localhost)
--port PORT Port to bind to (env: OPENASSETIO_MCP_PORT, default: 8000)The following OpenAssetIO operations are exposed as MCP tools:
| Tool | Description |
|---|---|
resolve |
Resolve entity references to trait property data. |
entity_exists |
Query the manager to confirm entities exist. |
entity_traits |
Retrieve the trait set ("type") of entities. |
is_entity_reference_string |
Check if strings match the manager's reference format. |
manager_identifier |
Unique identifier of the configured manager plugin. |
manager_display_name |
Human-readable name of the manager. |
manager_info |
Auxiliary manager metadata (version, docs URL, etc.). |
manager_settings |
Current runtime settings of the manager. |
ping |
Health check - returns session and context IDs. |
The server exposes an MCP resource at openassetio://traits containing
the full trait and specification catalogue as YAML. LLM clients read
this resource to understand available trait IDs and their properties,
helping the agent to answer domain-specific questions and construct
valid tool requests.
The bundled openassetio-mediacreation definitions are included by default.
Set the OPENASSETIO_MCP_TRAIT_DEFINITIONS environment variable to a
list of additional trait definition YAML files (separated by the
platform path separator - : on Linux/macOS, ; on Windows):
export OPENASSETIO_MCP_TRAIT_DEFINITIONS="/path/to/my-traits.yaml:/path/to/other-traits.yaml"Each file must be a valid OpenAssetIO trait definition YAML document
(for example, see the
MediaCreation traits).
Later files take precedence over earlier ones (with the bundled
openassetio-mediacreation package being the earliest). Conflicting
packages are replaced (not merged), allowing e.g. a custom
openassetio-mediacreation YAML document to completely override the
bundled document, if desired.
Recommended to use uv for development.
To create a .venv environment with an editable (symlink-like) install
of the project, and configure pre-commit (linter) hooks, run:
uv venv
uv sync --all-extras
uv run pre-commit installNote that the
pyrightlinter will expect a virtual environment path of.venv(default foruv venv).
uv run pytestuv run pre-commit run --all-filesIf linter checks fail, most issues can be auto-fixed by running the following formatters and fixers:
uv run ruff format src tests
uv run ruff check --fix src tests
uv run mdformat .github/ src/ tests/ *.mdThen re-run the linting checks and repeat until everything passes.
Please feel free to contribute pull requests or issues. Note that contributions will require signing a CLA.
See the OpenAssetIO contribution docs for how to structure commit messages, the pull request process, and coding style guide.
