Merge branch 'main' of github.com:taylorwilsdon/google_workspace_mcp into issues/545

This commit is contained in:
Taylor Wilsdon
2026-03-10 11:40:12 -04:00
4 changed files with 40 additions and 2 deletions

View File

@@ -13,7 +13,7 @@ RUN pip install --no-cache-dir uv
COPY . . COPY . .
# Install Python dependencies using uv sync # Install Python dependencies using uv sync
RUN uv sync --frozen --no-dev RUN uv sync --frozen --no-dev --extra disk
# Create non-root user for security # Create non-root user for security
RUN useradd --create-home --shell /bin/bash app \ RUN useradd --create-home --shell /bin/bash app \

View File

@@ -1307,6 +1307,8 @@ export WORKSPACE_MCP_OAUTH_PROXY_VALKEY_HOST=redis.example.com
export WORKSPACE_MCP_OAUTH_PROXY_VALKEY_PORT=6379 export WORKSPACE_MCP_OAUTH_PROXY_VALKEY_PORT=6379
``` ```
> Disk support requires `workspace-mcp[disk]` (or `py-key-value-aio[disk]`) when installing from source.
> The official Docker image includes the `disk` extra by default.
> Valkey support is optional. Install `workspace-mcp[valkey]` (or `py-key-value-aio[valkey]`) only if you enable the Valkey backend. > Valkey support is optional. Install `workspace-mcp[valkey]` (or `py-key-value-aio[valkey]`) only if you enable the Valkey backend.
> Windows: building `valkey-glide` from source requires MSVC C++ build tools with C11 support. If you see `aws-lc-sys` C11 errors, set `CFLAGS=/std:c11`. > Windows: building `valkey-glide` from source requires MSVC C++ build tools with C11 support. If you see `aws-lc-sys` C11 errors, set `CFLAGS=/std:c11`.

View File

@@ -58,6 +58,9 @@ Changelog = "https://github.com/taylorwilsdon/google_workspace_mcp/releases"
workspace-mcp = "main:main" workspace-mcp = "main:main"
[project.optional-dependencies] [project.optional-dependencies]
disk = [
"py-key-value-aio[disk]>=0.3.0",
]
valkey = [ valkey = [
"py-key-value-aio[valkey]>=0.3.0", "py-key-value-aio[valkey]>=0.3.0",
] ]
@@ -80,6 +83,9 @@ dev = [
] ]
[dependency-groups] [dependency-groups]
disk = [
"py-key-value-aio[disk]>=0.3.0",
]
valkey = [ valkey = [
"py-key-value-aio[valkey]>=0.3.0", "py-key-value-aio[valkey]>=0.3.0",
] ]

32
uv.lock generated
View File

@@ -404,6 +404,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/1c/7c/996760c30f1302704af57c66ff2d723f7d656d0d0b93563b5528a51484bb/cyclopts-4.5.1-py3-none-any.whl", hash = "sha256:0642c93601e554ca6b7b9abd81093847ea4448b2616280f2a0952416574e8c7a", size = 199807, upload-time = "2026-01-25T15:23:55.219Z" }, { url = "https://files.pythonhosted.org/packages/1c/7c/996760c30f1302704af57c66ff2d723f7d656d0d0b93563b5528a51484bb/cyclopts-4.5.1-py3-none-any.whl", hash = "sha256:0642c93601e554ca6b7b9abd81093847ea4448b2616280f2a0952416574e8c7a", size = 199807, upload-time = "2026-01-25T15:23:55.219Z" },
] ]
[[package]]
name = "diskcache"
version = "5.6.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6/diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc", size = 67916 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/3f/27/4570e78fc0bf5ea0ca45eb1de3818a23787af9b390c0b0a0033a1b8236f9/diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19", size = 45550 },
]
[[package]] [[package]]
name = "defusedxml" name = "defusedxml"
version = "0.7.1" version = "0.7.1"
@@ -950,6 +959,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2", size = 9592, upload-time = "2025-01-10T18:43:11.88Z" }, { url = "https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2", size = 9592, upload-time = "2025-01-10T18:43:11.88Z" },
] ]
[[package]]
name = "pathvalidate"
version = "3.3.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/fa/2a/52a8da6fe965dea6192eb716b357558e103aea0a1e9a8352ad575a8406ca/pathvalidate-3.3.1.tar.gz", hash = "sha256:b18c07212bfead624345bb8e1d6141cdcf15a39736994ea0b94035ad2b1ba177", size = 63262 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl", hash = "sha256:5263baab691f8e1af96092fa5137ee17df5bdfbd6cff1fcac4d6ef4bc2e1735f", size = 24305 },
]
[[package]] [[package]]
name = "platformdirs" name = "platformdirs"
version = "4.5.1" version = "4.5.1"
@@ -1009,6 +1027,10 @@ wheels = [
] ]
[package.optional-dependencies] [package.optional-dependencies]
disk = [
{ name = "diskcache" },
{ name = "pathvalidate" },
]
filetree = [ filetree = [
{ name = "aiofile" }, { name = "aiofile" },
{ name = "anyio" }, { name = "anyio" },
@@ -2078,6 +2100,9 @@ dev = [
{ name = "tomlkit" }, { name = "tomlkit" },
{ name = "twine" }, { name = "twine" },
] ]
disk = [
{ name = "py-key-value-aio", extra = ["disk"] },
]
release = [ release = [
{ name = "tomlkit" }, { name = "tomlkit" },
{ name = "twine" }, { name = "twine" },
@@ -2100,6 +2125,9 @@ dev = [
{ name = "tomlkit" }, { name = "tomlkit" },
{ name = "twine" }, { name = "twine" },
] ]
disk = [
{ name = "py-key-value-aio", extra = ["disk"] },
]
release = [ release = [
{ name = "tomlkit" }, { name = "tomlkit" },
{ name = "twine" }, { name = "twine" },
@@ -2124,6 +2152,7 @@ requires-dist = [
{ name = "google-auth-oauthlib", specifier = ">=1.2.2" }, { name = "google-auth-oauthlib", specifier = ">=1.2.2" },
{ name = "httpx", specifier = ">=0.28.1" }, { name = "httpx", specifier = ">=0.28.1" },
{ name = "py-key-value-aio", specifier = ">=0.3.0" }, { name = "py-key-value-aio", specifier = ">=0.3.0" },
{ name = "py-key-value-aio", extras = ["disk"], marker = "extra == 'disk'", specifier = ">=0.3.0" },
{ name = "py-key-value-aio", extras = ["valkey"], marker = "extra == 'valkey'", specifier = ">=0.3.0" }, { name = "py-key-value-aio", extras = ["valkey"], marker = "extra == 'valkey'", specifier = ">=0.3.0" },
{ name = "pyjwt", specifier = ">=2.10.1" }, { name = "pyjwt", specifier = ">=2.10.1" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.0" }, { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.0" },
@@ -2140,7 +2169,7 @@ requires-dist = [
{ name = "twine", marker = "extra == 'dev'", specifier = ">=5.0.0" }, { name = "twine", marker = "extra == 'dev'", specifier = ">=5.0.0" },
{ name = "twine", marker = "extra == 'release'", specifier = ">=5.0.0" }, { name = "twine", marker = "extra == 'release'", specifier = ">=5.0.0" },
] ]
provides-extras = ["valkey", "test", "release", "dev"] provides-extras = ["disk", "valkey", "test", "release", "dev"]
[package.metadata.requires-dev] [package.metadata.requires-dev]
dev = [ dev = [
@@ -2151,6 +2180,7 @@ dev = [
{ name = "tomlkit", specifier = ">=0.13.3" }, { name = "tomlkit", specifier = ">=0.13.3" },
{ name = "twine", specifier = ">=5.0.0" }, { name = "twine", specifier = ">=5.0.0" },
] ]
disk = [{ name = "py-key-value-aio", extras = ["disk"], specifier = ">=0.3.0" }]
release = [ release = [
{ name = "tomlkit", specifier = ">=0.13.3" }, { name = "tomlkit", specifier = ">=0.13.3" },
{ name = "twine", specifier = ">=5.0.0" }, { name = "twine", specifier = ">=5.0.0" },