mcp-server-appwrite 0.3.2__tar.gz → 0.4__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.
Files changed (43) hide show
  1. mcp_server_appwrite-0.4/.github/workflows/ci.yml +74 -0
  2. mcp_server_appwrite-0.4/.github/workflows/publish.yml +32 -0
  3. mcp_server_appwrite-0.3.2/README.md → mcp_server_appwrite-0.4/PKG-INFO +50 -23
  4. mcp_server_appwrite-0.3.2/PKG-INFO → mcp_server_appwrite-0.4/README.md +33 -34
  5. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/pyproject.toml +18 -1
  6. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/server.json +3 -3
  7. mcp_server_appwrite-0.4/src/mcp_server_appwrite/__init__.py +16 -0
  8. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/src/mcp_server_appwrite/__main__.py +1 -1
  9. mcp_server_appwrite-0.4/src/mcp_server_appwrite/operator.py +656 -0
  10. mcp_server_appwrite-0.4/src/mcp_server_appwrite/server.py +560 -0
  11. mcp_server_appwrite-0.4/src/mcp_server_appwrite/service.py +209 -0
  12. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/src/mcp_server_appwrite/tool_manager.py +5 -4
  13. mcp_server_appwrite-0.4/tests/integration/support.py +270 -0
  14. mcp_server_appwrite-0.4/tests/integration/test_avatars.py +12 -0
  15. mcp_server_appwrite-0.4/tests/integration/test_functions.py +52 -0
  16. mcp_server_appwrite-0.4/tests/integration/test_locale.py +12 -0
  17. mcp_server_appwrite-0.4/tests/integration/test_messaging.py +37 -0
  18. mcp_server_appwrite-0.4/tests/integration/test_operator.py +17 -0
  19. mcp_server_appwrite-0.4/tests/integration/test_sites.py +51 -0
  20. mcp_server_appwrite-0.4/tests/integration/test_storage.py +47 -0
  21. mcp_server_appwrite-0.4/tests/integration/test_tables_db.py +63 -0
  22. mcp_server_appwrite-0.4/tests/integration/test_teams.py +50 -0
  23. mcp_server_appwrite-0.4/tests/integration/test_users.py +32 -0
  24. mcp_server_appwrite-0.4/tests/test_all.py +26 -0
  25. mcp_server_appwrite-0.4/tests/unit/test_operator.py +183 -0
  26. mcp_server_appwrite-0.4/tests/unit/test_server.py +355 -0
  27. mcp_server_appwrite-0.4/tests/unit/test_service.py +68 -0
  28. mcp_server_appwrite-0.4/uv.lock +769 -0
  29. mcp_server_appwrite-0.3.2/.github/workflows/publish.yml +0 -56
  30. mcp_server_appwrite-0.3.2/src/mcp_server_appwrite/__init__.py +0 -11
  31. mcp_server_appwrite-0.3.2/src/mcp_server_appwrite/server.py +0 -146
  32. mcp_server_appwrite-0.3.2/src/mcp_server_appwrite/service.py +0 -127
  33. mcp_server_appwrite-0.3.2/uv.lock +0 -431
  34. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/.env.example +0 -0
  35. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/.gitignore +0 -0
  36. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/.python-version +0 -0
  37. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/LICENSE +0 -0
  38. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/images/appwrite-logo-darkbg.png +0 -0
  39. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/images/appwrite-logo-lightbg.png +0 -0
  40. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/images/claude-desktop-integration.png +0 -0
  41. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/images/cursor-integration.png +0 -0
  42. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/images/vs-code-integration.png +0 -0
  43. {mcp_server_appwrite-0.3.2 → mcp_server_appwrite-0.4}/images/windsurf-integration.png +0 -0
@@ -0,0 +1,74 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+
7
+ jobs:
8
+ format:
9
+ name: Format
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Check out code
13
+ uses: actions/checkout@v4
14
+
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.12"
19
+
20
+ - name: Set up uv
21
+ uses: astral-sh/setup-uv@v7
22
+
23
+ - name: Install dev dependencies
24
+ run: uv sync --group dev
25
+
26
+ - name: Check formatting
27
+ run: uv run --group dev black --check src tests
28
+
29
+ unit:
30
+ name: Unit
31
+ runs-on: ubuntu-latest
32
+ steps:
33
+ - name: Check out code
34
+ uses: actions/checkout@v4
35
+
36
+ - name: Set up Python
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: "3.12"
40
+
41
+ - name: Set up uv
42
+ uses: astral-sh/setup-uv@v7
43
+
44
+ - name: Install dependencies
45
+ run: uv sync
46
+
47
+ - name: Run unit tests
48
+ run: uv run python -m unittest discover -s tests/unit -v
49
+
50
+ integration:
51
+ name: Integration
52
+ runs-on: ubuntu-latest
53
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
54
+ env:
55
+ APPWRITE_PROJECT_ID: ${{ secrets.APPWRITE_PROJECT_ID }}
56
+ APPWRITE_API_KEY: ${{ secrets.APPWRITE_API_KEY }}
57
+ APPWRITE_ENDPOINT: ${{ secrets.APPWRITE_ENDPOINT }}
58
+ steps:
59
+ - name: Check out code
60
+ uses: actions/checkout@v4
61
+
62
+ - name: Set up Python
63
+ uses: actions/setup-python@v5
64
+ with:
65
+ python-version: "3.12"
66
+
67
+ - name: Set up uv
68
+ uses: astral-sh/setup-uv@v7
69
+
70
+ - name: Install dependencies
71
+ run: uv sync --extra integration
72
+
73
+ - name: Run integration tests
74
+ run: uv run --extra integration python -m unittest discover -s tests/integration -v
@@ -0,0 +1,32 @@
1
+ name: Publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish:
9
+ name: Release build and publish
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Check out code
13
+ uses: actions/checkout@v4
14
+
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.12"
19
+
20
+ - name: Install build dependencies
21
+ run: |
22
+ python -m pip install --upgrade pip
23
+ pip install build twine
24
+
25
+ - name: Build package
26
+ run: python -m build
27
+
28
+ - name: Publish to PyPI
29
+ env:
30
+ TWINE_USERNAME: __token__
31
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
32
+ run: twine upload dist/*
@@ -1,8 +1,25 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp-server-appwrite
3
+ Version: 0.4
4
+ Summary: MCP (Model Context Protocol) server for Appwrite
5
+ License-File: LICENSE
6
+ Requires-Python: >=3.12
7
+ Requires-Dist: appwrite>=13.4.1
8
+ Requires-Dist: docstring-parser>=0.16
9
+ Requires-Dist: mcp[cli]>=1.3.0
10
+ Requires-Dist: python-dotenv>=1.0.1
11
+ Provides-Extra: integration
12
+ Requires-Dist: argon2-cffi>=23.1.0; extra == 'integration'
13
+ Requires-Dist: bcrypt>=4.1.2; extra == 'integration'
14
+ Requires-Dist: passlib>=1.7.4; extra == 'integration'
15
+ Requires-Dist: pycryptodome>=3.20.0; extra == 'integration'
16
+ Description-Content-Type: text/markdown
17
+
1
18
  # Appwrite MCP server
2
19
 
3
20
  mcp-name: io.github.appwrite/mcp-for-api
4
21
 
5
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=appwrite&config=eyJjb21tYW5kIjoidXZ4IG1jcC1zZXJ2ZXItYXBwd3JpdGUgLS11c2VycyIsImVudiI6eyJBUFBXUklURV9BUElfS0VZIjoiPHlvdXItYXBpLWtleT4iLCJBUFBXUklURV9QUk9KRUNUX0lEIjoiPHlvdXItcHJvamVjdC1pZD4iLCJBUFBXUklURV9FTkRQT0lOVCI6Imh0dHBzOi8vPFJFR0lPTj4uY2xvdWQuYXBwd3JpdGUuaW8vdjEifX0%3D)
22
+ [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=appwrite&config=%7B%22command%22%3A%22uvx%20mcp-server-appwrite%22%2C%22env%22%3A%7B%22APPWRITE_API_KEY%22%3A%22%3Cyour-api-key%3E%22%2C%22APPWRITE_PROJECT_ID%22%3A%22%3Cyour-project-id%3E%22%2C%22APPWRITE_ENDPOINT%22%3A%22https%3A//%3CREGION%3E.cloud.appwrite.io/v1%22%7D%7D)
6
23
 
7
24
  ## Overview
8
25
 
@@ -23,6 +40,8 @@ A Model Context Protocol server for interacting with Appwrite's API. This server
23
40
 
24
41
  > Before launching the MCP server, you must setup an [Appwrite project](https://cloud.appwrite.io/) and create an API key with the necessary scopes enabled.
25
42
 
43
+ The server validates the credentials and scopes required for its built-in Appwrite service set during startup. If the endpoint, project ID, API key, or scopes are wrong, the MCP server will fail to start instead of waiting for the first tool call to fail.
44
+
26
45
  Create a `.env` file in your working directory and add the following:
27
46
 
28
47
  ```env
@@ -64,7 +83,7 @@ When using [`uv`](https://docs.astral.sh/uv/) no specific installation is needed
64
83
  use [`uvx`](https://docs.astral.sh/uv/guides/tools/) to directly run *mcp-server-appwrite*.
65
84
 
66
85
  ```bash
67
- uvx mcp-server-appwrite [args]
86
+ uvx mcp-server-appwrite
68
87
  ```
69
88
 
70
89
  ### Using pip
@@ -75,30 +94,22 @@ pip install mcp-server-appwrite
75
94
  Then run the server using
76
95
 
77
96
  ```bash
78
- python -m mcp_server_appwrite [args]
97
+ python -m mcp_server_appwrite
79
98
  ```
80
99
 
81
- ### Command-line arguments
100
+ ### Tool surface
82
101
 
83
- Both the `uv` and `pip` setup processes require certain arguments to enable MCP tools for various Appwrite APIs.
102
+ The server no longer accepts service-selection or mode flags. It always starts in a compact workflow so the MCP client only sees a small operator-style surface while the full Appwrite catalog stays internal.
84
103
 
85
- > When an MCP tool is enabled, the tool's definition is passed to the LLM, using up tokens from the model's available context window. As a result, the effective context window is reduced.
86
- >
87
- > The default Appwrite MCP server ships with only the Databases tools (our most commonly used API) enabled to stay within these limits. Additional tools can be enabled by using the flags below.
104
+ - Only 2 MCP tools are exposed to the model:
105
+ - `appwrite_search_tools`
106
+ - `appwrite_call_tool`
107
+ - The full Appwrite tool catalog stays internal and is searched at runtime.
108
+ - Large tool outputs are stored as MCP resources and returned as preview text plus a resource URI.
109
+ - Mutating hidden tools require `confirm_write=true`.
110
+ - The server automatically registers all supported Appwrite services except the legacy Databases API.
88
111
 
89
- | Argument | Description |
90
- | --- | --- |
91
- | `--tablesdb` | Enables the TablesDB API |
92
- | `--users` | Enables the Users API |
93
- | `--teams` | Enables the Teams API |
94
- | `--storage` | Enables the Storage API |
95
- | `--functions` | Enables the Functions API |
96
- | `--messaging` | Enables the Messaging API |
97
- | `--locale` | Enables the Locale API |
98
- | `--avatars` | Enables the Avatars API |
99
- | `--sites` | Enables the Sites API |
100
- | `--all` | Enables all Appwrite APIs |
101
- | `--databases` | Enables the Legacy Databases API |
112
+ If you still have older MCP configs that pass flags such as `--mode` or `--users`, remove them.
102
113
 
103
114
  ## Usage with Claude Desktop
104
115
 
@@ -184,7 +195,7 @@ Head to Windsurf `Settings > Cascade > Model Context Protocol (MCP) Servers` and
184
195
  "servers": {
185
196
  "appwrite": {
186
197
  "command": "uvx",
187
- "args": ["mcp-server-appwrite", "--users"],
198
+ "args": ["mcp-server-appwrite"],
188
199
  "env": {
189
200
  "APPWRITE_PROJECT_ID": "<YOUR_PROJECT_ID>",
190
201
  "APPWRITE_API_KEY": "<YOUR_API_KEY>",
@@ -206,7 +217,7 @@ Head to Windsurf `Settings > Cascade > Model Context Protocol (MCP) Servers` and
206
217
  ### Clone the repository
207
218
 
208
219
  ```bash
209
- git clone https://github.com/appwrite/mcp.git
220
+ git clone https://github.com/appwrite/mcp-for-api.git
210
221
  ```
211
222
 
212
223
  ### Install `uv`
@@ -251,6 +262,22 @@ source .venv/bin/activate
251
262
  uv run -v --directory ./ mcp-server-appwrite
252
263
  ```
253
264
 
265
+ ## Testing
266
+
267
+ ### Unit tests
268
+
269
+ ```bash
270
+ uv run python -m unittest discover -s tests/unit -v
271
+ ```
272
+
273
+ ### Live integration tests
274
+
275
+ These tests create and delete real Appwrite resources against a real Appwrite project. They run automatically when valid Appwrite credentials are available in the environment or `.env`.
276
+
277
+ ```bash
278
+ uv run --extra integration python -m unittest discover -s tests/integration -v
279
+ ```
280
+
254
281
  ## Debugging
255
282
 
256
283
  You can use the MCP inspector to debug the server.
@@ -1,19 +1,8 @@
1
- Metadata-Version: 2.4
2
- Name: mcp-server-appwrite
3
- Version: 0.3.2
4
- Summary: MCP (Model Context Protocol) server for Appwrite
5
- License-File: LICENSE
6
- Requires-Python: >=3.12
7
- Requires-Dist: appwrite>=13.4.1
8
- Requires-Dist: docstring-parser>=0.16
9
- Requires-Dist: mcp[cli]>=1.3.0
10
- Description-Content-Type: text/markdown
11
-
12
1
  # Appwrite MCP server
13
2
 
14
3
  mcp-name: io.github.appwrite/mcp-for-api
15
4
 
16
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=appwrite&config=eyJjb21tYW5kIjoidXZ4IG1jcC1zZXJ2ZXItYXBwd3JpdGUgLS11c2VycyIsImVudiI6eyJBUFBXUklURV9BUElfS0VZIjoiPHlvdXItYXBpLWtleT4iLCJBUFBXUklURV9QUk9KRUNUX0lEIjoiPHlvdXItcHJvamVjdC1pZD4iLCJBUFBXUklURV9FTkRQT0lOVCI6Imh0dHBzOi8vPFJFR0lPTj4uY2xvdWQuYXBwd3JpdGUuaW8vdjEifX0%3D)
5
+ [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=appwrite&config=%7B%22command%22%3A%22uvx%20mcp-server-appwrite%22%2C%22env%22%3A%7B%22APPWRITE_API_KEY%22%3A%22%3Cyour-api-key%3E%22%2C%22APPWRITE_PROJECT_ID%22%3A%22%3Cyour-project-id%3E%22%2C%22APPWRITE_ENDPOINT%22%3A%22https%3A//%3CREGION%3E.cloud.appwrite.io/v1%22%7D%7D)
17
6
 
18
7
  ## Overview
19
8
 
@@ -34,6 +23,8 @@ A Model Context Protocol server for interacting with Appwrite's API. This server
34
23
 
35
24
  > Before launching the MCP server, you must setup an [Appwrite project](https://cloud.appwrite.io/) and create an API key with the necessary scopes enabled.
36
25
 
26
+ The server validates the credentials and scopes required for its built-in Appwrite service set during startup. If the endpoint, project ID, API key, or scopes are wrong, the MCP server will fail to start instead of waiting for the first tool call to fail.
27
+
37
28
  Create a `.env` file in your working directory and add the following:
38
29
 
39
30
  ```env
@@ -75,7 +66,7 @@ When using [`uv`](https://docs.astral.sh/uv/) no specific installation is needed
75
66
  use [`uvx`](https://docs.astral.sh/uv/guides/tools/) to directly run *mcp-server-appwrite*.
76
67
 
77
68
  ```bash
78
- uvx mcp-server-appwrite [args]
69
+ uvx mcp-server-appwrite
79
70
  ```
80
71
 
81
72
  ### Using pip
@@ -86,30 +77,22 @@ pip install mcp-server-appwrite
86
77
  Then run the server using
87
78
 
88
79
  ```bash
89
- python -m mcp_server_appwrite [args]
80
+ python -m mcp_server_appwrite
90
81
  ```
91
82
 
92
- ### Command-line arguments
83
+ ### Tool surface
93
84
 
94
- Both the `uv` and `pip` setup processes require certain arguments to enable MCP tools for various Appwrite APIs.
85
+ The server no longer accepts service-selection or mode flags. It always starts in a compact workflow so the MCP client only sees a small operator-style surface while the full Appwrite catalog stays internal.
95
86
 
96
- > When an MCP tool is enabled, the tool's definition is passed to the LLM, using up tokens from the model's available context window. As a result, the effective context window is reduced.
97
- >
98
- > The default Appwrite MCP server ships with only the Databases tools (our most commonly used API) enabled to stay within these limits. Additional tools can be enabled by using the flags below.
87
+ - Only 2 MCP tools are exposed to the model:
88
+ - `appwrite_search_tools`
89
+ - `appwrite_call_tool`
90
+ - The full Appwrite tool catalog stays internal and is searched at runtime.
91
+ - Large tool outputs are stored as MCP resources and returned as preview text plus a resource URI.
92
+ - Mutating hidden tools require `confirm_write=true`.
93
+ - The server automatically registers all supported Appwrite services except the legacy Databases API.
99
94
 
100
- | Argument | Description |
101
- | --- | --- |
102
- | `--tablesdb` | Enables the TablesDB API |
103
- | `--users` | Enables the Users API |
104
- | `--teams` | Enables the Teams API |
105
- | `--storage` | Enables the Storage API |
106
- | `--functions` | Enables the Functions API |
107
- | `--messaging` | Enables the Messaging API |
108
- | `--locale` | Enables the Locale API |
109
- | `--avatars` | Enables the Avatars API |
110
- | `--sites` | Enables the Sites API |
111
- | `--all` | Enables all Appwrite APIs |
112
- | `--databases` | Enables the Legacy Databases API |
95
+ If you still have older MCP configs that pass flags such as `--mode` or `--users`, remove them.
113
96
 
114
97
  ## Usage with Claude Desktop
115
98
 
@@ -195,7 +178,7 @@ Head to Windsurf `Settings > Cascade > Model Context Protocol (MCP) Servers` and
195
178
  "servers": {
196
179
  "appwrite": {
197
180
  "command": "uvx",
198
- "args": ["mcp-server-appwrite", "--users"],
181
+ "args": ["mcp-server-appwrite"],
199
182
  "env": {
200
183
  "APPWRITE_PROJECT_ID": "<YOUR_PROJECT_ID>",
201
184
  "APPWRITE_API_KEY": "<YOUR_API_KEY>",
@@ -217,7 +200,7 @@ Head to Windsurf `Settings > Cascade > Model Context Protocol (MCP) Servers` and
217
200
  ### Clone the repository
218
201
 
219
202
  ```bash
220
- git clone https://github.com/appwrite/mcp.git
203
+ git clone https://github.com/appwrite/mcp-for-api.git
221
204
  ```
222
205
 
223
206
  ### Install `uv`
@@ -262,6 +245,22 @@ source .venv/bin/activate
262
245
  uv run -v --directory ./ mcp-server-appwrite
263
246
  ```
264
247
 
248
+ ## Testing
249
+
250
+ ### Unit tests
251
+
252
+ ```bash
253
+ uv run python -m unittest discover -s tests/unit -v
254
+ ```
255
+
256
+ ### Live integration tests
257
+
258
+ These tests create and delete real Appwrite resources against a real Appwrite project. They run automatically when valid Appwrite credentials are available in the environment or `.env`.
259
+
260
+ ```bash
261
+ uv run --extra integration python -m unittest discover -s tests/integration -v
262
+ ```
263
+
265
264
  ## Debugging
266
265
 
267
266
  You can use the MCP inspector to debug the server.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcp-server-appwrite"
3
- version = "0.3.2"
3
+ version = "0.4"
4
4
  description = "MCP (Model Context Protocol) server for Appwrite"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -8,11 +8,28 @@ dependencies = [
8
8
  "appwrite>=13.4.1",
9
9
  "docstring-parser>=0.16",
10
10
  "mcp[cli]>=1.3.0",
11
+ "python-dotenv>=1.0.1",
12
+ ]
13
+
14
+ [project.optional-dependencies]
15
+ integration = [
16
+ "argon2-cffi>=23.1.0",
17
+ "bcrypt>=4.1.2",
18
+ "passlib>=1.7.4",
19
+ "pycryptodome>=3.20.0",
20
+ ]
21
+
22
+ [dependency-groups]
23
+ dev = [
24
+ "black>=25.1.0",
11
25
  ]
12
26
 
13
27
  [project.scripts]
14
28
  mcp-server-appwrite = "mcp_server_appwrite.__main__:main"
15
29
 
30
+ [tool.black]
31
+ target-version = ["py312"]
32
+
16
33
  [build-system]
17
34
  requires = ["hatchling"]
18
35
  build-backend = "hatchling.build"
@@ -1,15 +1,15 @@
1
1
  {
2
- "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
3
3
  "name": "io.github.appwrite/mcp-for-api",
4
4
  "description": "MCP (Model Context Protocol) server for Appwrite",
5
- "version": "0.3.2",
5
+ "version": "0.4",
6
6
  "repository": {
7
7
  "url": "https://github.com/appwrite/mcp-for-api",
8
8
  "source": "github"
9
9
  },
10
10
  "packages": [
11
11
  {
12
- "version": "0.3.2",
12
+ "version": "0.4",
13
13
  "registryType": "pypi",
14
14
  "identifier": "mcp-server-appwrite",
15
15
  "transport": {
@@ -0,0 +1,16 @@
1
+ import asyncio
2
+ import sys
3
+
4
+
5
+ def main():
6
+ """Main entry point for the package."""
7
+ from .server import _run
8
+
9
+ try:
10
+ asyncio.run(_run())
11
+ except KeyboardInterrupt:
12
+ print("[appwrite-mcp] Shutdown requested", file=sys.stderr, flush=True)
13
+ return 0
14
+
15
+
16
+ __all__ = ["main"]
@@ -1,4 +1,4 @@
1
1
  from mcp_server_appwrite import main
2
2
 
3
3
  if __name__ == "__main__":
4
- main()
4
+ main()