Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Appwrite Codex CLI Plugin

![License](https://img.shields.io/github/license/appwrite/codex-plugin.svg?style=flat-square)
![Version](https://img.shields.io/badge/api%20version-0.1.1-blue.svg?style=flat-square)
![Version](https://img.shields.io/badge/api%20version-0.2.0-blue.svg?style=flat-square)
[![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite)
[![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord)

Appwrite tools for the [OpenAI Codex CLI](https://github.com/openai/codex). This plugin packages Appwrite SDK skills, Appwrite deployment workflow skills, and the Appwrite docs MCP server.
Appwrite tools for the [OpenAI Codex CLI](https://github.com/openai/codex). This plugin packages Appwrite SDK skills, Appwrite deployment workflow skills, and the hosted Appwrite MCP server.

## Structure

Expand Down Expand Up @@ -89,19 +89,29 @@ Deployment workflows are exposed as explicit skills:

Use these to walk through deploying Appwrite sites and functions with the Appwrite CLI. Codex can also load them automatically when a task matches the skill description.

## Included MCP Servers
## Hosted MCP Server

The bundled `plugins/appwrite/config.toml` registers one MCP server:
The bundled plugin and `plugins/appwrite/config.toml` register one `appwrite` server at `https://mcp.appwrite.io/`. It provides tools for working with your Appwrite workspace and projects and for searching the latest Appwrite documentation.

- `appwrite-docs` proxies `https://mcp-for-docs.appwrite.io` through `npx mcp-remote` so Codex can search the Appwrite documentation.
The hosted server uses browser-based OAuth, so no API key, project ID, endpoint, or other manually configured secret is required. After installing the plugin or merging the manual configuration, authenticate with:

```sh
codex mcp login appwrite
```

Then try:

> Use Appwrite to show my workspace context and list my projects.

If the browser does not open, use the authorization URL printed by Codex. Run `codex mcp logout appwrite` followed by `codex mcp login appwrite` to refresh the OAuth session, and use `codex mcp get appwrite` to inspect the server configuration and status.

## Verify

After copying, run `codex` and check:

- A session about Appwrite TypeScript work loads the `appwrite-typescript` skill (visible in the session header).
- Typing `$` lets you invoke the `appwrite-deploy-*` skills explicitly.
- `codex mcp list` (or `codex --debug`) lists the `appwrite-docs` server.
- `codex mcp list` (or `codex --debug`) lists the `appwrite` server.

## Contribution

Expand Down
8 changes: 4 additions & 4 deletions plugins/appwrite/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "appwrite",
"version": "0.1.1",
"description": "Appwrite tools for Codex, including SDK skills, MCP servers, and deployment workflow skills.",
"version": "0.2.0",
"description": "Appwrite tools for Codex, including SDK skills, the hosted Appwrite MCP server, and deployment workflow skills.",
"author": {
"name": "Appwrite",
"email": "team@appwrite.io",
Expand All @@ -20,8 +20,8 @@
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Appwrite",
"shortDescription": "Appwrite SDK skills, MCP servers, and deployment workflow skills for Codex.",
"longDescription": "Use Appwrite with Codex through language-specific SDK skills, project and documentation MCP servers, and guided deployment skills for sites and functions.",
"shortDescription": "Appwrite SDK skills, hosted MCP tools, and deployment workflow skills for Codex.",
"longDescription": "Use Appwrite with Codex through language-specific SDK skills, the OAuth-enabled hosted MCP server, and guided deployment skills for sites and functions.",
"developerName": "Appwrite",
"category": "Developer Tools",
"capabilities": [
Expand Down
4 changes: 2 additions & 2 deletions plugins/appwrite/.mcp.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"mcpServers": {
"appwrite-docs": {
"appwrite": {
"type": "http",
"url": "https://mcp-for-docs.appwrite.io"
"url": "https://mcp.appwrite.io/"
}
}
}
5 changes: 2 additions & 3 deletions plugins/appwrite/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@
#
# Merge the contents of this file into your ~/.codex/config.toml.

[mcp_servers.appwrite-docs]
command = "npx"
args = ["mcp-remote", "https://mcp-for-docs.appwrite.io"]
[mcp_servers.appwrite]
url = "https://mcp.appwrite.io/"
34 changes: 17 additions & 17 deletions plugins/appwrite/skills/appwrite-cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -442,17 +442,17 @@ appwrite push tables

| Command | Description |
|---------|-------------|
| `appwrite tables-db list-tables --database-id <ID>` | List tables |
| `appwrite tables-db create-table --database-id <ID>` | Create table |
| `appwrite tables-db get-table --database-id <ID> --table-id <ID>` | Get table |
| `appwrite tables-db update-table --database-id <ID> --table-id <ID>` | Update table |
| `appwrite tables-db delete-table --database-id <ID> --table-id <ID>` | Delete table |
| `appwrite tables-db list-columns --database-id <ID> --table-id <ID>` | List columns |
| `appwrite tables-db get-column --database-id <ID> --table-id <ID> --key <KEY>` | Get column |
| `appwrite tables-db delete-column --database-id <ID> --table-id <ID> --key <KEY>` | Delete column |
| `appwrite tables-db list-column-indexes --database-id <ID> --table-id <ID>` | List indexes |
| `appwrite tables-db create-column-index --database-id <ID> --table-id <ID>` | Create index |
| `appwrite tables-db delete-column-index --database-id <ID> --table-id <ID> --key <KEY>` | Delete index |
| `appwrite tablesdb list-tables --database-id <ID>` | List tables |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Invalid table command group

When Codex follows these table, column, or row examples, it invokes appwrite tablesdb, but the Appwrite CLI registers this command group as tables-db, causing the CLI to reject the command without performing the requested operation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: plugins/appwrite/skills/appwrite-cli/SKILL.md
Line: 445

Comment:
**Invalid table command group**

When Codex follows these table, column, or row examples, it invokes `appwrite tablesdb`, but the Appwrite CLI registers this command group as `tables-db`, causing the CLI to reject the command without performing the requested operation.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Claude Code Fix in Codex

| `appwrite tablesdb create-table --database-id <ID>` | Create table |
| `appwrite tablesdb get-table --database-id <ID> --table-id <ID>` | Get table |
| `appwrite tablesdb update-table --database-id <ID> --table-id <ID>` | Update table |
| `appwrite tablesdb delete-table --database-id <ID> --table-id <ID>` | Delete table |
| `appwrite tablesdb list-columns --database-id <ID> --table-id <ID>` | List columns |
| `appwrite tablesdb get-column --database-id <ID> --table-id <ID> --key <KEY>` | Get column |
| `appwrite tablesdb delete-column --database-id <ID> --table-id <ID> --key <KEY>` | Delete column |
| `appwrite tablesdb list-column-indexes --database-id <ID> --table-id <ID>` | List indexes |
| `appwrite tablesdb create-column-index --database-id <ID> --table-id <ID>` | Create index |
| `appwrite tablesdb delete-column-index --database-id <ID> --table-id <ID> --key <KEY>` | Delete index |

### Column type commands

Expand All @@ -474,23 +474,23 @@ appwrite push tables
| `create-enum-column` | Enum column (whitelist of accepted values) |
| `create-relationship-column` | Relationship column |

All column commands use `appwrite tables-db <command> --database-id <ID> --table-id <ID>`.
All column commands use `appwrite tablesdb <command> --database-id <ID> --table-id <ID>`.

### Row operations

```bash
# Create a row
appwrite tables-db create-row \
appwrite tablesdb create-row \
--database-id "<DATABASE_ID>" --table-id "<TABLE_ID>" \
--row-id 'unique()' --data '{ "title": "Hello World" }' \
--permissions 'read("any")' 'write("team:abc")'

# List rows (JSON output)
appwrite tables-db list-rows \
appwrite tablesdb list-rows \
--database-id "<DATABASE_ID>" --table-id "<TABLE_ID>" --json

# Get a row
appwrite tables-db get-row \
appwrite tablesdb get-row \
--database-id "<DATABASE_ID>" --table-id "<TABLE_ID>" --row-id "<ROW_ID>"
```

Expand All @@ -499,7 +499,7 @@ appwrite tables-db get-row \
Use `--where`, `--sort-asc`, `--sort-desc`, `--limit`, `--offset`, `--cursor-after`, and `--cursor-before` on list commands. Row and document list/get commands also support repeated `--select` flags.

```bash
appwrite tables-db list-rows \
appwrite tablesdb list-rows \
--database-id "<DATABASE_ID>" \
--table-id "<TABLE_ID>" \
--where 'status=active' \
Expand Down Expand Up @@ -805,7 +805,7 @@ appwrite users list --json
appwrite users list --verbose

# View a row in the Console
appwrite tables-db get-row \
appwrite tablesdb get-row \
--database-id "<DATABASE_ID>" \
--table-id "<TABLE_ID>" \
--row-id "<ROW_ID>" \
Expand Down