Skip to content

Pin appwrite below 16 to avoid tablesdb startup failures#41

Merged
ChiragAgg5k merged 1 commit intomainfrom
fix/pin-appwrite-pre-16
Apr 11, 2026
Merged

Pin appwrite below 16 to avoid tablesdb startup failures#41
ChiragAgg5k merged 1 commit intomainfrom
fix/pin-appwrite-pre-16

Conversation

@ChiragAgg5k
Copy link
Copy Markdown
Member

Summary

Pin the Python Appwrite SDK to <16.

This keeps mcp-server-appwrite on the last pre-strict-typing SDK line and avoids the TablesDB.list() startup failure some users are hitting against Appwrite Cloud.

Why

mcp-server-appwrite 0.4 currently performs a minimal startup probe against tables_db by calling TablesDB.list().

For older Python SDK versions, that call returned a raw dict, so malformed nested response values from /tablesdb were tolerated.

Starting with appwrite 16.0.0, the Python SDK switched TablesDB.list() to parse into a typed DatabaseList. That makes the startup probe fail fast when Appwrite Cloud returns malformed nested values such as:

  • databases[*].policies[*].status = ""
  • databases[*].archives[*].documentSecurity = ""

We verified the version boundary while investigating:

  • 15.3.0 still returns Dict[str, Any]
  • 16.0.0 returns typed DatabaseList
  • 16.0.0 and 17.0.0 both fail on the malformed synthetic /tablesdb payload

Pinning to <16 is the narrowest dependency change that restores the previous behavior without changing the server code path.

Changes

  • update pyproject.toml to require appwrite>=13.4.1,<16
  • refresh uv.lock metadata to match the new constraint

Testing

  • uv lock
  • uv run python -m unittest discover -s tests/unit -p 'test_server.py'

Notes

There is no linked issue number in this repo for this change yet. This is a compatibility pin to avoid known startup failures until the upstream response mismatch is resolved or the server is updated to handle it differently.

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Apr 11, 2026

Greptile Summary

Pins the appwrite Python SDK to >=13.4.1,<16 in pyproject.toml and updates the corresponding uv.lock metadata. The resolved lock version remains at 13.4.1 — only the metadata constraint section is updated, which is the expected uv behavior without --upgrade.

Confidence Score: 5/5

Safe to merge — minimal, well-scoped dependency pin with no code changes.

Both changed files contain only the intended constraint update; the lock file's resolved package version is unaffected and already satisfies the new bound. No logic or security concerns introduced.

No files require special attention.

Important Files Changed

Filename Overview
pyproject.toml Adds <16 upper bound to the appwrite dependency, pinning to the last pre-strict-typing SDK line to avoid TablesDB startup failures.
uv.lock Propagates the new >=13.4.1,<16 constraint into the lock file metadata; the resolved appwrite version stays at 13.4.1 (no package entry changes).

Reviews (1): Last reviewed commit: "Pin appwrite below 16" | Re-trigger Greptile

@ChiragAgg5k ChiragAgg5k merged commit 2f413e7 into main Apr 11, 2026
7 checks passed
@ChiragAgg5k ChiragAgg5k deleted the fix/pin-appwrite-pre-16 branch April 11, 2026 14:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant