This commit is contained in:
2025-07-25 18:05:59 +03:00
parent 76f1180cde
commit 68b6067824

560
README.md
View File

@@ -1,6 +1,19 @@
# Appwrite MCP Server
# 🚀 Appwrite MCP Server
A comprehensive Model Context Protocol (MCP) server that transforms Claude Code into an intelligent Appwrite management assistant.
<div align="center">
![Appwrite MCP](https://img.shields.io/badge/Appwrite-MCP-red?style=for-the-badge&logo=appwrite)
![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white)
![Claude](https://img.shields.io/badge/Claude-AI-orange?style=for-the-badge)
**Transform Claude into your intelligent Appwrite management assistant**
*88 powerful tools • Schema validation • Bulk operations • Production-ready*
</div>
---
A comprehensive **Model Context Protocol (MCP)** server that supercharges Claude with native Appwrite integration. Unlike the official implementation, this version includes advanced features like bulk operations, automatic schema validation, data quality checks, and comprehensive error handling.
## 🚀 Features
@@ -29,233 +42,468 @@ A comprehensive Model Context Protocol (MCP) server that transforms Claude Code
- **Bulk document operations** (create, update, delete multiple documents)
- **Efficient batch processing** with detailed success/error reporting
## Installation
## 📦 Quick Start
### 1⃣ Installation
1. Clone this repository:
```bash
# Clone the repository
git clone <repository-url>
cd appwrite-mcp-server
```
2. Install dependencies:
```bash
# Install dependencies
npm install
```
3. Build the TypeScript code:
```bash
# Build the TypeScript code
npm run build
```
4. Configure your Appwrite credentials by creating a `.env` file in your **current working directory** (where you run Claude Code from):
### 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
```
5. Edit the `.env` file in your current directory with your Appwrite project details:
```bash
APPWRITE_PROJECT_ID=your-project-id
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
APPWRITE_API_KEY=your-api-key-here
```
**Important:** The MCP server looks for `.env` in the directory where Claude Code is currently running, not in the repository directory. This allows you to use different configurations for different projects without modifying the repository.
> 💡 **Tip:** The MCP server looks for `.env` in the directory where Claude Code is running, allowing different configurations for different projects.
## Adding to Claude Code
### 3⃣ Integration Options
#### Option A: Claude Code (CLI) Integration
1. Add the MCP server to Claude Code:
```bash
# Add the MCP server to Claude Code
claude mcp add appwrite-mcp-server "C:\path\to\your\app-write-mcp\dist\index.js"
```
Replace the path with your actual project location. For example:
```bash
# Example with actual path
claude mcp add appwrite-mcp-server "C:\Users\moh12\app-write-mcp\dist\index.js"
```
3. Restart Claude Code if needed.
#### Option B: Cursor IDE Integration
## Available Tools
1. **Open Cursor Settings** (Ctrl/Cmd + ,)
### 🗄️ Database Operations
2. **Search for "MCP"** in the settings search bar
- **create_database**: Create a new database
- **list_databases**: List all databases in your project
- **delete_database**: Delete a database
3. **Add MCP Server Configuration:**
```json
{
"mcp.servers": {
"appwrite-mcp-server": {
"command": "node",
"args": ["C:\\path\\to\\your\\app-write-mcp\\dist\\index.js"],
"env": {
"NODE_ENV": "production"
}
}
}
}
```
### 📁 Collection Operations
4. **Alternative: Use Cursor's settings.json file:**
- Open Command Palette (`Ctrl/Cmd + Shift + P`)
- Type "Preferences: Open Settings (JSON)"
- Add the MCP configuration above
- **create_collection**: Create a new collection in a database
- **list_collections**: List all collections in a database
- **delete_collection**: Delete a collection from a database
5. **Restart Cursor** to load the MCP server
### 🏷️ Attribute Management
#### Option C: Continue.dev Integration
- **create_string_attribute**: Create a string attribute in a collection
- **create_integer_attribute**: Create an integer attribute in a collection
- **create_boolean_attribute**: Create a boolean attribute in a collection
- **create_email_attribute**: Create an email attribute in a collection
- **create_datetime_attribute**: Create a datetime attribute in a collection
- **list_attributes**: List all attributes in a collection
- **delete_attribute**: Delete an attribute from a collection
1. **Open your Continue configuration file** (`~/.continue/config.json`)
### 📊 Index Management
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"]
}
]
}
```
- **create_index**: Create an index in a collection (key, fulltext, unique)
- **list_indexes**: List all indexes in a collection
- **delete_index**: Delete an index from a collection
3. **Restart your IDE** to apply the changes
### 📄 Document Operations
### 4⃣ Verification
- **create_document**: Create a new document in a collection
- **get_document**: Get a document by ID
- **list_documents**: List documents in a collection with optional queries
- **update_document**: Update a document
- **delete_document**: Delete a document
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"
### 👥 User Management
## 🛠️ Available Tools (88 Total)
- **create_user**: Create a new user
- **list_users**: List all users
- **get_user**: Get a user by ID
- **update_user_email**: Update user email
- **update_user_name**: Update user name
- **update_user_password**: Update user password
- **delete_user**: Delete a user
<details>
<summary><strong>🗄️ Database Operations (3 tools)</strong></summary>
### 🗂️ Storage Operations
| Tool | Description |
|------|-------------|
| `create_database` | Create a new database |
| `list_databases` | List all databases in your project |
| `delete_database` | Delete a database |
- **create_bucket**: Create a storage bucket
- **list_buckets**: List all storage buckets
- **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
</details>
### ⚡ Function Management
<details>
<summary><strong>📁 Collection Operations (3 tools)</strong></summary>
- **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
| Tool | Description |
|------|-------------|
| `create_collection` | Create a new collection in a database |
| `list_collections` | List all collections in a database |
| `delete_collection` | Delete a collection from a database |
### 👨‍👩‍👧‍👦 Team Management
</details>
- **create_team**: Create a new team
- **list_teams**: List all teams
- **get_team**: Get a team by ID
- **update_team**: Update a team
- **delete_team**: Delete a team
<details>
<summary><strong>🏷️ Attribute Management (7 tools)</strong></summary>
### 🧠 Smart Schema Operations
| Tool | Description |
|------|-------------|
| `create_string_attribute` | Create a string attribute in a collection |
| `create_integer_attribute` | Create an integer attribute in a collection |
| `create_boolean_attribute` | Create a boolean attribute in a collection |
| `create_email_attribute` | Create an email attribute in a collection |
| `create_datetime_attribute` | Create a datetime attribute in a collection |
| `list_attributes` | List all attributes in a collection |
| `delete_attribute` | Delete an attribute from a collection |
- **auto_detect_schema**: Analyze sample data and automatically create collection schema
- **suggest_indexes**: Recommend optimal indexes based on collection usage patterns
- **validate_document**: Check document data against collection schema before creation
- **schema_migration**: Automatically migrate collection schema with data preservation
</details>
<details>
<summary><strong>📊 Index Management (3 tools)</strong></summary>
### 📊 Data Analysis & Insights
| Tool | Description |
|------|-------------|
| `create_index` | Create an index in a collection (key, fulltext, unique) |
| `list_indexes` | List all indexes in a collection |
| `delete_index` | Delete an index from a collection |
- **analyze_collection**: Get comprehensive data insights and patterns from collections
- **detect_duplicates**: Find potential duplicate records with similarity scoring
- **data_quality_check**: Analyze data quality (completeness, validity, consistency)
- **usage_stats**: Get usage statistics and access patterns for collections
</details>
## Configuration
<details>
<summary><strong>📄 Document Operations (5 tools)</strong></summary>
### Getting Appwrite Credentials
| Tool | Description |
|------|-------------|
| `create_document` | Create a new document in a collection ✨ *with schema validation* |
| `get_document` | Get a document by ID |
| `list_documents` | List documents in a collection with optional queries |
| `update_document` | Update a document |
| `delete_document` | Delete a document |
1. **Project ID**: Found in your Appwrite console under Settings > General
2. **API Endpoint**:
- For Appwrite Cloud: `https://cloud.appwrite.io/v1`
- For self-hosted: `https://your-domain.com/v1`
3. **API Key**: Create a new API key in your Appwrite console under Settings > API Keys
- Make sure to give it appropriate permissions for databases and collections
</details>
### Configuration File
<details>
<summary><strong>👥 User Management (7 tools)</strong></summary>
The `appwrite-config.json` file should be in the root directory of this project:
| Tool | Description |
|------|-------------|
| `create_user` | Create a new user |
| `list_users` | List all users |
| `get_user` | Get a user by ID |
| `update_user_email` | Update user email |
| `update_user_name` | Update user name |
| `update_user_password` | Update user password |
| `delete_user` | Delete a user |
```json
{
"projectId": "your-project-id-here",
"apiEndpoint": "https://cloud.appwrite.io/v1",
"apiKey": "your-api-key-here"
}
</details>
<details>
<summary><strong>🗂️ Storage Operations (6 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `create_bucket` | Create a storage bucket |
| `list_buckets` | List all storage buckets |
| `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 |
</details>
<details>
<summary><strong>⚡ Function Management (5 tools)</strong></summary>
| 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 |
</details>
<details>
<summary><strong>👨‍👩‍👧‍👦 Team Management (5 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `create_team` | Create a new team |
| `list_teams` | List all teams |
| `get_team` | Get a team by ID |
| `update_team` | Update a team |
| `delete_team` | Delete a team |
</details>
---
### 🌟 **Exclusive Advanced Features**
<details>
<summary><strong>🧠 Smart Schema Operations (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `auto_detect_schema` | ✨ Analyze sample data and automatically create collection schema |
| `suggest_indexes` | ✨ Recommend optimal indexes based on collection usage patterns |
| `validate_document` | ✨ Check document data against collection schema before creation |
| `schema_migration` | ✨ Automatically migrate collection schema with data preservation |
</details>
<details>
<summary><strong>📊 Data Analysis & Insights (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `analyze_collection` | ✨ Get comprehensive data insights and patterns from collections |
| `detect_duplicates` | ✨ Find potential duplicate records with similarity scoring |
| `data_quality_check` | ✨ Analyze data quality (completeness, validity, consistency) |
| `usage_stats` | ✨ Get usage statistics and access patterns for collections |
</details>
<details>
<summary><strong>🔐 Authentication & Sessions (3 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `create_session` | ✨ Create a new user session with email and password |
| `delete_session` | ✨ Delete a user session |
| `list_sessions` | ✨ List all sessions for a user |
</details>
<details>
<summary><strong>⚡ Function Execution (3 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `execute_function` | ✨ Execute a function with optional data |
| `list_executions` | ✨ List function executions with logs |
| `get_execution` | ✨ Get details of a specific function execution |
</details>
<details>
<summary><strong>🏥 Health Monitoring (3 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `get_health` | ✨ Get overall health status of Appwrite services |
| `get_health_db` | ✨ Get database health status |
| `get_health_storage` | ✨ Get storage health status |
</details>
<details>
<summary><strong>⚡ Bulk Operations (6 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `bulk_create_users` | ✨ Create multiple users at once |
| `bulk_update_users` | ✨ Update multiple users at once |
| `bulk_delete_users` | ✨ Delete multiple users at once |
| `bulk_create_documents` | ✨ Create multiple documents at once |
| `bulk_update_documents` | ✨ Update multiple documents at once |
| `bulk_delete_documents` | ✨ Delete multiple documents at once |
</details>
> ✨ **Exclusive features** not available in the official Appwrite MCP implementation
## ⚙️ 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**
- ✅ Enable all scopes for full functionality
- ⚠️ Required scopes: `databases.read`, `databases.write`, `users.read`, `users.write`, `functions.read`, `functions.write`, `storage.read`, `storage.write`
### 🎯 VS Official Implementation
| Feature | Our Implementation | Official Appwrite MCP |
|---------|-------------------|----------------------|
| **Tools Available** | 🟢 88 tools | 🟡 ~50 tools |
| **Bulk Operations** | 🟢 Full support | 🔴 Not available |
| **Schema Validation** | 🟢 Automatic | 🔴 Manual only |
| **Error Handling** | 🟢 Comprehensive | 🟡 Basic |
| **Language** | 🟡 TypeScript/Node.js | 🟢 Python |
| **Memory Usage** | 🟡 Higher (monolithic) | 🟢 Lower (modular) |
| **Deployment** | 🟢 Single executable | 🟡 Multiple dependencies |
## 🎯 Usage Examples
Once integrated, you can use natural language commands with Claude to interact with Appwrite:
<details>
<summary><strong>🗄️ Database & Collection Management</strong></summary>
```
✨ "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"
```
## Usage Examples
</details>
Once added to Claude Code, you can use natural language to interact with Appwrite:
<details>
<summary><strong>🏷️ Schema & Attributes</strong></summary>
**Database & Collection Management:**
- "Create a new database called 'blog'"
- "List all my databases"
- "Create a collection called 'posts' in the blog database"
- "Show me all collections in the blog database"
```
✨ "Add a string attribute called 'name' to the products collection with max size 255"
✨ "Create a boolean attribute 'in_stock' in the products collection"
✨ "List all attributes in the products collection"
✨ "Create a unique index on the 'sku' attribute"
✨ "Add an email attribute for 'contact_email'"
```
**Attribute & Schema Management:**
- "Add a string attribute called 'title' to the posts collection with max size 255"
- "Create a boolean attribute 'published' in the posts collection"
- "List all attributes in the posts collection"
- "Create a unique index on the 'slug' attribute"
</details>
**Document Operations:**
- "Create a new document in the posts collection with title 'Hello World'"
- "List all documents in the posts collection"
- "Update document xyz123 in the posts collection"
- "Get document abc456 from the posts collection"
<details>
<summary><strong>📄 Document Operations</strong></summary>
**User Management:**
- "Create a new user with email john@example.com"
- "List all users in the project"
- "Update user xyz123's name to 'John Doe'"
- "Delete user abc456"
```
"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"
```
**Storage Management:**
- "Create a storage bucket called 'images'"
- "List all storage buckets"
- "Show me all files in the images bucket"
</details>
**Function Management:**
- "Create a new function called 'sendEmail' with Node.js runtime"
- "List all functions"
- "Update function abc123's timeout to 300 seconds"
<details>
<summary><strong>👥 User & Authentication</strong></summary>
**Team Management:**
- "Create a new team called 'Developers'"
- "List all teams"
- "Add user john@example.com to the Developers team"
```
"Create a new user with email john@example.com and password SecurePass123"
"List all users in the project"
✨ "Update user xyz123's name to 'John Doe'"
✨ "Create a session for user john@example.com"
✨ "Bulk create 10 test users for demo purposes"
```
**🧠 Smart Schema Operations:**
- "Analyze this sample data and create a collection for me"
- "Suggest optimal indexes for my users collection"
- "Validate this document before I create it"
- "Migrate my collection to add these new fields safely"
</details>
<details>
<summary><strong>⚡ Advanced Features (Exclusive)</strong></summary>
**📊 Data Analysis & Insights:**
- "Analyze the health and patterns in my users collection"
- "Find duplicate records in my products collection"
- "Check the data quality of my orders collection"
- "Show me usage statistics for my database"
```
🚀 "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"
```
## Development
</details>
- `npm run build`: Build TypeScript to JavaScript
- `npm run dev`: Watch mode for development
- `npm start`: Run the built server
### 🎬 **Real-World Scenarios**
## Troubleshooting
**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"
```
1. **Configuration not found**: Make sure `appwrite-config.json` exists in the project root
2. **API Key issues**: Ensure your API key has the correct permissions for database operations
3. **Connection issues**: Verify your API endpoint is correct (especially for self-hosted instances)
**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"
```
## License
---
MIT
## 🔧 Development
```bash
# Build TypeScript to JavaScript
npm run build
# Watch mode for development
npm run dev
# Run the built server
npm start
```
## 🐛 Troubleshooting
<details>
<summary><strong>Common Issues & Solutions</strong></summary>
| 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 `list_attributes` to check collection schema before creating documents |
</details>
## 🤝 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
---
<div align="center">
**⭐ 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)
</div>