Skip to main content

Model Context Protocol server for CERN Document Server (CDS)

Project description

CDS MCP Server

A Model Context Protocol (MCP) server for integrating with CERN Document Server (CDS), built on the Invenio digital library framework.

Features

  • Search CDS documents with filters for experiments, document types, and date ranges
  • Get detailed document information including full abstracts, authors, and metadata
  • Access document files with download URLs and file metadata
  • Browse experiments and document types for better search filtering

Installation

Requires Python 3.10+.

Quickstart (recommended)

No installation needed, just use uvx to run directly:

uvx cds-mcp

From PyPI

pip install cds-mcp

From source

git clone https://github.com/MohamedElashri/cds-mcp
cd cds-mcp
uv sync

Usage

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "cds": {
      "command": "uvx",
      "args": ["cds-mcp"],
      "env": {
        "CERN_CLIENT_ID": "your-client-id",
        "CERN_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

For public access only, omit the authentication environment variables:

{
  "mcpServers": {
    "cds": {
      "command": "uvx",
      "args": ["cds-mcp"]
    }
  }
}

Note for macOS users: If you see an error about uvx not being found, you may need to provide the absolute path. Claude Desktop does not support ~ or $HOME expansion.

  1. Run which uvx in your terminal to find the path (e.g., /Users/yourusername/.local/bin/uvx).
  2. Use that absolute path in the command field:
"command": "/Users/yourusername/.local/bin/uvx"

Claude Code

Project-specific (default) — installs in the current directory's configuration:

claude mcp add cds-mcp -- uvx cds-mcp

Global — installs for your user account (works in all projects):

claude mcp add --scope user cds-mcp -- uvx cds-mcp

To include authentication, add the CERN credentials before the --:

# Example: Global installation with CERN SSO authentication
claude mcp add --scope user -e CERN_CLIENT_ID=your_client_id -e CERN_CLIENT_SECRET=your_client_secret cds-mcp -- uvx cds-mcp

Manual Configuration — you can also manually edit your global config at ~/.claude.json (on Linux/macOS) or %APPDATA%\Claude\claude.json (on Windows):

{
  "mcpServers": {
    "cds": {
      "command": "uvx",
      "args": ["cds-mcp"],
      "env": {
        "CERN_CLIENT_ID": "your_client_id",
        "CERN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

GitHub Copilot

Add to your VS Code settings.json:

{
  "mcp": {
    "servers": {
      "cds": {
        "command": "uvx",
        "args": ["cds-mcp"],
        "env": {
          "CERN_CLIENT_ID": "your_client_id",
          "CERN_CLIENT_SECRET": "your_client_secret"
        }
      }
    }
  }
}

Or add a .vscode/mcp.json to your project:

{
  "servers": {
    "cds": {
      "command": "uvx",
      "args": ["cds-mcp"],
      "env": {
        "CERN_CLIENT_ID": "your_client_id",
        "CERN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Gemini CLI

Add to your ~/.gemini/settings.json:

{
  "mcpServers": {
    "cds": {
      "command": "uvx",
      "args": ["cds-mcp"],
      "env": {
        "CERN_CLIENT_ID": "your_client_id",
        "CERN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Direct usage

# Run with uvx (no install needed)
uvx cds-mcp

# Or if installed from PyPI
cds-mcp

# Or from source
uv run cds-mcp

# With CERN SSO authentication
CERN_CLIENT_ID=your_client_id CERN_CLIENT_SECRET=your_client_secret uvx cds-mcp

Authentication & Access Control

CERN SSO Authentication (Recommended)

The CDS MCP server now supports proper CERN SSO authentication using OAuth2/OIDC for accessing restricted content.

Setup Instructions

  1. Register your application in the CERN Application Portal:

    • Create a new OIDC application
    • Select "Confidential Client" type
    • Note your Client ID and Client Secret
  2. Configure authentication by setting environment variables:

    export CERN_CLIENT_ID="your-client-id"
    export CERN_CLIENT_SECRET="your-client-secret"
    
  3. Use with MCP clients - the server will automatically handle token acquisition and refresh.

Supported Access Levels

  • Public Records: Available without authentication
  • Restricted Collections: Requires CERN SSO authentication and appropriate experiment membership
    • ATLAS: Internal Notes, Communications, Conference Slides
    • CMS: Internal Notes, Analysis Notes
    • LHCb: Internal Notes, Analysis Notes
    • ALICE: Internal Notes, Analysis Notes

Tools

  1. search_cds_documents: Search CDS with various filters
  2. get_cds_document_details: Get detailed information about a specific document
  3. get_cds_document_files: Get file information and download URLs
  4. get_cds_experiments: List available CERN experiments for filtering
  5. get_cds_document_types: List available document types for filtering

Development

git clone https://github.com/MohamedElashri/cds-mcp
cd cds-mcp
uv sync
uv run python test_integration.py  # Test real CDS API integration
uv run python test_mcp_server.py   # Test MCP server functionality

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cds_mcp-0.1.1.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cds_mcp-0.1.1-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file cds_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: cds_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cds_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0a7aacdeefc7c11514bc5da8e7cf24ed6d702875a4e775af564f64644163b2b6
MD5 27eb8ba0003a3600148c749d990ac485
BLAKE2b-256 1bf71d418e279da8edd8f0fd58ae314b8beaa433f4dec75d38ecc73a9fb8d2b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cds_mcp-0.1.1.tar.gz:

Publisher: release.yml on MohamedElashri/cds-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cds_mcp-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: cds_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cds_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 81530abb3e1d48296ffa98cf7fcf48d8ec4a3dea748f35a75c6e957b24385ea6
MD5 409f64d22fe50eab2ef52d5858280a43
BLAKE2b-256 37bc4d3f04a2ab10f7db3d2f43832f76cad045c05a3960e0b7956a115063a343

See more details on using hashes here.

Provenance

The following attestation bundles were made for cds_mcp-0.1.1-py3-none-any.whl:

Publisher: release.yml on MohamedElashri/cds-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page