Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ needs no credentials. Dashboards live in the `dashboards` repo under `MCP/`.

The server boots in a compact workflow: the client sees up to 4 tools
(`appwrite_get_context`, `appwrite_search_tools`, `appwrite_call_tool`, and
optionally `appwrite_search_docs`), while the full OAuth Appwrite catalog (38
optionally `appwrite_search_docs`), while the full OAuth Appwrite catalog (41
services) stays internal and is searched at runtime. API-key stdio uses a filtered
26-service catalog. Mutating hidden tools require
27-service catalog. Mutating hidden tools require
`confirm_write=true`. Large outputs are stored as MCP resources and returned as a
preview + resource URI.

Expand Down
2 changes: 1 addition & 1 deletion docs/appwrite-mcp-flow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/self-hosted.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Running your own Appwrite instance? Run the MCP server locally over `stdio` and
authenticate with a project API key instead of OAuth.

The local API-key catalog is intentionally smaller than the hosted OAuth catalog:
it exposes 663 project-key-compatible methods across 26 services. DocumentsDB,
it exposes 689 project-key-compatible methods across 27 services. DocumentsDB,
VectorsDB, and text embeddings are available, but console control-plane services
such as organizations, domains, projects, billing, migrations, dedicated
databases, usage administration, VCS administration, and WAF administration are
Expand Down
10 changes: 5 additions & 5 deletions docs/tool-surface.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ flowchart LR

subgraph CAT[Internal catalog — authentication-aware]
direction LR
K[OAuth: 41 services / 1016 tools<br/>API key: 26 services / 663 tools]
K[OAuth: 41 services / 1029 tools<br/>API key: 27 services / 689 tools]
end

CT -->|large output| R[(MCP resource<br/>preview + URI)]
Expand All @@ -47,12 +47,12 @@ flowchart LR
`context=organization`, or `context=project`. Hosted calls enforce the required
top-level `organization_id` or `project_id` before making a request.
- **Access** is still gated per-route by the scopes granted to the OAuth token.
- **Hosted OAuth** registers all 41 services and 1016 methods shipped by
`appwrite-console` 0.8.1. This adds console control-plane services including
- **Hosted OAuth** registers all 41 services and 1029 methods shipped by
`appwrite-console` 0.12.0. This adds console control-plane services including
projects, organizations, domains, migrations, dedicated databases, usage, VCS,
vectors, WAF, notifications, and regions.
- **API-key stdio** deliberately registers only the 663 project-key-compatible
methods across 26 services. It includes the new DocumentsDB, VectorsDB, and
- **API-key stdio** deliberately registers only the 689 project-key-compatible
methods across 27 services. It includes the new DocumentsDB, VectorsDB, and
text-embeddings APIs, while console administration methods remain hidden.
- **Registration** remains SDK-driven, with the authentication profile policy
applied while the internal catalog is built.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"anyio>=4.0.0",
"appwrite-console>=0.10.0,<0.11",
"appwrite-console>=0.12.0,<0.13",
Comment thread
hansi-codes[bot] marked this conversation as resolved.
"docstring-parser>=0.16",
"mcp[cli]>=2.3,<3",
"python-dotenv>=1.0.1",
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/test_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -957,7 +957,7 @@ def test_register_services_returns_fresh_manager(self):
set(SERVICE_CLASSES),
)
self.assertEqual(len(manager_a.services), 41)
self.assertEqual(len(manager_a.get_all_tools()), 1016)
self.assertEqual(len(manager_a.get_all_tools()), 1029)

def test_console_sdk_0_7_surface(self):
manager = register_services(object(), profile=OAUTH_PROFILE)
Expand Down Expand Up @@ -1079,7 +1079,7 @@ def test_api_key_profile_only_advertises_server_capabilities(self):
tool_names = {tool.name for tool in manager.get_all_tools()}

self.assertEqual(len(manager.services), 27)
self.assertEqual(len(tool_names), 676)
self.assertEqual(len(tool_names), 689)
self.assertIn("waf_list_rules", tool_names)
self.assertIn("waf_create_deny_rule", tool_names)
self.assertIn("avatars_get_photo", tool_names)
Expand Down
8 changes: 4 additions & 4 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading