appwrite-security-mcp
Provides tools for auditing Appwrite project permissions, listing findings, and previewing fixes, enabling security audits from within AI assistants.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@appwrite-security-mcpscan my Appwrite project for security issues"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Scans the Appwrite project, returns findings JSON. Active probe ON by default. Caches result. |
| Lists cached findings by index, optionally filtered by severity. |
| 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 toolsaudit_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.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | No | Appwrite endpoint base URL, e.g. https://cloud.appwrite.io/v1. Optional if APPWRITE_ENDPOINT env var is set. | |
| project | No | Appwrite project ID. Optional if APPWRITE_PROJECT_ID is set. | |
| key | No | Appwrite server API key with scopes: databases.read, collections.read. Optional if APPWRITE_API_KEY is set. | |
| no_probe | No | Skip the live anonymous probe. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | ||
| severity | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | ||
| finding_index | Yes | Index of the finding from list_findings. |
TDQS
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.
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.
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.
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.
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.
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
Each tool has a clearly distinct purpose: auditing, listing findings, and previewing fixes. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case: audit_project, list_findings, preview_fix.
3 tools is well-scoped for a focused security audit tool; each serves a necessary function without bloat.
Covers the audit, listing, and preview workflow, but lacks an apply_fix tool to execute changes, leaving a notable gap in the lifecycle.
Maintenance
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
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
An MCP server for Arcjet - the runtime security platform that ships with your AI code.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP 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.5141MIT
- AlicenseAqualityBmaintenanceMCP server for automated AWS security scanning — 19 modules, risk scoring, zero write operations.3525MIT
- FlicenseNot gradedqualityBmaintenanceMCP server for auditing AI agent permissions and access by scanning for the trifecta of credentials, injection, and reach without heavy infrastructure.
- AlicenseNot gradedqualityAmaintenanceThis MCP server enables security auditing for MCP configurations and AI agents, including prompt injection testing, data flow tracing, and security policy generation.474MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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