# ๐ Appwrite MCP Server



**Transform Claude into your intelligent Appwrite management assistant**
*16 optimized tools โข Core Appwrite operations โข Context-efficient design โข Production-ready*
---
A **context-optimized Model Context Protocol (MCP)** server that provides Claude with essential Appwrite integration. This version focuses on core functionality with action-based combined tools, offering database operations, user management, storage, messaging, and team management in an efficient package designed to stay under MCP context limits.
## ๐ Features
**๐ฏ Core Appwrite Operations:**
- **Database Management** - Create, list, and delete databases
- **Collection Operations** - Full collection lifecycle management
- **Document CRUD** - Complete document operations with bulk support
- **User Management** - User operations including bulk processing and preferences
- **Storage Management** - Bucket and file operations with URL generation
- **Team Management** - Complete team administration
- **Messaging Service** - Messages, topics, and subscriber management
- **Attribute & Index Management** - Schema management with bulk operations
- **Health Monitoring** - System health checks
**โก Action-Based Design:**
- **Single tools handle multiple operations** using action parameters
- **Bulk operations integrated** into respective categories
- **Context-optimized** - 88% fewer tools than original
- **Maintained functionality** - All core features preserved
## ๐ฆ Quick Start
### 1๏ธโฃ Installation
```bash
# Clone the repository
git clone
cd appwrite-mcp-server
# Install dependencies
npm install
# Build the TypeScript code
npm run build
```
### 2๏ธโฃ Configuration
Create a `.env` file in your **current working directory** (where you run Claude Code from):
```bash
# Copy the example file to your current working directory
cp /path/to/app-write-mcp/.env.example ./.env
```
Edit your `.env` file with your Appwrite credentials:
```env
APPWRITE_PROJECT_ID=your-project-id-here
APPWRITE_API_ENDPOINT=https://cloud.appwrite.io/v1
APPWRITE_API_KEY=your-api-key-here
```
> ๐ก **Tip:** The MCP server looks for `.env` in the directory where Claude Code is running, allowing different configurations for different projects.
### 3๏ธโฃ Integration Options
#### Option A: Claude Code (CLI) Integration
```bash
# Add the MCP server to Claude Code
claude mcp add appwrite-mcp-server "C:\path\to\your\app-write-mcp\dist\index.js"
# Example with actual path
claude mcp add appwrite-mcp-server "C:\Users\moh12\app-write-mcp\dist\index.js"
```
#### Option B: Cursor IDE Integration
> ๐ก **Note:** Cursor doesn't support `.env` files for MCP servers, so we pass environment variables directly in the configuration.
1. **Open Command Palette** (`Ctrl/Cmd + Shift + P`)
2. **Type "Preferences: Open Settings (JSON)"**
3. **Add MCP Server Configuration to your settings.json:**
```json
{
"mcp.servers": {
"appwrite-mcp-server": {
"command": "node",
"args": ["C:\\path\\to\\your\\app-write-mcp\\dist\\index.js"],
"env": {
"APPWRITE_PROJECT_ID": "your-project-id-here",
"APPWRITE_API_ENDPOINT": "https://cloud.appwrite.io/v1",
"APPWRITE_API_KEY": "your-api-key-here"
}
}
}
}
```
4. **Replace the configuration values:**
- **Path**: Update `C:\\path\\to\\your\\app-write-mcp\\dist\\index.js` with your actual path
- **Project ID**: Your Appwrite project ID
- **API Endpoint**: Your Appwrite endpoint (Cloud or self-hosted)
- **API Key**: Your Appwrite API key with required permissions
5. **Example configuration:**
```json
{
"mcp.servers": {
"appwrite-mcp-server": {
"command": "node",
"args": ["C:\\Users\\username\\app-write-mcp\\dist\\index.js"],
"env": {
"APPWRITE_PROJECT_ID": "6612345a000818bb9d2e",
"APPWRITE_API_ENDPOINT": "https://cloud.appwrite.io/v1",
"APPWRITE_API_KEY": "standard_1234567890abcdef..."
}
}
}
}
```
6. **Save the file and restart Cursor** to load the MCP server
#### Option C: Continue.dev Integration
1. **Open your Continue configuration file** (`~/.continue/config.json`)
2. **Add the MCP server to your configuration:**
```json
{
"mcpServers": [
{
"name": "appwrite-mcp-server",
"command": "node",
"args": ["C:\\path\\to\\your\\app-write-mcp\\dist\\index.js"],
"env": {
"APPWRITE_PROJECT_ID": "your-project-id-here",
"APPWRITE_API_ENDPOINT": "https://cloud.appwrite.io/v1",
"APPWRITE_API_KEY": "your-api-key-here"
}
}
]
}
```
3. **Replace with your actual credentials** (same as Cursor configuration above)
4. **Restart your IDE** to apply the changes
### 4๏ธโฃ Verification
Once integrated, you should be able to use commands like:
- "List my Appwrite databases"
- "Create a new user with email test@example.com"
- "Show me all collections in my database"
## ๐ ๏ธ Available Tools (16 Total)
๐๏ธ Database Operations (1 tool)
| Tool | Actions | Description |
|------|---------|-------------|
| `manage_database` | create, list, delete | Comprehensive database management |
๐ Collection Operations (1 tool)
| Tool | Actions | Description |
|------|---------|-------------|
| `collection_operations` | create, get, list, update, delete | Complete collection lifecycle management |
๐ท๏ธ Attribute Management (1 tool)
| Tool | Actions | Description |
|------|---------|-------------|
| `attribute_operations` | create, get, list, update, delete, bulk_create, bulk_delete | Full attribute management with bulk operations |
๐ Index Management (1 tool)
| Tool | Actions | Description |
|------|---------|-------------|
| `index_operations` | create, get, list, delete | Complete index management |
๐ Document Operations (2 tools)
| Tool | Actions/Description |
|------|--------------------|
| `document_operations` | create, get, update, delete, bulk_create, bulk_update, bulk_delete |
| `list_documents` | List documents with advanced queries and pagination |
๐ฅ User Management (2 tools)
| Tool | Actions/Description |
|------|--------------------|
| `user_operations` | create, get, update, delete, update_preferences, update_labels, bulk_create, bulk_update, bulk_delete |
| `list_users` | List users with advanced filtering and pagination |
๐๏ธ Storage Operations (3 tools)
| Tool | Actions/Description |
|------|--------------------|
| `bucket_operations` | create, get, list, update, delete |
| `file_operations` | get, create, update, delete, list |
| `get_file_url` | Generate download, preview, or view URLs with transformations |
| `get_bucket` | Get a bucket by ID |
| `update_bucket` | Update a storage bucket |
| `delete_bucket` | Delete a storage bucket |
| `list_files` | List files in a storage bucket |
| `get_file` | โจ Get file details by ID |
| `create_file` | โจ Upload file to storage bucket |
| `update_file` | โจ Update file metadata |
| `get_file_download` | โจ Get file download URL |
| `get_file_preview` | โจ Get file preview URL with image transformations |
| `get_file_view` | โจ Get file view URL |
| `delete_file` | โจ Delete a file |
โก Function Management (14 tools)
| Tool | Description |
|------|-------------|
| `create_function` | Create a new serverless function |
| `list_functions` | List all functions |
| `get_function` | Get a function by ID |
| `update_function` | Update a function |
| `delete_function` | Delete a function |
| `list_function_deployments` | โจ List function deployments |
| `get_function_deployment` | โจ Get deployment details |
| `update_function_deployment` | โจ Update deployment status |
| `delete_function_deployment` | โจ Delete deployment |
| `create_function_variable` | โจ Create function variables |
| `list_function_variables` | โจ List function variables |
| `get_function_variable` | โจ Get variable details |
| `update_function_variable` | โจ Update variables |
| `delete_function_variable` | โจ Delete variables |
๐จโ๐ฉโ๐งโ๐ฆ Team Management (1 tool)
| Tool | Actions | Description |
|------|---------|-------------|
| `team_operations` | create, get, list, update, delete | Complete team management |
๐ง Messaging Operations (3 tools)
| Tool | Actions | Description |
|------|---------|-------------|
| `messaging_message_operations` | create, get, list, update, delete | Complete message management |
| `messaging_topic_operations` | create, get, list, update, delete | Complete topic management |
| `messaging_subscriber_operations` | create, get, list, delete | Complete subscriber management |
๐ฅ Health Monitoring (1 tool)
| Tool | Description |
|------|-------------|
| `get_health` | Get overall health status of Appwrite services |
---
## ๐๏ธ Removed Features
*The following features have been removed to optimize context usage:*
- **Data Analysis Tools** - Auto-detect schemas, duplicate detection, data quality analysis
- **Avatars Service** - Icon generation, QR codes, initials avatars
- **Locale Service** - Countries, currencies, languages, timezones
- **Advanced User Features** - MFA management, identity management, email/phone verification (labels management retained in user_operations)
- **Function Management** - Function deployments, execution, variables
- **Messaging Providers** - Provider configuration and management
- **Session Management** - User session create/delete/list
- **Advanced Health Monitoring** - Specific service health checks
*These features are preserved in `removed-tools-backup.ts` for future restoration if needed.*
## โ๏ธ Configuration Guide
### ๐ Getting Appwrite Credentials
1. **๐ Project ID**: Found in your Appwrite console under **Settings > General**
2. **๐ API Endpoint**:
- **Appwrite Cloud**: `https://cloud.appwrite.io/v1`
- **Self-hosted**: `https://your-domain.com/v1`
3. **๐ API Key**: Create a new API key in your Appwrite console under **Settings > API Keys**
- โ
Required scopes: `databases.read`, `databases.write`, `users.read`, `users.write`, `storage.read`, `storage.write`, `messages.read`, `messages.write`, `topics.read`, `topics.write`, `subscribers.read`, `subscribers.write`, `teams.read`, `teams.write`, `health.read`
### ๐ฏ VS Official Implementation
| Feature | Our Implementation | Official Appwrite MCP |
|---------|-------------------|----------------------|
| **Tools Available** | ๐ข 16 optimized tools (context-efficient) | ๐ก 195 tools (selective enabling) |
| **Context Usage** | ๐ข Under 25,000 tokens (88% reduction) | ๐ด Over 60,000 tokens |
| **Tool Design** | ๐ข Action-based combined tools | ๐ก Individual tools for each operation |
| **Core Operations** | ๐ข All essential Appwrite features | ๐ก Database tools only (context limits) |
| **Messaging Service** | ๐ข Messages, topics, subscribers | ๐ก Selective enabling required |
| **Storage Operations** | ๐ข Complete file operations & uploads | ๐ก Basic bucket operations |
| **User Management** | ๐ข CRUD + preferences + bulk operations | ๐ก Basic CRUD only |
| **Bulk Operations** | ๐ข Integrated into respective categories | ๐ด Not available |
| **Error Handling** | ๐ข Comprehensive | ๐ก Basic |
| **Language** | ๐ก TypeScript/Node.js | ๐ข Python |
| **Maintenance** | ๐ข Easier with fewer tools | ๐ก Complex with many tools |
## ๐ฏ Usage Examples
Once integrated, you can use natural language commands with Claude to interact with Appwrite:
๐๏ธ Database & Collection Management
```
โจ "Create a new database called 'ecommerce'"
โจ "List all my databases"
โจ "Create a collection called 'products' in the ecommerce database"
โจ "Show me all collections in the ecommerce database"
โจ "Delete the old 'test' database"
```
๐ท๏ธ Schema & Attributes
```
โจ "Create a string attribute called 'name' in the products collection"
โจ "Add multiple attributes with bulk create operation"
โจ "List all attributes in the products collection"
โจ "Update attribute settings for existing fields"
โจ "Create a unique index on the 'sku' attribute"
โจ "Remove old attributes with bulk delete"
```
๐ Document Operations
```
โจ "Create a new product document with name 'iPhone 15' and price 999"
โจ "List all documents in the products collection"
โจ "Update document xyz123's price to 899"
โจ "Get document abc456 from the products collection"
โจ "Delete all out-of-stock products"
```
๐ฅ User Management
```
โจ "Create a new user with email john@example.com"
โจ "List all users in the project with filtering"
โจ "Update user xyz123's name and email"
โจ "Update user labels for admin permissions"
โจ "Delete inactive user accounts"
โจ "Update user preferences for notifications"
โจ "Bulk create 10 test users for demo"
โจ "Bulk update user information from CSV"
โจ "Bulk create 10 test users for demo purposes"
```
๐๏ธ Storage & File Management
```
โจ "Create a new storage bucket for user uploads"
โจ "List all files in the images bucket"
โจ "Get download URL for file abc123"
โจ "Generate preview URL for image with 300x200 dimensions"
โจ "Get file view URL for document xyz456"
โจ "Delete old file from storage bucket"
```
โก Functions & Deployments
```
โจ "Create a new function for email processing"
โจ "List all deployments for function abc123"
โจ "Create function variable API_KEY with secret value"
โจ "Update function variable to new value"
โจ "List all variables for function xyz456"
โจ "Execute function with user data payload"
```
๐ Advanced Features (Exclusive)
```
๐ "Create a complete product schema with string, enum, float, and relationship attributes"
๐ "Bulk create 10 attributes at once for my e-commerce collection"
๐ "Add a relationship attribute linking orders to customers with two-way binding"
๐ "Create an enum attribute for user roles with admin, user, moderator values"
๐ "Analyze this sample data and create a collection schema automatically"
๐ "Suggest optimal indexes for my users collection based on usage"
๐ "Validate this document data before creating it"
๐ "Find duplicate records in my customers collection"
๐ "Check the data quality of my orders collection"
๐ "Bulk create 100 user accounts from this CSV data"
๐ "Execute the 'sendWelcomeEmail' function with user data"
๐ "Show me the health status of all Appwrite services"
```
๐ง Messaging & Communication
```
โจ "Create a messaging provider for email notifications"
โจ "List all messaging topics"
โจ "Create a topic for user announcements"
โจ "Add subscribers to the announcements topic"
โจ "Send a message to all subscribers"
โจ "List all messages and their delivery status"
```
๐ Internationalization & Locale
```
โจ "List all supported countries"
โจ "Get phone codes for all countries"
โจ "Show me all available currencies"
โจ "List all supported languages"
โจ "Get continent information"
```
๐จ Avatars & Visual Content
```
โจ "Generate QR code for this URL"
โจ "Get flag icon for United States"
โจ "Create initials avatar for John Doe"
โจ "Get favicon for google.com"
โจ "Generate browser icon for Chrome"
โจ "Get credit card icon for Visa"
```
### ๐ฌ **Real-World Scenarios**
**E-commerce Setup:**
```
1. "Create an ecommerce database"
2. "Auto-detect schema from this product sample data"
3. "Bulk import 500 products from my inventory"
4. "Set up user authentication for customers"
5. "Create indexes for search optimization"
```
**Content Management:**
```
1. "Create a blog database with posts and comments collections"
2. "Validate my blog post structure before saving"
3. "Find duplicate content across my posts"
4. "Analyze user engagement patterns"
```
---
## ๐ง Development
```bash
# Build TypeScript to JavaScript
npm run build
# Watch mode for development
npm run dev
# Run the built server
npm start
```
## ๐ Troubleshooting
Common Issues & Solutions
| Issue | Solution |
|-------|----------|
| **โ Configuration not found** | Make sure `.env` file exists in your working directory |
| **โ API Key issues** | Ensure your API key has all required scopes enabled |
| **โ Connection failed** | Verify your API endpoint is correct (check for typos) |
| **โ Tools not loading** | Restart your IDE after adding the MCP server |
| **โ Permission denied** | Check that your API key has `databases.write`, `users.write` permissions |
| **โ Schema validation errors** | Use `attribute_operations` with list action to check collection schema |
## ๐ค Contributing
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/amazing-feature`
3. Commit your changes: `git commit -m 'Add amazing feature'`
4. Push to the branch: `git push origin feature/amazing-feature`
5. Open a Pull Request
## ๐ License
MIT License - see [LICENSE](LICENSE) file for details
---
**โญ Star this repo if it helped you!**
Built with โค๏ธ for the Appwrite and Claude communities
[Report Bug](https://github.com/your-repo/issues) โข [Request Feature](https://github.com/your-repo/issues) โข [Documentation](https://github.com/your-repo/wiki)