本项目借助 FastMCP 实现了一个 MCP(模型上下文协议)服务器,旨在让大型语言模型 (LLM) 代理能够通过 Autodesk Shotgun 的 REST API 进行程序化交互。服务器提供了一系列工具,可用于查询和管理 Shotgun 中的项目、资产和任务等实体。同时,该服务器支持 HTTP 和 transport="stdio" 模式,方便与基于 LLM 的工作流集成。
本项目提供了一个使用 FastMCP 实现的 MCP 服务器,可让大型语言模型 (LLM) 代理通过 Autodesk Shotgun 的 REST API 进行程序化交互。以下是快速开始的步骤:
main.py 负责 MCP 服务器和工具定义,shotgrid_rest.py 实现 Shotgun REST API 包装器。test_main.py 用于自动化测试。获取您的 Shotgun 主机 URL、客户端 ID 和客户端秘密。
用实际值替换占位符后运行以下命令:
uv run --directory {REPO_DIR} main.py -host https://your-shotgrid-url -ci your_client_id -cs your_client_secret
所有三个参数都是必需的。支持短格式 (-host, -ci, -cs) 和长格式 (--host, --client-id, --client-secret)。服务器使用 FastMCP 并仅通过 transport="stdio" 模式通信。
服务器通过 MCP 为 LLM 提供可调用的工具。
以下是服务器提供的可用工具,所有工具都是异步的,并通过 FastMCP 公开。括号中的参数是必需的。
get_all_projects()get_all_users()get_all_projects_name_contains(name: str)get_all_projects_code_contains(code: str)get_all_sequences_in_project(project_name: str)get_all_shots_in_project(project_name: str)get_all_shots_code_contains(shot_code: str)get_all_assets_in_project(project_name: str)get_all_assets_code_contains(code: str)get_all_tasks_in_project(project_id: int)get_all_tasks_assigned_to_user(user_id: int)get_all_tasks_assigned_to_user_in_project_name(user_id: int, project_name: str)get_all_tasks_with_shot(shot_id: int)get_all_tasks_with_asset(asset_id: int)get_project_by_name(name: str)get_project_by_code(code: str)(新增)get_all_projects()get_project_details(project_id: int)get_project_assets(project_id: int, asset_type: str)(例如:Characters, Props, Sets)get_asset_versions(asset_id: int)get_version_thumbnail(version_id: int)(返回缩略图的 URL)⚠️ 重要提示
- 确保安装了所有依赖项。
- 在运行服务器之前,设置正确的 Shotgun 凭据。
- 测试工具时,请使用示例项目和资产以避免影响实际数据。
本项目采用 MIT 许可证。