shotgrid-mcp-server 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- shotgrid_mcp_server-0.2.1/.coveragerc +13 -0
- shotgrid_mcp_server-0.2.1/.flake8 +34 -0
- shotgrid_mcp_server-0.2.1/.github/workflows/bumpversion.yml +23 -0
- shotgrid_mcp_server-0.2.1/.github/workflows/codecov.yml +47 -0
- shotgrid_mcp_server-0.2.1/.github/workflows/issue-translator.yml +18 -0
- shotgrid_mcp_server-0.2.1/.github/workflows/mr-test.yml +45 -0
- shotgrid_mcp_server-0.2.1/.github/workflows/python-publish.yml +74 -0
- shotgrid_mcp_server-0.2.1/.gitignore +30 -0
- shotgrid_mcp_server-0.2.1/.hound.yml +8 -0
- shotgrid_mcp_server-0.2.1/.pre-commit-config.yaml +12 -0
- shotgrid_mcp_server-0.2.1/.pylintrc +7 -0
- shotgrid_mcp_server-0.2.1/.python-version +1 -0
- shotgrid_mcp_server-0.2.1/CHANGELOG.md +21 -0
- shotgrid_mcp_server-0.2.1/LICENSE +21 -0
- shotgrid_mcp_server-0.2.1/PKG-INFO +178 -0
- shotgrid_mcp_server-0.2.1/README.md +149 -0
- shotgrid_mcp_server-0.2.1/README_zh.md +149 -0
- shotgrid_mcp_server-0.2.1/codecov.yml +9 -0
- shotgrid_mcp_server-0.2.1/nox_actions/__init__.py +1 -0
- shotgrid_mcp_server-0.2.1/nox_actions/codetest.py +27 -0
- shotgrid_mcp_server-0.2.1/nox_actions/lint.py +42 -0
- shotgrid_mcp_server-0.2.1/nox_actions/release.py +45 -0
- shotgrid_mcp_server-0.2.1/nox_actions/utils.py +6 -0
- shotgrid_mcp_server-0.2.1/noxfile.py +81 -0
- shotgrid_mcp_server-0.2.1/pyproject.toml +161 -0
- shotgrid_mcp_server-0.2.1/renovate.json +6 -0
- shotgrid_mcp_server-0.2.1/requirements-dev.txt +3 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/__init__.py +3 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/__main__.py +7 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/connection_pool.py +280 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/constants.py +51 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/logger.py +91 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/mockgun_ext.py +559 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/py.typed +1 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/server.py +432 -0
- shotgrid_mcp_server-0.2.1/src/shotgrid_mcp_server/utils.py +212 -0
- shotgrid_mcp_server-0.2.1/tests/__init__.py +1 -0
- shotgrid_mcp_server-0.2.1/tests/conftest.py +417 -0
- shotgrid_mcp_server-0.2.1/tests/data/yaml/entity_schema.yaml +411 -0
- shotgrid_mcp_server-0.2.1/tests/data/yaml/schema.yaml +918 -0
- shotgrid_mcp_server-0.2.1/tests/test_server.py +279 -0
- shotgrid_mcp_server-0.2.1/uv.lock +878 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[flake8]
|
|
2
|
+
ignore = BLK100
|
|
3
|
+
|
|
4
|
+
# flake8-quotes:
|
|
5
|
+
# Use double quotes as our default to comply with black, we like it and
|
|
6
|
+
# don't want to use single quotes anymore.
|
|
7
|
+
# We would love to configure this via our pyproject.toml but flake8-3.8 does
|
|
8
|
+
# not support it yet.
|
|
9
|
+
inline-quotes = double
|
|
10
|
+
multiline-quotes = double
|
|
11
|
+
docstring-quotes = double
|
|
12
|
+
avoid-escape = True
|
|
13
|
+
|
|
14
|
+
# flake8-docstrings
|
|
15
|
+
# Use the Google Python Styleguide Docstring format.
|
|
16
|
+
docstring-convention=google
|
|
17
|
+
|
|
18
|
+
exclude =
|
|
19
|
+
# No need to traverse our git directory
|
|
20
|
+
.git,
|
|
21
|
+
# There's no value in checking cache directories
|
|
22
|
+
__pycache__,
|
|
23
|
+
# The conf file is mostly autogenerated, ignore it
|
|
24
|
+
docs/source/conf.py,
|
|
25
|
+
# The old directory contains Flake8 2.0
|
|
26
|
+
old,
|
|
27
|
+
# This contains our built documentation
|
|
28
|
+
build,
|
|
29
|
+
# This contains builds of flake8 that we don't want to check
|
|
30
|
+
dist,
|
|
31
|
+
venv,
|
|
32
|
+
docs
|
|
33
|
+
|
|
34
|
+
max-line-length = 120
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: Bump version
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
bump-version:
|
|
10
|
+
if: "!startsWith(github.event.head_commit.message, 'bump:')"
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
name: "Bump version and create changelog with commitizen"
|
|
13
|
+
steps:
|
|
14
|
+
- name: Check out
|
|
15
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
16
|
+
with:
|
|
17
|
+
fetch-depth: 0
|
|
18
|
+
token: '${{ secrets.PERSONAL_ACCESS_TOKEN }}'
|
|
19
|
+
- name: Create bump and changelog
|
|
20
|
+
uses: commitizen-tools/commitizen-action@master
|
|
21
|
+
with:
|
|
22
|
+
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
|
23
|
+
branch: main
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Codecov
|
|
2
|
+
on: [push, pull_request]
|
|
3
|
+
jobs:
|
|
4
|
+
run:
|
|
5
|
+
runs-on: ubuntu-latest
|
|
6
|
+
steps:
|
|
7
|
+
- name: Checkout
|
|
8
|
+
uses: actions/checkout@v4
|
|
9
|
+
with:
|
|
10
|
+
fetch-depth: 0
|
|
11
|
+
- name: Get repository name
|
|
12
|
+
id: repo-name
|
|
13
|
+
uses: MariachiBear/get-repo-name-action@v1.3.0
|
|
14
|
+
with:
|
|
15
|
+
with-owner: 'true'
|
|
16
|
+
string-case: 'uppercase'
|
|
17
|
+
- name: Set up Python 3.10
|
|
18
|
+
uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: '3.10'
|
|
21
|
+
- name: Install dependencies
|
|
22
|
+
shell: bash
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install uv
|
|
25
|
+
uv venv
|
|
26
|
+
if [ "$RUNNER_OS" = "Windows" ]; then
|
|
27
|
+
source .venv/Scripts/activate
|
|
28
|
+
else
|
|
29
|
+
source .venv/bin/activate
|
|
30
|
+
fi
|
|
31
|
+
uv pip install -r requirements-dev.txt
|
|
32
|
+
- name: Run tests and collect coverage
|
|
33
|
+
shell: bash
|
|
34
|
+
run: |
|
|
35
|
+
if [ "$RUNNER_OS" = "Windows" ]; then
|
|
36
|
+
source .venv/Scripts/activate
|
|
37
|
+
else
|
|
38
|
+
source .venv/bin/activate
|
|
39
|
+
fi
|
|
40
|
+
nox -s tests
|
|
41
|
+
- name: Upload coverage reports to Codecov
|
|
42
|
+
uses: codecov/codecov-action@v5
|
|
43
|
+
with:
|
|
44
|
+
slug: loonghao/${{ steps.repo-name.outputs.repository-name }}
|
|
45
|
+
files: 'coverage.xml'
|
|
46
|
+
env:
|
|
47
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: 'issue-translator'
|
|
2
|
+
on:
|
|
3
|
+
issue_comment:
|
|
4
|
+
types: [created]
|
|
5
|
+
issues:
|
|
6
|
+
types: [opened]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: usthe/issues-translate-action@v2.7
|
|
13
|
+
with:
|
|
14
|
+
IS_MODIFY_TITLE: false
|
|
15
|
+
# not require, default false, . Decide whether to modify the issue title
|
|
16
|
+
# if true, the robot account @Issues-translate-bot must have modification permissions, invite @Issues-translate-bot to your project or use your custom bot.
|
|
17
|
+
CUSTOM_BOT_NOTE: Bot detected the issue body's language is not English, translate it automatically. đ¯đđģđ§âđ¤âđ§đĢđ§đŋâđ¤âđ§đģđŠđžâđ¤âđ¨đŋđŦđŋ
|
|
18
|
+
# not require. Customize the translation robot prefix message.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: MR Checks
|
|
2
|
+
on: [ pull_request ]
|
|
3
|
+
|
|
4
|
+
jobs:
|
|
5
|
+
python-check:
|
|
6
|
+
strategy:
|
|
7
|
+
max-parallel: 3
|
|
8
|
+
matrix:
|
|
9
|
+
target:
|
|
10
|
+
- os: 'ubuntu-latest'
|
|
11
|
+
triple: 'x86_64-unknown-linux-gnu'
|
|
12
|
+
- os: 'macos-latest'
|
|
13
|
+
triple: 'x86_64-apple-darwin'
|
|
14
|
+
- os: 'windows-latest'
|
|
15
|
+
triple: 'x86_64-pc-windows-msvc'
|
|
16
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
17
|
+
fail-fast: false
|
|
18
|
+
runs-on: ${{ matrix.target.os }}
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ matrix.python-version }}
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
shell: bash
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install uv
|
|
30
|
+
uv venv
|
|
31
|
+
if [ "${{ matrix.target.os }}" = "windows-latest" ]; then
|
|
32
|
+
source .venv/Scripts/activate
|
|
33
|
+
else
|
|
34
|
+
source .venv/bin/activate
|
|
35
|
+
fi
|
|
36
|
+
uv pip install -r requirements-dev.txt
|
|
37
|
+
- name: lint
|
|
38
|
+
shell: bash
|
|
39
|
+
run: |
|
|
40
|
+
if [ "${{ matrix.target.os }}" = "windows-latest" ]; then
|
|
41
|
+
source .venv/Scripts/activate
|
|
42
|
+
else
|
|
43
|
+
source .venv/bin/activate
|
|
44
|
+
fi
|
|
45
|
+
nox -s lint
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: Upload Python Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
deploy:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
13
|
+
id-token: write
|
|
14
|
+
contents: write
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
18
|
+
with:
|
|
19
|
+
token: "${{ secrets.GITHUB_TOKEN }}"
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
ref: main
|
|
22
|
+
- uses: olegtarasov/get-tag@v2.1.4
|
|
23
|
+
id: get_tag_name
|
|
24
|
+
with:
|
|
25
|
+
tagRegex: "v(?<version>.*)"
|
|
26
|
+
- name: Set up Python
|
|
27
|
+
uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: '3.x'
|
|
30
|
+
- name: Install dependencies
|
|
31
|
+
shell: bash
|
|
32
|
+
run: |
|
|
33
|
+
python -m pip install uv
|
|
34
|
+
uv venv
|
|
35
|
+
if [ "$RUNNER_OS" = "Windows" ]; then
|
|
36
|
+
source .venv/Scripts/activate
|
|
37
|
+
else
|
|
38
|
+
source .venv/bin/activate
|
|
39
|
+
fi
|
|
40
|
+
uv pip install -r requirements-dev.txt
|
|
41
|
+
uv --version
|
|
42
|
+
uv build
|
|
43
|
+
# Note that we don't need credentials.
|
|
44
|
+
# We rely on https://docs.pypi.org/trusted-publishers/.
|
|
45
|
+
- name: Upload to PyPI
|
|
46
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
47
|
+
with:
|
|
48
|
+
packages-dir: dist
|
|
49
|
+
- name: Generate changelog
|
|
50
|
+
id: changelog
|
|
51
|
+
uses: jaywcjlove/changelog-generator@main
|
|
52
|
+
with:
|
|
53
|
+
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
|
54
|
+
filter-author: (|dependabot|renovate\\[bot\\]|dependabot\\[bot\\]|Renovate Bot)
|
|
55
|
+
filter: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'
|
|
56
|
+
template: |
|
|
57
|
+
## Bugs
|
|
58
|
+
{{fix}}
|
|
59
|
+
## Feature
|
|
60
|
+
{{feat}}
|
|
61
|
+
## Improve
|
|
62
|
+
{{refactor,perf,clean}}
|
|
63
|
+
## Misc
|
|
64
|
+
{{chore,style,ci||đļ Nothing change}}
|
|
65
|
+
## Unknown
|
|
66
|
+
{{__unknown__}}
|
|
67
|
+
- uses: ncipollo/release-action@v1
|
|
68
|
+
with:
|
|
69
|
+
artifacts: "dist/*"
|
|
70
|
+
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
|
71
|
+
body: |
|
|
72
|
+
Comparing Changes: ${{ steps.changelog.outputs.compareurl }}
|
|
73
|
+
|
|
74
|
+
${{ steps.changelog.outputs.changelog }}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
*.py[cod]
|
|
3
|
+
|
|
4
|
+
# PyCharm project files
|
|
5
|
+
.idea/
|
|
6
|
+
|
|
7
|
+
# Vim / Notepad++ temp files
|
|
8
|
+
*~
|
|
9
|
+
|
|
10
|
+
# Coverage output
|
|
11
|
+
.coverage
|
|
12
|
+
|
|
13
|
+
# Documentation build folders.
|
|
14
|
+
docs/_*
|
|
15
|
+
docs/src/*
|
|
16
|
+
target/*
|
|
17
|
+
/venv/
|
|
18
|
+
/run_pycharm.bat
|
|
19
|
+
/.nox/
|
|
20
|
+
/build/
|
|
21
|
+
/coverage.xml
|
|
22
|
+
/.zip/
|
|
23
|
+
/.env
|
|
24
|
+
/.windsurfrules
|
|
25
|
+
/docs/
|
|
26
|
+
/dist/
|
|
27
|
+
/.venv/
|
|
28
|
+
/tests/data/convert_schema.py
|
|
29
|
+
/tests/data/schema.bin
|
|
30
|
+
/tests/data/entity_schema.bin
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
default_language_version:
|
|
2
|
+
python: python3.10
|
|
3
|
+
repos:
|
|
4
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
5
|
+
rev: v4.3.0
|
|
6
|
+
hooks:
|
|
7
|
+
- id: no-commit-to-branch # prevent direct commits to main branch
|
|
8
|
+
- id: check-yaml
|
|
9
|
+
args: ["--unsafe"]
|
|
10
|
+
- id: check-toml
|
|
11
|
+
- id: end-of-file-fixer
|
|
12
|
+
- id: trailing-whitespace
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.10
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## v0.2.1 (2025-01-05)
|
|
2
|
+
|
|
3
|
+
### Refactor
|
|
4
|
+
|
|
5
|
+
- **workflows**: Update dependency installation in workflows
|
|
6
|
+
|
|
7
|
+
## v0.2.0 (2025-01-05)
|
|
8
|
+
|
|
9
|
+
### Feat
|
|
10
|
+
|
|
11
|
+
- Implement ShotGrid client factories and enhance connection pool
|
|
12
|
+
|
|
13
|
+
### Refactor
|
|
14
|
+
|
|
15
|
+
- **server**: Refactor server tools registration and error handling
|
|
16
|
+
|
|
17
|
+
## v0.1.0 (2025-01-05)
|
|
18
|
+
|
|
19
|
+
### Feat
|
|
20
|
+
|
|
21
|
+
- Initialize ShotGrid MCP Server project structure and dependencies Add initial files and directories for the ShotGrid MCP Server project, including examples, src, tests, and documentation.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Hal
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: shotgrid-mcp-server
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: A Model Context Protocol (MCP) server implementation using fastmcp
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: <3.11,>=3.10
|
|
7
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
8
|
+
Requires-Dist: fastmcp>=0.4.1
|
|
9
|
+
Requires-Dist: mcp>=1.2.0
|
|
10
|
+
Requires-Dist: platformdirs>=2.5.4
|
|
11
|
+
Requires-Dist: pydantic>=2.0.0
|
|
12
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
13
|
+
Requires-Dist: requests>=2.32.3
|
|
14
|
+
Requires-Dist: shotgun-api3
|
|
15
|
+
Requires-Dist: six>=1.16.0
|
|
16
|
+
Requires-Dist: uvicorn>=0.22.0
|
|
17
|
+
Provides-Extra: lint
|
|
18
|
+
Requires-Dist: black; extra == 'lint'
|
|
19
|
+
Requires-Dist: mypy; extra == 'lint'
|
|
20
|
+
Requires-Dist: ruff; extra == 'lint'
|
|
21
|
+
Requires-Dist: types-requests; extra == 'lint'
|
|
22
|
+
Provides-Extra: test
|
|
23
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'test'
|
|
24
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
|
|
25
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == 'test'
|
|
26
|
+
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
27
|
+
Requires-Dist: pyyaml; extra == 'test'
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
# đ¯ ShotGrid MCP Server
|
|
31
|
+
|
|
32
|
+
English | [įŽäŊ䏿](README_zh.md)
|
|
33
|
+
|
|
34
|
+
<div align="center">
|
|
35
|
+
|
|
36
|
+
A high-performance ShotGrid Model Context Protocol (MCP) server implementation based on fastmcp
|
|
37
|
+
|
|
38
|
+
[](https://pypi.org/project/shotgrid-mcp-server/)
|
|
39
|
+
[](LICENSE)
|
|
40
|
+
[](https://badge.fury.io/py/shotgrid-mcp-server)
|
|
41
|
+
[](https://pepy.tech/project/shotgrid-mcp-server)
|
|
42
|
+
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
## ⨠Features
|
|
46
|
+
|
|
47
|
+
- đ High-performance implementation based on fastmcp
|
|
48
|
+
- đ Complete CRUD operation toolset
|
|
49
|
+
- đŧ Dedicated thumbnail download/upload tools
|
|
50
|
+
- đ Efficient connection pool management
|
|
51
|
+
- â
Comprehensive test coverage with pytest
|
|
52
|
+
- đĻ Dependency management with UV
|
|
53
|
+
- đ Cross-platform support (Windows, macOS, Linux)
|
|
54
|
+
|
|
55
|
+
## đ Quick Start
|
|
56
|
+
|
|
57
|
+
### Installation
|
|
58
|
+
|
|
59
|
+
Install using UV:
|
|
60
|
+
```bash
|
|
61
|
+
uv pip install shotgrid-mcp-server
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Development Setup
|
|
65
|
+
|
|
66
|
+
1. Clone the repository:
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/loonghao/shotgrid-mcp-server.git
|
|
69
|
+
cd shotgrid-mcp-server
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
2. Install development dependencies:
|
|
73
|
+
```bash
|
|
74
|
+
pip install -r requirements-dev.txt
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
3. Development Commands
|
|
78
|
+
All development commands are managed through nox. Check `noxfile.py` for available commands:
|
|
79
|
+
```bash
|
|
80
|
+
# Run tests
|
|
81
|
+
nox -s tests
|
|
82
|
+
|
|
83
|
+
# Run linting
|
|
84
|
+
nox -s lint
|
|
85
|
+
|
|
86
|
+
# Run type checking
|
|
87
|
+
nox -s type_check
|
|
88
|
+
|
|
89
|
+
# And more...
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## âī¸ Configuration
|
|
93
|
+
|
|
94
|
+
### Environment Variables
|
|
95
|
+
|
|
96
|
+
Create a `.env` file with the following variables:
|
|
97
|
+
```bash
|
|
98
|
+
SHOTGRID_URL=your_shotgrid_url
|
|
99
|
+
SCRIPT_NAME=your_script_name
|
|
100
|
+
SCRIPT_KEY=your_script_key
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## đ§ Available Tools
|
|
104
|
+
|
|
105
|
+
- `create`: Create ShotGrid entities
|
|
106
|
+
- `read`: Read entity information
|
|
107
|
+
- `update`: Update entity data
|
|
108
|
+
- `delete`: Delete entities
|
|
109
|
+
- `download_thumbnail`: Download entity thumbnails
|
|
110
|
+
- `upload_thumbnail`: Upload entity thumbnails
|
|
111
|
+
|
|
112
|
+
## đ API Documentation
|
|
113
|
+
|
|
114
|
+
For detailed API documentation, please refer to the documentation files in the `/docs` directory.
|
|
115
|
+
|
|
116
|
+
## đ¤ Contributing
|
|
117
|
+
|
|
118
|
+
Contributions are welcome! Please ensure:
|
|
119
|
+
|
|
120
|
+
1. Follow Google Python Style Guide
|
|
121
|
+
2. Write tests using pytest
|
|
122
|
+
3. Update documentation
|
|
123
|
+
4. Use absolute imports
|
|
124
|
+
5. Follow the project's coding standards
|
|
125
|
+
|
|
126
|
+
## đ Version History
|
|
127
|
+
|
|
128
|
+
See [CHANGELOG.md](CHANGELOG.md) for detailed version history.
|
|
129
|
+
|
|
130
|
+
## đ License
|
|
131
|
+
|
|
132
|
+
MIT License - see the [LICENSE](LICENSE) file for details.
|
|
133
|
+
|
|
134
|
+
## đ MCP Client Configuration
|
|
135
|
+
|
|
136
|
+
To use the ShotGrid MCP server in your MCP client, add the following configuration to your client's settings:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"mcpServers": {
|
|
141
|
+
"shotgrid-server": {
|
|
142
|
+
"command": "uvx",
|
|
143
|
+
"args": [
|
|
144
|
+
"shotgrid-mcp-server"
|
|
145
|
+
],
|
|
146
|
+
"env": {
|
|
147
|
+
"SCRIPT_NAME": "XXX",
|
|
148
|
+
"SCRIPT_KEY": "XX",
|
|
149
|
+
"SHOTGRID_URL": "XXXX"
|
|
150
|
+
},
|
|
151
|
+
"disabled": false,
|
|
152
|
+
"alwaysAllow": [
|
|
153
|
+
"search_entities",
|
|
154
|
+
"create_entity",
|
|
155
|
+
"batch_create",
|
|
156
|
+
"find_entity",
|
|
157
|
+
"get_entity_types",
|
|
158
|
+
"update_entity",
|
|
159
|
+
"download_thumbnail",
|
|
160
|
+
"batch_update",
|
|
161
|
+
"delete_entity",
|
|
162
|
+
"batch_delete"
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### đ Credentials Setup
|
|
170
|
+
|
|
171
|
+
Replace the following values with your ShotGrid credentials:
|
|
172
|
+
- `SCRIPT_NAME`: Your ShotGrid script name
|
|
173
|
+
- `SCRIPT_KEY`: Your ShotGrid script key
|
|
174
|
+
- `SHOTGRID_URL`: Your ShotGrid server URL
|
|
175
|
+
|
|
176
|
+
### đĄī¸ Tool Permissions
|
|
177
|
+
|
|
178
|
+
The `alwaysAllow` section lists the tools that can be executed without requiring user confirmation. These tools are carefully selected for safe operations.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# đ¯ ShotGrid MCP Server
|
|
2
|
+
|
|
3
|
+
English | [įŽäŊ䏿](README_zh.md)
|
|
4
|
+
|
|
5
|
+
<div align="center">
|
|
6
|
+
|
|
7
|
+
A high-performance ShotGrid Model Context Protocol (MCP) server implementation based on fastmcp
|
|
8
|
+
|
|
9
|
+
[](https://pypi.org/project/shotgrid-mcp-server/)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](https://badge.fury.io/py/shotgrid-mcp-server)
|
|
12
|
+
[](https://pepy.tech/project/shotgrid-mcp-server)
|
|
13
|
+
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
## ⨠Features
|
|
17
|
+
|
|
18
|
+
- đ High-performance implementation based on fastmcp
|
|
19
|
+
- đ Complete CRUD operation toolset
|
|
20
|
+
- đŧ Dedicated thumbnail download/upload tools
|
|
21
|
+
- đ Efficient connection pool management
|
|
22
|
+
- â
Comprehensive test coverage with pytest
|
|
23
|
+
- đĻ Dependency management with UV
|
|
24
|
+
- đ Cross-platform support (Windows, macOS, Linux)
|
|
25
|
+
|
|
26
|
+
## đ Quick Start
|
|
27
|
+
|
|
28
|
+
### Installation
|
|
29
|
+
|
|
30
|
+
Install using UV:
|
|
31
|
+
```bash
|
|
32
|
+
uv pip install shotgrid-mcp-server
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Development Setup
|
|
36
|
+
|
|
37
|
+
1. Clone the repository:
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/loonghao/shotgrid-mcp-server.git
|
|
40
|
+
cd shotgrid-mcp-server
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. Install development dependencies:
|
|
44
|
+
```bash
|
|
45
|
+
pip install -r requirements-dev.txt
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
3. Development Commands
|
|
49
|
+
All development commands are managed through nox. Check `noxfile.py` for available commands:
|
|
50
|
+
```bash
|
|
51
|
+
# Run tests
|
|
52
|
+
nox -s tests
|
|
53
|
+
|
|
54
|
+
# Run linting
|
|
55
|
+
nox -s lint
|
|
56
|
+
|
|
57
|
+
# Run type checking
|
|
58
|
+
nox -s type_check
|
|
59
|
+
|
|
60
|
+
# And more...
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## âī¸ Configuration
|
|
64
|
+
|
|
65
|
+
### Environment Variables
|
|
66
|
+
|
|
67
|
+
Create a `.env` file with the following variables:
|
|
68
|
+
```bash
|
|
69
|
+
SHOTGRID_URL=your_shotgrid_url
|
|
70
|
+
SCRIPT_NAME=your_script_name
|
|
71
|
+
SCRIPT_KEY=your_script_key
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## đ§ Available Tools
|
|
75
|
+
|
|
76
|
+
- `create`: Create ShotGrid entities
|
|
77
|
+
- `read`: Read entity information
|
|
78
|
+
- `update`: Update entity data
|
|
79
|
+
- `delete`: Delete entities
|
|
80
|
+
- `download_thumbnail`: Download entity thumbnails
|
|
81
|
+
- `upload_thumbnail`: Upload entity thumbnails
|
|
82
|
+
|
|
83
|
+
## đ API Documentation
|
|
84
|
+
|
|
85
|
+
For detailed API documentation, please refer to the documentation files in the `/docs` directory.
|
|
86
|
+
|
|
87
|
+
## đ¤ Contributing
|
|
88
|
+
|
|
89
|
+
Contributions are welcome! Please ensure:
|
|
90
|
+
|
|
91
|
+
1. Follow Google Python Style Guide
|
|
92
|
+
2. Write tests using pytest
|
|
93
|
+
3. Update documentation
|
|
94
|
+
4. Use absolute imports
|
|
95
|
+
5. Follow the project's coding standards
|
|
96
|
+
|
|
97
|
+
## đ Version History
|
|
98
|
+
|
|
99
|
+
See [CHANGELOG.md](CHANGELOG.md) for detailed version history.
|
|
100
|
+
|
|
101
|
+
## đ License
|
|
102
|
+
|
|
103
|
+
MIT License - see the [LICENSE](LICENSE) file for details.
|
|
104
|
+
|
|
105
|
+
## đ MCP Client Configuration
|
|
106
|
+
|
|
107
|
+
To use the ShotGrid MCP server in your MCP client, add the following configuration to your client's settings:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"mcpServers": {
|
|
112
|
+
"shotgrid-server": {
|
|
113
|
+
"command": "uvx",
|
|
114
|
+
"args": [
|
|
115
|
+
"shotgrid-mcp-server"
|
|
116
|
+
],
|
|
117
|
+
"env": {
|
|
118
|
+
"SCRIPT_NAME": "XXX",
|
|
119
|
+
"SCRIPT_KEY": "XX",
|
|
120
|
+
"SHOTGRID_URL": "XXXX"
|
|
121
|
+
},
|
|
122
|
+
"disabled": false,
|
|
123
|
+
"alwaysAllow": [
|
|
124
|
+
"search_entities",
|
|
125
|
+
"create_entity",
|
|
126
|
+
"batch_create",
|
|
127
|
+
"find_entity",
|
|
128
|
+
"get_entity_types",
|
|
129
|
+
"update_entity",
|
|
130
|
+
"download_thumbnail",
|
|
131
|
+
"batch_update",
|
|
132
|
+
"delete_entity",
|
|
133
|
+
"batch_delete"
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### đ Credentials Setup
|
|
141
|
+
|
|
142
|
+
Replace the following values with your ShotGrid credentials:
|
|
143
|
+
- `SCRIPT_NAME`: Your ShotGrid script name
|
|
144
|
+
- `SCRIPT_KEY`: Your ShotGrid script key
|
|
145
|
+
- `SHOTGRID_URL`: Your ShotGrid server URL
|
|
146
|
+
|
|
147
|
+
### đĄī¸ Tool Permissions
|
|
148
|
+
|
|
149
|
+
The `alwaysAllow` section lists the tools that can be executed without requiring user confirmation. These tools are carefully selected for safe operations.
|