Skip to main content
Glama
Perufitlife

appwrite-security-mcp

by Perufitlife

Appwrite Security MCP Server

MCP server for Appwrite security audits. Scan permissions, get a structured fix proposal, all from inside Claude Code, Cursor, or Cline. Active probe confirms every leak live with an anonymous fetch.

Tools

Tool

What it does

audit_project

Scans the Appwrite project, returns findings JSON. Active probe ON by default. Caches result.

list_findings

Lists cached findings by index, optionally filtered by severity.

preview_fix

Describes the proposed permission change for a finding (Appwrite PATCH replaces the full perms array, not merges, so the agent constructs the new list manually).

apply_fix is intentionally not in v0.1 because Appwrite permission updates are full-replacement — a partial agent diff would silently drop perms. Apply manually in the Appwrite console after preview_fix.

Related MCP server: aws-security-mcp

Install

{
  "mcpServers": {
    "appwrite-security": {
      "command": "npx",
      "args": ["-y", "@perufitlife/appwrite-security-mcp"],
      "env": {
        "APPWRITE_ENDPOINT": "https://cloud.appwrite.io/v1",
        "APPWRITE_PROJECT_ID": "...",
        "APPWRITE_API_KEY": "..."
      }
    }
  }
}

API key needs scopes: databases.read, collections.read, projects.read.

License

MIT. Open source. Built by @Perufitlife.

For the standalone CLI, see https://github.com/Perufitlife/appwrite-security-skill For Supabase MCP, see https://github.com/Perufitlife/supabase-security-mcp For PocketBase MCP, see https://github.com/Perufitlife/pocketbase-security-mcp

Available Tools

3 tools
audit_projectA

Scan an Appwrite project for over-permissive collection/document permissions. Returns findings JSON with active-probe confirmation. Caches result for use by other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoAppwrite endpoint base URL, e.g. https://cloud.appwrite.io/v1. Optional if APPWRITE_ENDPOINT env var is set.
projectNoAppwrite project ID. Optional if APPWRITE_PROJECT_ID is set.
keyNoAppwrite server API key with scopes: databases.read, collections.read. Optional if APPWRITE_API_KEY is set.
no_probeNoSkip the live anonymous probe.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It notes the return format (findings JSON), live probe confirmation, and caching behavior. However, it does not specify if the scan is read-only, any required permissions, or potential impacts, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. The first sentence states the core action, and the second adds key behavioral details (return format and caching). No unnecessary words, well-suited for quick reading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, no output schema), the description covers the tool's purpose and caching but lacks details on the findings JSON structure, the meaning of 'active-probe confirmation', or how the cached result is used by other tools. There is room for improvement in explaining the output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description adds value by indicating that 'endpoint', 'project', and 'key' are optional if corresponding env vars are set. This is helpful but does not substantially expand meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: scanning Appwrite projects for over-permissive permissions. It uses specific verbs and resources ('scan', 'Appwrite project', 'over-permissive collection/document permissions') and distinguishes itself from sibling tools like 'list_findings' and 'preview_fix' by being the initial scanning step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning caching for other tools, suggesting this is a preparatory step. However, it does not explicitly state when to use this tool versus alternatives like 'list_findings' or 'preview_fix', nor does it provide conditions for not using it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_findingsC

List findings from the most recent audit, optionally filtered by severity.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
severityNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries the burden. It does not disclose behavior for missing data (e.g., no recent audit), permissions, pagination, or return format. Only mentions listing and filtering, lacking transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loading the purpose. It is efficient but could be expanded slightly to include key parameters without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (two parameters, no output schema, no annotations), the description is incomplete. It does not describe the output, connection to sibling tools, or behavior when no audit exists. The agent would have uncertainties about usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should compensate. It explains 'severity' as an optional filter but ignores the 'project' parameter entirely. The description adds minimal meaning beyond the schema, leaving the project parameter unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and resource 'findings', and specifies 'from the most recent audit' and optional severity filtering. However, it does not mention the 'project' parameter, which is present in the schema, causing slight ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus its siblings (audit_project, preview_fix). The description does not indicate that an audit must be run first or that this tool should be used before preview_fix. Lacks explicit usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_fixA

Describe the proposed permission change for a finding. Appwrite's permission update API replaces the full set, so the agent should output a complete replacement permission list rather than a delta.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
finding_indexYesIndex of the finding from list_findings.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the API replaces the full set, which is a key behavioral trait. However, it does not mention side effects, return values, or whether the tool is safe to invoke multiple times.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences, no wasted words. The first sentence states the purpose, and the second provides essential behavioral context. Information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a preview tool with no output schema, the description should clarify what the preview entails (e.g., output format) and how to use it in conjunction with siblings. It lacks details on the return value or next steps after previewing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, with only 'finding_index' having a description. The description does not add any parameter-level detail beyond what the schema provides. The 'project' parameter remains undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Describe') and resource ('proposed permission change for a finding'). It indicates the tool's role in previewing changes. However, it does not differentiate from sibling tools like 'audit_project' or 'list_findings'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a critical guideline about outputting a complete replacement permission list due to API behavior. However, it does not explicitly state when to use this tool versus alternatives or when to avoid it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: auditing, listing findings, and previewing fixes. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: audit_project, list_findings, preview_fix.

Tool Count5/5

3 tools is well-scoped for a focused security audit tool; each serves a necessary function without bloat.

Completeness3/5

Covers the audit, listing, and preview workflow, but lacks an apply_fix tool to execute changes, leaving a notable gap in the lifecycle.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server that lets AI coding agents (Claude Code, Cursor, Cline) audit Supabase projects for security misconfigurations AND apply the fixes — without leaving the agent. Tools: audit_project, list_findings, preview_fix (BEGIN/ROLLBACK safety), apply_fix (with confirmation), apply_all_fixes (transactional bulk). Closes the audit-fix loop entirely in the agent — other Supabase scanners only report.
    5
    14
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    This MCP server enables security auditing for MCP configurations and AI agents, including prompt injection testing, data flow tracing, and security policy generation.
    474
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Perufitlife/appwrite-security-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server