# ๐ 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
# On Linux/macOS: Make the compiled file executable
chmod +x dist/index.js
```
### 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 |
๐จโ๐ฉโ๐งโ๐ฆ 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 |
---
## โ๏ธ 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"
```
๐๏ธ 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"
```
๐ง Messaging & Communication
```
โจ "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"
```
### ๐ฌ **Real-World Scenarios**
**E-commerce Setup:**
```
1. "Create an ecommerce database"
2. "Create a products collection with attributes"
3. "Bulk create product documents from 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. "Create string and datetime attributes for blog posts"
3. "List all blog posts with pagination"
4. "Update blog post content and metadata"
```
---
## ๐ง 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://git.nebulm.com/smoido/app-write-mcp/issues) โข [Request Feature](https://git.nebulm.com/smoido/app-write-mcp/issues) โข [Documentation](https://git.nebulm.com/smoido/app-write-mcp/wiki)