Files
app-write-mcp/README.md
Midoshki d0db180121 Initial commit: Complete Appwrite MCP Server
- Comprehensive Appwrite integration with 50+ tools
- Smart schema operations (auto-detect, validate, migrate)
- Data analysis and insights capabilities
- Full CRUD operations for databases, collections, documents
- User management, storage, functions, and teams support
- Removed problematic natural language query features
- Clean TypeScript implementation with proper error handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 19:21:55 +03:00

249 lines
7.7 KiB
Markdown

# Appwrite MCP Server
A comprehensive Model Context Protocol (MCP) server that transforms Claude Code into an intelligent Appwrite management assistant.
## 🚀 Features
**Core Appwrite Management:**
- Complete database and collection operations
- Document CRUD with full query support
- User management and authentication
- Storage buckets and file operations
- Serverless function management
- Team and permission management
**🧠 Intelligent Database Assistant:**
- **Auto-detect schemas** from sample data
- **Data quality analysis** and recommendations
- **Duplicate detection** with similarity matching
- **Index optimization** suggestions
- **Schema migrations** with safety checks
## Installation
1. Clone this repository:
```bash
git clone <repository-url>
cd appwrite-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the TypeScript code:
```bash
npm run build
```
4. Configure your Appwrite credentials:
```bash
cp appwrite-config.json.template appwrite-config.json
```
5. Edit `appwrite-config.json` with your Appwrite project details:
```json
{
"projectId": "your-project-id",
"apiEndpoint": "https://cloud.appwrite.io/v1",
"apiKey": "your-api-key"
}
```
## Adding to Claude Code
1. Add the MCP server to Claude Code:
```bash
claude mcp add appwrite-mcp-server
```
2. When prompted, provide the absolute path to the built server:
```
/absolute/path/to/your/app-write-mcp/dist/index.js
```
3. Restart Claude Code if needed.
## Available Tools
### 🗄️ Database Operations
- **create_database**: Create a new database
- **list_databases**: List all databases in your project
- **delete_database**: Delete a database
### 📁 Collection Operations
- **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
### 🏷️ Attribute Management
- **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
### 📊 Index Management
- **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
### 📄 Document Operations
- **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
### 👥 User Management
- **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
### 🗂️ Storage Operations
- **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
### ⚡ Function Management
- **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
### 👨‍👩‍👧‍👦 Team Management
- **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
### 🧠 Smart Schema Operations
- **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
### 📊 Data Analysis & Insights
- **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
## Configuration
### Getting Appwrite Credentials
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
### Configuration File
The `appwrite-config.json` file should be in the root directory of this project:
```json
{
"projectId": "your-project-id-here",
"apiEndpoint": "https://cloud.appwrite.io/v1",
"apiKey": "your-api-key-here"
}
```
## Usage Examples
Once added to Claude Code, you can use natural language to interact with Appwrite:
**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"
**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"
**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"
**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"
**Storage Management:**
- "Create a storage bucket called 'images'"
- "List all storage buckets"
- "Show me all files in the images bucket"
**Function Management:**
- "Create a new function called 'sendEmail' with Node.js runtime"
- "List all functions"
- "Update function abc123's timeout to 300 seconds"
**Team Management:**
- "Create a new team called 'Developers'"
- "List all teams"
- "Add user john@example.com to the Developers team"
**🧠 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"
**📊 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"
## Development
- `npm run build`: Build TypeScript to JavaScript
- `npm run dev`: Watch mode for development
- `npm start`: Run the built server
## Troubleshooting
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)
## License
MIT