A Model Context Protocol (MCP) server for interacting with the CEDAR (Center for Expanded Data Annotation and Retrieval) metadata repository.
Project description
CEDAR MCP Server
A Model Context Protocol (MCP) server for interacting with the CEDAR (Center for Expanded Data Annotation and Retrieval) metadata repository.
Prerequisites
Before using this MCP server, you'll need API keys from:
CEDAR API Key
- Go to cedar.metadatacenter.org
- Create an account or log in
- Navigate to: Profile → API Key
- Copy your API key
BioPortal API Key
- Go to bioportal.bioontology.org
- Create an account or log in
- Navigate to: Account Settings → API Key
- Copy your API key
Running the CEDAR MCP Server
Set your API keys as environment variables:
export CEDAR_API_KEY="your-cedar-key"
export BIOPORTAL_API_KEY="your-bioportal-key"
Option 1: Using UVX (Recommended)
Run directly without installation using uvx:
uvx cedar-mcp
Option 2: Using pip
Install from PyPI and run:
pip install cedar-mcp
cedar-mcp
Note: The
--cedar-api-keyand--bioportal-api-keyCLI flags are deprecated and will be removed in a future release. Use environment variables instead.
Transport Options
By default, the server uses stdio transport. You can also run it as an HTTP server using SSE or streamable-http transports:
# SSE transport on default host/port (127.0.0.1:8000)
cedar-mcp --transport sse
# Streamable HTTP on custom host/port
cedar-mcp --transport streamable-http --host 0.0.0.0 --port 9000
| Flag | Choices | Default | Description |
|---|---|---|---|
--transport |
stdio, sse, streamable-http |
stdio |
Transport protocol |
--host |
— | 127.0.0.1 |
Host to bind to (HTTP transports only) |
--port |
— | 8000 |
Port to bind to (HTTP transports only) |
Using with Claude Code
Add the CEDAR MCP server to Claude Code:
claude mcp add cedar-mcp --uvx -e CEDAR_API_KEY=your-cedar-key -e BIOPORTAL_API_KEY=your-bioportal-key
Using with Claude Desktop
To use with Claude Desktop app:
- Install the MCP server using one of the methods above
- Add to Claude Desktop configuration in your
claude_desktop_config.json:
{
"mcpServers": {
"cedar-mcp": {
"command": "uvx",
"args": [
"cedar-mcp"
],
"env": {
"CEDAR_API_KEY": "your-cedar-key",
"BIOPORTAL_API_KEY": "your-bioportal-key",
"CEDAR_MCP_CACHE_TTL_SECONDS": "86400",
"CEDAR_MCP_CACHE_DIR": "/path/to/custom/location"
}
}
}
}
Or if you have it installed locally:
{
"mcpServers": {
"cedar-mcp": {
"command": "cedar-mcp",
"env": {
"CEDAR_API_KEY": "your-cedar-key",
"BIOPORTAL_API_KEY": "your-bioportal-key",
"CEDAR_MCP_CACHE_TTL_SECONDS": "86400",
"CEDAR_MCP_CACHE_DIR": "/path/to/custom/location"
}
}
}
}
The CEDAR_MCP_CACHE_TTL_SECONDS and CEDAR_MCP_CACHE_DIR environment variables are optional. When set under the "env" key, Claude Desktop injects them into the server process environment before it starts, so the cache picks them up automatically. If omitted, the defaults apply (24-hour TTL and a platform-specific cache directory — see Cache Configuration).
Available Tools
Here is the list of CEDAR tools with a short description
get_cedar_template: Fetches a template from the CEDAR repository.get_instances_based_on_template: Gets template instances that belong to a specific template with pagination support.term_search_from_branch: Searches BioPortal for standardized ontology terms within a specific branch.term_search_from_ontology: Searches BioPortal for standardized ontology terms within an entire ontology.get_branch_children: Fetches all immediate children terms for a given branch in an ontology.get_ontology_class_tree: Fetches the hierarchical tree structure for a given class in an ontology.remove_stale_cache_entries: Removes expired entries from the BioPortal search cache.clear_bioportal_cache: Clears all entries from the BioPortal search cache.
Cache Configuration
BioPortal search results are cached locally using SQLite to reduce latency and API load. The cache persists across server restarts.
| Variable | Default | Description |
|---|---|---|
CEDAR_MCP_CACHE_TTL_SECONDS |
86400 (24 hours) |
Time-to-live for cached BioPortal responses |
CEDAR_MCP_CACHE_DIR |
Platform-specific (see below) | Override the cache directory location |
Default cache locations:
- macOS:
~/Library/Caches/cedar-mcp - Linux:
$XDG_CACHE_HOME/cedar-mcpor~/.cache/cedar-mcp - Windows:
%LOCALAPPDATA%/cedar-mcp/cache
Development
Install Development Dependencies
pip install -r requirements-dev.txt
Running Tests
This project includes comprehensive integration tests that validate real API interactions with both CEDAR and BioPortal APIs.
For detailed testing information, see test/README.md.
Contributing
Contributions are welcome! Please ensure all tests pass before submitting a Pull Request:
python run_tests.py --integration
License
This project is licensed under the MIT License — see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cedar_mcp-1.1.0.tar.gz.
File metadata
- Download URL: cedar_mcp-1.1.0.tar.gz
- Upload date:
- Size: 134.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bc4b9f280ff349d4c7754a015c4d142cdf1a0cf8dc10f72a2946f090b3a5d5c
|
|
| MD5 |
385897260e4d57096e1fb5e3ea7dc896
|
|
| BLAKE2b-256 |
22c13c7286dd0222ac44442ca0dacf282b45a7235a0ed0e6ee3731049c772a54
|
Provenance
The following attestation bundles were made for cedar_mcp-1.1.0.tar.gz:
Publisher:
release.yml on musen-lab/cedar-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cedar_mcp-1.1.0.tar.gz -
Subject digest:
6bc4b9f280ff349d4c7754a015c4d142cdf1a0cf8dc10f72a2946f090b3a5d5c - Sigstore transparency entry: 1097151446
- Sigstore integration time:
-
Permalink:
musen-lab/cedar-mcp@633ff8606ebcca912b385491de9fc7f1db016165 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/musen-lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@633ff8606ebcca912b385491de9fc7f1db016165 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cedar_mcp-1.1.0-py3-none-any.whl.
File metadata
- Download URL: cedar_mcp-1.1.0-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb23a46aa7498a39c59c53d1d18853ddae853b1d7443b8338cff88685a342cc7
|
|
| MD5 |
c306573f3bc865d2e34490882cdd56a5
|
|
| BLAKE2b-256 |
25b17a552ead9bd32dd309cc0daaf2bbd5c24bc6d17c610eebf7f13df82242e3
|
Provenance
The following attestation bundles were made for cedar_mcp-1.1.0-py3-none-any.whl:
Publisher:
release.yml on musen-lab/cedar-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cedar_mcp-1.1.0-py3-none-any.whl -
Subject digest:
cb23a46aa7498a39c59c53d1d18853ddae853b1d7443b8338cff88685a342cc7 - Sigstore transparency entry: 1097151452
- Sigstore integration time:
-
Permalink:
musen-lab/cedar-mcp@633ff8606ebcca912b385491de9fc7f1db016165 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/musen-lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@633ff8606ebcca912b385491de9fc7f1db016165 -
Trigger Event:
push
-
Statement type: