Appwrite MCP Server (mcp-for-api)
使用说明内容(Markdown格式)
-
项目简介
- 该仓库实现了一个可运行的 MCP 服务器,用于将 Appwrite 的数据库、用户、团队、存储、函数、消息等 API 能力暴露为 MCP 工具,供 LLM 客户端通过 JSON-RPC 调用与查询。服务器负责工具注册、参数类型映射、工具描述生成以及执行调用等核心能力。
-
主要功能点
- 将 Appwrite API 封装为可被 MCP 客户端调用的“工具”,并支持动态注册不同的 Appwrite 服务(TablesDB、Users、Teams、Storage、Functions、Messaging、Locale、Avatars、Sites、Databases)。
- 自动从服务方法中提取输入参数的类型和文档说明,生成符合 MCP 的工具定义(输入模式、必填项、字段描述)。
- 提供两个核心 MCP 接口:列出工具(list_tools)与执行工具(call_tool),实现 JSON-RPC 風格的请求响应。
- 使用既定的 MCP 服务框架与 stdio 传输(stdio_server),与客户端通过标准输入/输出进行通信,便于在本地开发环境或集成流水线中运行。
- 内部包含工具管理器(ToolManager)和服务抽象(Service),实现对工具集合的集中管理和查询。
-
安装步骤
- 克隆仓库并进入项目目录。
- 安装并准备运行环境(推荐使用 uv 运行或 Python 运行方式):
- 使用 uv:uvx mcp-server-appwrite
- 使用 Python 直接运行:python -m mcp_server_appwrite
- 设置 Appwrite 的凭据与端点(必须在环境变量中配置):
- APPWRITE_PROJECT_ID:你的 Appwrite 项目 ID
- APPWRITE_API_KEY:具有所需权限的 API Key
- APPWRITE_ENDPOINT:Appwrite 服务端点 URL(可选,默认为 https://cloud.appwrite.io/v1)
- 如果需要启用特定的 Appwrite 服务,可通过命令行参数开启,例如:
- --tablesdb 启用 TablesDB
- --users 启用 Users
- --teams 启用 Teams
- --storage 启用 Storage
- --functions 启用 Functions
- --messaging 启用 Messaging
- --locale 启用 Locale
- --avatars 启用 Avatars
- --sites 启用 Sites
- --databases 启用 Legacy Databases
- --all 启用全部
- 若初次运行未指定服务,将默认启用 TablesDB,以确保服务器有可用工具。
-
服务器配置(供 MCP 客户端使用的配置信息) 说明:MCP 客户端需要提供服务器的启动命令和必要参数,才可连接并使用该 MCP 服务器。以下配置示例基于仓库实现的默认启动方式和环境变量需求,包含服务器名称、启动命令、参数及环境变量注释信息: { "server_name": "appwrite", "command": "uvx", "args": ["mcp-server-appwrite"], "env": { "APPWRITE_PROJECT_ID": "<YOUR_PROJECT_ID>", "APPWRITE_API_KEY": "<YOUR_API_KEY>", "APPWRITE_ENDPOINT": "https://<REGION>.cloud.appwrite.io/v1" // 可选,如不提供则使用默认端点 } // 说明:上述 env 变量为 MCP 服务器运行所需的最小凭据。换成实际值后,客户端即可通过配置的命令启动服务器并与之通信。 }
-
基本使用方法
- 启动与运行
- 通过 uv 启动(推荐): uvx mcp-server-appwrite
- 通过 Python 直接运行: python -m mcp_server_appwrite
- 与 MCP 客户端的交互
- 客户端首先请求列出可用工具(list_tools),服务器返回工具定义集合。
- 客户端根据需要调用某个工具(call_tool),传入工具名称和参数,服务器执行并返回结果。
- 使用建议
- 结合 Appwrite 的实际 API 调用场景,逐步启用所需服务,以控制上下文窗口的令牌消耗。
- 确保 Appwrite API Key 具备相应的权限范围,避免权限不足导致调用失败。
- 启动与运行
-
额外信息
- 服务器通过初始化选项(InitializationOptions)声明服务器名称、版本以及能力集合,便于客户端及调试工具识别。
- 代码中对参数类型与文档进行了自动推断与 JSON Schema 转换,方便 LLM 客户端理解工具输入。