关于 MCP Server for Autodesk ShotGrid REST API
MCP Server for Autodesk ShotGrid REST API 使用 FastMCP 将 ShotGrid REST API 封装为面向 LLM Agent 的服务。它通过 OAuth2 认证,覆盖项目、资产、任务、笔记、预订等实体的查询与管理。
主要功能
- 01OAuth2 认证连接 ShotGrid
- 02查询项目、用户与资产
- 03筛选任务、镜头、版本和笔记
- 04创建、更新及删除笔记和回复
- 05管理预订记录
- 06支持分页与日期筛选
适用场景
- 01在 LLM 工作流中检索 ShotGrid 项目资料
- 02按项目或日期筛选任务与版本
- 03创建或维护 ShotGrid 笔记和回复
- 04查询并调整人员预订
MCP 相关
该 MCP 服务通过 stdio 向客户端公开 ShotGrid REST API 工具,供 LLM Agent 查询和管理实体。服务使用 FastMCP,并以 OAuth2 连接 ShotGrid。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Autodesk ShotGrid REST API 的 MCP 服务
此项目提供一个使用 FastMCP 实现的 MCP(Model Context Protocol)服务,使大模型(LLM)Agent 能够通过 Autodesk ShotGrid REST API 以编程方式与其交互。它提供一组工具,用于查询和管理 ShotGrid 实体,例如项目、资产、任务、用户、备注等。该服务支持 transport="stdio" 模式,可集成到基于大模型的工作流中。
功能
- 使用 OAuth2 身份验证连接到 Autodesk ShotGrid。
- 使用 FastMCP 将 ShotGrid REST API 操作作为 MCP 工具提供。
- 查询项目、用户、资产、任务、备注、版本、预订等。
- 获取实体的详细信息。
- 专为集成到基于大模型的工作流中而设计。
- 模块化代码库:
main.py提供 MCP 服务和核心工具定义;booking_tools.py处理所有 Booking CRUD 操作;note_tools.py处理 Note / Reply CRUD 操作以及附件读取;shotgrid_rest.py实现 ShotGrid API 封装。
要求
- Python 3.11
- httpx
- httpx-auth
- mcp.server.fastmcp
安装
-
克隆代码仓库:
git clone https://github.com/chordee/mcp-server-shotgrid.git -
如果尚未安装 uv,请先安装。
uv会自动管理 Python 3.11 和pyproject.toml中声明的依赖项;无需手动创建venv。 -
配置凭据。 使用环境变量(推荐)或 CLI 参数。请参阅用法。
-
在 MCP 客户端中注册服务。 Claude Code 的示例(
~/.claude.json或项目本地的.mcp.json):{ "mcpServers": { "shotgrid": { "command": "uv", "args": ["run", "--directory", "D:\\path\\to\\mcp-server-shotgrid", "main.py"], "env": { "SHOTGRID_HOST": "https://your-shotgrid-url", "SHOTGRID_CLIENT_ID": "your_client_id", "SHOTGRID_CLIENT_SECRET": "your_client_secret" } } } }
用法
凭据可以通过**环境变量(推荐)**或 CLI 参数提供。环境变量优先;如果这三项中的任意一项缺失,服务就会报错退出。
选项 A — 环境变量(推荐)
| 变量 | 描述 |
|---|---|
SHOTGRID_HOST | ShotGrid 主机 URL,例如 https://your-shotgrid-url |
SHOTGRID_CLIENT_ID | OAuth2 客户端 ID |
SHOTGRID_CLIENT_SECRET | OAuth2 客户端密钥 |
Windows(PowerShell):
$env:SHOTGRID_HOST = "https://your-shotgrid-url"
$env:SHOTGRID_CLIENT_ID = "your_client_id"
$env:SHOTGRID_CLIENT_SECRET = "your_client_secret"
uv run --directory C:\path\to\mcp-server-shotgrid main.py
macOS / Linux(bash / zsh):
export SHOTGRID_HOST="https://your-shotgrid-url"
export SHOTGRID_CLIENT_ID="your_client_id"
export SHOTGRID_CLIENT_SECRET="your_client_secret"
uv run --directory /path/to/mcp-server-shotgrid main.py
选项 B — CLI 参数
uv run --directory {REPO_DIR} main.py --host https://your-shotgrid-url --client-id your_client_id --client-secret your_client_secret
短格式(-host、-ci、-cs)和长格式(--host、--client-id、--client-secret)均受支持。
安全提示
优先使用环境变量,而不是 CLI 参数。通过命令行传递的参数会显示在进程列表(ps、任务管理器)、Shell 历史记录以及许多主管程序/IDE 配置文件中。环境变量可以降低意外泄露的风险,但它们仍属于机密信息——请将其存储在受保护的配置文件中(例如 .mcp.json / ~/.claude.json),使用严格的文件权限,并且切勿将机密信息提交到版本控制系统。
该服务使用 FastMCP,且仅通过 transport="stdio" 通信。MCP 提供的工具可供大模型 Agent 调用。
可用工具
所有工具均为异步工具,并通过 FastMCP 提供。它们会返回结构化的 Python 对象(List 或 Dict),并由 MCP 框架自动序列化。括号中的参数均为必填项,除非标记为可选。
get_all_projects():列出所有项目。get_all_users():列出所有用户。get_all_projects_field_contains(value: str, field: str = "name"):列出字段包含指定值的项目。get_sequences(project_id: int (optional), project_name: str (optional), code: str (optional), updated_in_last_n_days: int (optional), updated_date_from: [YYYY,MM,DD] (optional), updated_date_to: [YYYY,MM,DD] (optional)):列出镜头序列,可按项目、代码或日期筛选。get_shots(project_id: int (optional), project_name: str (optional), sequence_id: int (optional), sequence_code: str (optional), shot_code: str (optional), updated_in_last_n_days: int (optional), updated_date_from: [YYYY,MM,DD] (optional), updated_date_to: [YYYY,MM,DD] (optional)):列出镜头,支持多种筛选条件。get_assets(project_id: int (optional), project_name: str (optional), code: str (optional), updated_in_last_n_days: int (optional), updated_date_from: [YYYY,MM,DD] (optional), updated_date_to: [YYYY,MM,DD] (optional)):列出资产,可选择性地使用筛选条件。get_tasks(entity_type: str (optional), entity_id: int (optional), project_id: int (optional), project_name: str (optional), user_id: int (optional), task_name: str (optional), updated_in_last_n_days: int (optional), updated_date_from: [YYYY,MM,DD] (optional), updated_date_to: [YYYY,MM,DD] (optional)):列出任务,可选择性地使用筛选条件。get_users_name_or_login_contains(name: str (optional), login: str (optional)):列出姓名或登录名包含指定子字符串的用户。get_notes(shot_id: int (optional), asset_id: int (optional), user_id: int (optional), task_id: int (optional), version_id: int (optional), project_id: int (optional), project_name: str (optional), task_name: str (optional), asset_code: str (optional), version_name: str (optional), updated_in_last_n_days: int (optional), updated_date_from: [YYYY,MM,DD] (optional), updated_date_to: [YYYY,MM,DD] (optional), limit: int (optional), page: int (optional)):列出备注,支持全面的筛选选项。支持通过limit/page分页,避免大型项目被 ShotGrid 的默认分页限制而静默截断。create_note(content: str, project_id: int, subject: str (optional), link_shot_ids: [int] (optional), link_asset_ids: [int] (optional), link_task_ids: [int] (optional), link_version_ids: [int] (optional), task_ids: [int] (optional), addressing_to_user_ids: [int] (optional), addressing_cc_user_ids: [int] (optional), user_id: int (optional), sg_status_list: str (optional)):创建新备注。note_links由四个link_*列表构建。若未提供user_id,则默认为 API 用户。update_note(note_id: int, content: str (optional), subject: str (optional), sg_status_list: str (optional), link_shot_ids: [int] (optional), link_asset_ids: [int] (optional), link_task_ids: [int] (optional), link_version_ids: [int] (optional), task_ids: [int] (optional), addressing_to_user_ids: [int] (optional), addressing_cc_user_ids: [int] (optional)):更新现有备注。提供多实体列表参数时会替换现有值(传入[]可清除)。无法通过更新更改project和user。delete_note(note_id: int):按 ID 删除备注。get_replies(note_id: int, limit: int (optional), page: int (optional)):列出备注下的回复,并返回完整回复字段(content、user、entity、时间戳、attachments)。支持通过limit/page分页。此工具取代了之前的get_all_replies_with_note_id,后者仅返回 ID。create_reply(content: str, note_id: int, user_id: int (optional)):在备注下发布回复。若未提供user_id,则默认为 API 用户。update_reply(reply_id: int, content: str):更新回复内容。delete_reply(reply_id: int):按 ID 删除回复。get_note_attachments(note_id: int):列出备注上的附件引用(轻量格式[{id, type, name}])。get_attachment_info(attachment_id: int):获取完整的附件元数据(this_fileURL、image缩略图、显示名称、内容类型、大小)。get_versions(project_id: int (optional), project_name: str (optional), task_id: int (optional), task_name: str (optional), user_id: int (optional), updated_in_last_n_days: int (optional), updated_date_from: [YYYY,MM,DD] (optional), updated_date_to: [YYYY,MM,DD] (optional)):列出版本,可选择性地使用筛选条件。get_bookings(user_ids: [int] (optional), project_ids: [int] (optional), range_from: [YYYY,MM,DD] (optional), range_to: [YYYY,MM,DD] (optional), vacation: bool (optional), exclude_vacation: bool (optional), sg_status_list: "cfrm"|"pndng" (optional), sort_field: "start_date"|"end_date"|"updated_at" (default "start_date"), sort_order: "asc"|"desc" (default "asc"), limit: int (optional), page: int (optional)):列出日期区间与[range_from, range_to]重叠的预订。支持通过in关系查询多个用户和多个项目。v0.2.0 中的破坏性变更:user_id/project_id已替换为列表值参数user_ids/project_ids;四个参数start_date_from/to/end_date_from/to已替换为range_from/range_to,并采用包含边界的重叠语义。create_booking(user_id: int, project_id: int, start_date: [YYYY,MM,DD], end_date: [YYYY,MM,DD], vacation: bool (optional), note: str (optional), percent_allocation: float (optional), sg_status_list: "cfrm"|"pndng" (optional)):创建新的预订。update_booking(booking_id: int, start_date: [YYYY,MM,DD] (optional), end_date: [YYYY,MM,DD] (optional), vacation: bool (optional), note: str (optional), percent_allocation: float (optional), sg_status_list: "cfrm"|"pndng" (optional)):更新现有预订。注意:无法通过更新更改user和project;如需更改,请删除并重新创建预订。delete_booking(booking_id: int):按 ID 删除预订。get_entities_updated_in_last_n_days(entity_type: str, n: int, project_id: int (optional)):列出过去 n 天内更新过的指定类型实体。get_entity_by_id(entity_type: str, entity_id: int):按类型和 ID 获取实体详情。
错误处理
该服务包含一个健壮的错误处理包装器,可捕获 ShotGrid API 错误和内部异常,并将其作为包含 error 和 message 字段的结构化 JSON 对象返回。
说明
- 确保你的 ShotGrid 账户已启用 API 访问权限。
- 该服务使用 OAuth2 进行身份验证。
- 该服务使用 FastMCP 实现,且仅使用
transport="stdio"运行。 - 可通过环境变量(
SHOTGRID_HOST、SHOTGRID_CLIENT_ID、SHOTGRID_CLIENT_SECRET)或 CLI 参数(-host/--host、-ci/--client-id、-cs/--client-secret)提供凭据。环境变量优先。 - 某些工具会动态获取字段,并排除特定键(参见
main.py中的remove_exclude_fields)。 - 可根据需要扩展或自定义
main.py中的工具,以适应你的工作流。 - ShotGrid REST API 的逻辑在
shotgrid_rest.py中实现。
许可证
MIT 许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。