MCP Server for Autodesk ShotGrid REST API

by chordee

184 downloads
Not rated
GitHub

About

This MCP server, built with FastMCP, enables LLM agents to programmatically query and manage Autodesk ShotGrid entities (projects, assets, tasks, users, notes, versions, bookings, etc.) via the ShotGrid REST API. It uses OAuth2 authentication and communicates over stdio…

Details

Author
chordee
Downloads
184
Categories
Developer Tools

- Connects to Autodesk ShotGrid using OAuth2 authentication.
- Exposes ShotGrid REST API operations as MCP tools via FastMCP.
- Query projects, users, assets, tasks, notes, versions, bookings, and more.
- Retrieve detailed information about specific entities by ID.
- Designed for integration with LLM-based workflows (stdio transport).
- Modular codebase separating server logic from API wrapper.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name MCP Server for Autodesk ShotGrid REST API
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Obtain your ShotGrid host URL, OAuth2 client ID, and client secret. Run the server with uv run --directory {REPO_DIR} main.py -host https://your-shotgrid-url -ci your_client_id -cs your_client_secret. All three arguments are required. The server exposes MCP tools that your LLM agent can call.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mcp server for autodesk shotgrid rest api": {
            "mcp-server-shotgrid": {
                "command": "uv",
                "args": [
                    "run",
                    "--directory",
                    "{REPO_DIR}",
                    "main.py",
                    "-host",
                    "https://your-shotgrid-url",
                    "-ci",
                    "your_client_id",
                    "-cs",
                    "your_client_secret"
                ]
            }
        }
    }
}

McpServers

{
    "mcp-server-shotgrid": {
        "command": "uv",
        "args": [
            "run",
            "--directory",
            "{REPO_DIR}",
            "main.py",
            "-host",
            "https://your-shotgrid-url",
            "-ci",
            "your_client_id",
            "-cs",
            "your_client_secret"
        ]
    }
}

MCP Server for Autodesk ShotGrid REST API

This project provides an MCP (Model Context Protocol) server, implemented using FastMCP, that enables Large Language Model (LLM) agents to interact programmatically with Autodesk ShotGrid via its REST API. It exposes a set of tools for querying and managing ShotGrid entities such as projects, assets, tasks, users, notes, and more. The server supports transport="stdio" mode for integration with LLM-based workflows.

Features

- Connects to Autodesk ShotGrid using OAuth2 authentication.
- Exposes ShotGrid REST API operations as MCP tools using FastMCP.
- Query projects, users, assets, tasks, notes, versions, bookings, and more.
- Retrieve detailed information about entities.
- Designed for integration with LLM-based workflows.
- Modular codebase: main.py provides the MCP server and tool definitions, while shotgrid_rest.py implements the ShotGrid API wrapper.

Requirements

- Python 3.11
- httpx
- httpx-auth
- mcp.server.fastmcp

Usage

1. Set up ShotGrid credentials:
- Obtain your ShotGrid host URL, client ID, and client secret.

2. Run the server (replace placeholders with your actual values):

   uv run --directory {REPO_DIR} main.py -host https://your-shotgrid-url -ci your_client_id -cs your_client_secret
   

All three arguments are required. Both short (-host, -ci, -cs) and long (--host, --client-id, --client-secret) forms are supported.

The server uses FastMCP and communicates via transport="stdio" only.

3. Integrate with your LLM agent:
- The server exposes tools via MCP for LLMs to call.

Available Tools

All tools are asynchronous and exposed via FastMCP. Arguments in parentheses are required unless marked optional. See main.py for full argument and return details.

- get_all_projects(): List all projects.
- get_all_users(): List all users.
- get_all_projects_field_contains(value: str, field: str = "name"): List projects where a field contains a value.
- get_all_sequences_in_project(project_id: int (optional), code: str (optional), updated_in_last_n_days: int (optional)): List sequences in a project, optionally filtered.
- get_shots(project_id: int (optional), shot_code: str (optional), sequence_id: int (optional), updated_in_last_n_days: int (optional)): List shots, with optional filters.
- get_assets(project_name: str (optional), code: str (optional), updated_in_last_n_days: int (optional)): List assets, with optional filters.
- get_tasks(entity_type: str (optional), entity_id: int (optional), project_id: int (optional), user_id: int (optional), updated_in_last_n_days: int (optional)): List tasks, with optional filters.
- get_users_name_or_login_contains(name: str (optional), login: str (optional)): List users whose name or login contains a substring.
- get_all_notes_with_version(version_id: int): List notes associated with a version.
- get_all_replies_with_note_id(note_id: int): List replies associated with a note.
- get_versions(project_id: int (optional), task_id: int (optional), user_id: int (optional), updated_in_last_n_days: int (optional)): List versions, with optional filters.
- get_bookings(user_id: int (optional), project_id: int (optional), start_date_from: [YYYY,MM,DD] (optional), start_date_to: [YYYY,MM,DD] (optional), end_date_from: [YYYY,MM,DD] (optional), end_date_to: [YYYY,MM,DD] (optional), vacation: bool (optional)): List bookings, with optional filters.
- get_entities_updated_in_last_n_days(entity_type: str, n: int, project_id: int (optional)): List entities of a type updated in the last n days.
- get_entity_by_id(entity_type: str, entity_id: int): Get details for an entity by type and ID.

Note: Argument and return details for each tool are documented in the function docstrings in main.py.

Example

uv run --directory {REPO_DIR} main.py --host https://your-shotgrid-url --client-id your_client_id --client-secret your_client_secret

Notes

- Ensure your ShotGrid account has API access enabled.
- The server uses OAuth2 for authentication.
- The server is implemented using FastMCP and runs with transport="stdio" only.
- Command-line arguments:
- -host or --host (ShotGrid host URL)
- -ci or --client-id (OAuth2 client ID)
- -cs or --client-secret (OAuth2 client secret)
- Some tools use dynamic field fetching and exclude certain keys (see remove_exclude_fields in main.py).
- Extend or customize the tools in main.py as needed for your workflow.
- The ShotGrid REST API logic is implemented in shotgrid_rest.py.

License

MIT License

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.