Skip to main content
Glama

pocketbase-mcp

A Model Context Protocol (MCP) server for PocketBase — giving AI assistants like Claude full access to your PocketBase backend through a clean, Pythonic interface.


Overview

pocketbase-mcp bridges the gap between LLMs and your PocketBase instance. Once connected, AI assistants can list collections, perform CRUD operations on records, manage authentication, handle file uploads, and administer your database — all through natural language.

Built with FastMCP (the standard Python MCP framework) and httpx for async HTTP communication with the PocketBase REST API.


Related MCP server: PocketBase MCP Server

Features

  • Records — list, get, create, update, delete, and batch-operate on records in any collection

  • Collections — list, inspect, create, update, and delete collection schemas

  • Authentication — authenticate as a superuser or regular user via email/password or API key

  • Files — generate file tokens and retrieve file URLs with optional image transformations

  • Settings — read and update application settings

  • Filtering & Pagination — pass PocketBase filter expressions, sort, expand, and pagination params directly

  • Realtime-aware — designed with SSE subscription patterns in mind for future extension


Requirements

  • Python 3.11+

  • A running PocketBase instance (local or remote)

  • uv (recommended) or pip


Installation

Using pip

pip install pocketbase-mcp

Configuration

The server is configured via environment variables:

Variable

Required

Default

Description

POCKETBASE_URL

Yes

—

Base URL of your PocketBase instance (e.g. http://127.0.0.1:8090)

POCKETBASE_SUPERUSER_EMAIL

No

—

Superuser email for admin operations

POCKETBASE_SUPERUSER_PASSWORD

No

—

Superuser password

POCKETBASE_API_KEY

No

—

Long-lived API key (alternative to email/password)

Set them in a .env file or export directly:

export POCKETBASE_URL=http://127.0.0.1:8090
export POCKETBASE_SUPERUSER_EMAIL=admin@example.com
export POCKETBASE_SUPERUSER_PASSWORD=your-password

Running the Server

stdio transport (default — for Claude Desktop, Claude Code, etc.)

pocketmcp

With MCP Inspector (for development and testing)

# Terminal 1
pocketmcp

# Terminal 2
npx @modelcontextprotocol/inspector

Connecting to Claude

Claude Desktop

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "pocketbase": {
      "command": "pocketmcp",
      "args": ["server"],
      "env": {
        "POCKETBASE_URL": "http://127.0.0.1:8090",
        "POCKETBASE_SUPERUSER_EMAIL": "admin@admin.com",
        "POCKETBASE_SUPERUSER_PASSWORD": "adminadmin"
      }
    }
  }
}

Available Tools

Records

Tool

Description

list_records

List records in a collection with filtering, sorting, and pagination

get_record

Get a single record by ID

create_record

Create a new record

update_record

Update an existing record

delete_record

Delete a record by ID

batch_records

Perform multiple create/update/upsert/delete operations in one request

Collections

Tool

Description

list_collections

List all collections

get_collection

Get a collection schema by name or ID

create_collection

Create a new collection with fields and API rules

update_collection

Update a collection's schema or rules

delete_collection

Delete a collection

Authentication

Tool

Description

auth_with_password

Authenticate a user or superuser with email and password

get_auth_store

Return the current authentication state

Files

Tool

Description

get_file_url

Generate the URL for a file attached to a record

create_file_token

Create a short-lived token for accessing protected files

Settings

Tool

Description

get_settings

Retrieve all application settings

update_settings

Update application settings


Project Structure

pocketbase-mcp/
├── server.py            # MCP server entry point (FastMCP)
├── tools/
│   ├── records.py       # Record CRUD tools
│   ├── collections.py   # Collection management tools
│   ├── auth.py          # Authentication tools
│   ├── files.py         # File tools
│   └── settings.py      # Settings tools
├── client.py            # Async PocketBase HTTP client (httpx)
├── config.py            # Environment variable loading
├── pyproject.toml
└── README.md

Example Usage

Once connected to Claude, you can interact with your PocketBase instance through natural language:

"List all records in the posts collection where status = 'published', sorted by created descending."

"Create a new record in users with name 'Alice' and role 'editor'."

"Show me the schema for the products collection."

"Delete the record with ID ae40239d2bc4477 from comments."

"Update the app name in PocketBase settings to 'My App'."


PocketBase Compatibility

This MCP server targets PocketBase v0.36.9+. The batch API requires it to be explicitly enabled in your PocketBase Dashboard under Settings → Application.


Security Notes

  • Never commit credentials to version control. Use environment variables or a .env file (add .env to .gitignore).

  • For production deployments, prefer API key authentication over email/password.

  • Collection API rules in PocketBase govern what the authenticated user can actually access — pocketbase-mcp respects these rules.


Contributing

Contributions are welcome! Please open an issue before submitting a pull request for significant changes.

  1. Fork the repository

  2. Create a feature branch (git checkout -b feat/my-feature)

  3. Commit your changes

  4. Open a pull request


License

MIT License. See LICENSE for details.

Available Tools

13 tools
auth_with_passwordB

Authenticate a user or superuser with email and password.

NameRequiredDescriptionDefault
emailYesThe user's email address.
passwordYesThe user's password.
collectionNoThe auth collection name. Defaults to '_superusers' for admin auth. Pass a custom collection name (e.g. 'users') for regular user auth._superusers

Output Schema

NameRequiredDescription
tokenYesJWT authentication token.
recordYesThe authenticated user record. May include additional custom fields.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the entire behavioral burden, yet it discloses nothing beyond the bare action. It does not say whether a token or session is issued, how failed credentials are reported, or whether repeated failed attempts are throttled. The presence of an output schema removes the need to describe return values, but the security-sensitive behavior of an auth operation remains undisclosed.

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?

A single front-loaded sentence with no filler, and the core action leads. It is efficient, though its brevity edges toward under-specification rather than optimal density.

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?

The input schema is fully documented and an output schema exists, so the essential contract is discoverable. However, with no annotations and no behavioral content, the definition leaves a security-critical auth tool's side effects and failure modes unexplained, which is a meaningful gap for this complexity level.

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 all three parameters are already documented, including the collection default of '_superusers' and the custom-collection case. The phrase 'user or superuser' loosely maps to the collection parameter but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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?

States a specific verb and resource ('Authenticate a user or superuser') plus the credential mechanisms (email and password). It distinguishes the two subject types (user vs superuser), but does not differentiate itself from related siblings such as get_auth_store, which an agent could plausibly confuse with authentication.

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?

Usage is implied only: the description makes clear this is the way to authenticate, but there is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives like get_auth_store or of what to do after authenticating.

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

batch_recordsC

Perform multiple create/update/upsert/delete operations in one request.

NameRequiredDescriptionDefault
requestsYesList of batch operation dicts. Example: [ {"method": "POST", "url": "/api/collections/posts/records", "body": {"title": "New post"}}, {"method": "PATCH", "url": "/api/collections/posts/records/abc123", "body": {"title": "Updated"}}, {"method": "DELETE", "url": "/api/collections/posts/records/xyz789"} ]

Output Schema

NameRequiredDescription
resultsNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description bears the full behavioral burden, and it does not disclose the most important traits: whether the batch is atomic or allows partial success, what happens to remaining operations when one fails, whether there is a maximum request count, or whether authentication is required. It does add the existence of upsert semantics, which is real value beyond the name, but for an unannotated multi-mutation tool the critical failure semantics are absent.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity is partly the cause of the missing behavioral detail rather than a virtue in itself.

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?

An output schema exists, so return values need not be described. However, for a batch mutation tool with zero annotations, the description should at minimum cover atomicity/partial-failure behavior and any size limits — the two things an agent must know before assembling a batch. Those omissions leave it materially incomplete for the tool's complexity.

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%, and the schema's example enumerates the method/url/body shape with concrete POST, PATCH, and DELETE cases, so the description need not repeat it. The description adds nothing about the requests array beyond what the schema already conveys, so baseline 3 applies.

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 states a specific verb set (create/update/upsert/delete) and scope (multiple operations in one request), which distinguishes it from the single-record siblings like create_record and update_record. It also introduces 'upsert', which no sibling offers. It stops short of naming the siblings it replaces, so it lands at 4 rather than 5.

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?

'In one request' hints at the efficiency motivation for batching, but there is no explicit guidance on when to choose batch_records over repeated calls to create_record/update_record/delete_record. Nothing is said about batch size limits, ordering guarantees, or whether mixed operation types in a single call are advisable.

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

create_collectionC

Create a new collection with fields and API rules.

NameRequiredDescriptionDefault
nameYesThe collection name (must be unique, alphanumeric with underscores).
typeNoThe collection type — 'base', 'auth', or 'view'. Defaults to 'base'.base
fieldsNoList of field definitions. Each field is a dict with at least 'name' and 'type' keys (e.g. {"name": "title", "type": "text"}).
indexesNoList of index expressions.
list_ruleNoAPI rule for listing records (empty string = public, None = superusers only).
view_ruleNoAPI rule for viewing a single record.
create_ruleNoAPI rule for creating records.
delete_ruleNoAPI rule for deleting records.
update_ruleNoAPI rule for updating records.

Output Schema

NameRequiredDescription
idYes
nameYes
typeYesCollection type: 'base', 'auth', or 'view'.
fieldsYes
systemYes
indexesYes
listRuleNo
viewRuleNo
createRuleNo
deleteRuleNo
updateRuleNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden and falls well short. It does not say that creation is a persistent, schema-altering mutation, what permissions are needed, whether it fails on duplicate names, or what errors surface for invalid rule expressions. Only the schema's 'must be unique' note partially covers failure behavior.

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?

A single short, front-loaded sentence with no filler or redundancy. It could carry more substance without bloat, but nothing in it is wasted.

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?

An output schema exists, so return values need not be explained, but this is a nine-parameter schema-mutating operation with zero annotations and the description gives no permission, failure, or side-effect context. An agent would need to infer too much before calling it safely.

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 all nine parameters, including the None-vs-empty-string rule semantics, are already documented in the schema. The description only echoes 'fields and API rules', adding no meaning beyond that, so the baseline 3 applies.

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?

States a specific verb and resource (create a new collection) plus the two main content areas (fields and API rules), so an agent knows exactly what operation this performs. It does not differentiate from sibling update_collection or delete_collection beyond the implicit 'new', but the verb is unambiguous.

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 explicit guidance about when to use this versus update_collection, no prerequisites (e.g. auth level required to define API rules), and no note about what to do if the collection already exists. Only the word 'new' hints at the create-vs-update distinction.

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

create_recordC

Create a new record in a collection.

NameRequiredDescriptionDefault
bodyYesThe record data as key-value pairs matching the collection fields (e.g. {"title": "Hello", "status": "draft"}).
expandNoComma-separated list of relations to expand in the response.
fieldsNoComma-separated list of fields to return in the response.
collectionYesThe collection name or ID.

Output Schema

NameRequiredDescription
idYes
createdYes
updatedYes
collectionIdYes
collectionNameYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full burden for a mutation tool and discloses almost nothing: no permission or auth requirements, no validation/failure behavior, no statement about whether fields not present in `body` get defaults, and no confirmation of what is returned. The only behavioral signal is the implicit fact that it writes, which is a significant gap for a create operation.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though its terseness borders on under-specification rather than being genuinely well-structured guidance.

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?

An output schema exists, so return values need not be explained, and the input schema is fully documented, which covers the mechanical parts. However, for a mutation tool with zero annotations and several sibling write tools, the description omits error behavior, prerequisites, and sibling routing, leaving the definition adequate but incomplete.

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 `body`, `collection`, `expand`, and `fields` are already documented in the schema, including the key-value example for `body`. The description adds no additional meaning about how `body` must match collection fields or how `expand`/`fields` interact with the response, so the baseline 3 applies.

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 states a specific verb and resource ("Create a new record in a collection"), which distinguishes it from read-oriented siblings like get_record or list_records. It does not differentiate from update_record or batch_records, so an agent must infer that this creates exactly one record while batch_records handles multiples.

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?

There is no when-to-use guidance at all, no mention of when to prefer batch_records for multiple records, and no note that update_record should be used for existing records. The agent is left to infer selection from the tool name alone.

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

delete_collectionC

Delete a collection by name or ID.

NameRequiredDescriptionDefault
collection_id_or_nameYesThe collection ID or name to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden of disclosure for a destructive operation, yet it says nothing about irreversibility, whether contained records are cascade-deleted, required permissions, or idempotency. Only the bare fact of deletion is conveyed.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity contributes to the gaps in behavioral disclosure rather than being a strength on its own.

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?

Although an output schema exists so return values need not be described, this is a destructive tool with no annotations and the description omits the consequences of deletion (records inside the collection, recoverability) that an agent needs before invoking it.

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% for the single parameter, so the schema already explains that it accepts an ID or name. The description merely restates that duality and adds no format, resolution-order, or validation detail.

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 uses a specific verb and resource ("Delete a collection") and states that the target may be given by name or ID, so the action is unambiguous. It does not explicitly differentiate itself from siblings such as delete_record, but the resource noun makes the distinction inferable.

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?

There is no guidance on when to use this versus alternatives like delete_record or update_collection, and no mention of prerequisites, confirmation steps, or conditions under which deletion should be avoided. The agent must infer all usage context from the name alone.

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

delete_recordB

Delete a record by ID.

NameRequiredDescriptionDefault
record_idYesThe record ID to delete.
collectionYesThe collection name or ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

"Delete" communicates that the operation is destructive, but no annotations are provided to establish its safety profile. The description does not disclose whether deletion is permanent or soft, whether related data is affected, what permissions are required, or how missing records are handled.

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 single sentence is front-loaded, direct, and contains no filler. Its brevity leaves behavioral gaps, but those are assessed under the other dimensions rather than being wordiness or structural problems.

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?

For a simple two-parameter operation with fully described inputs and an output schema, the description is sufficient to identify the basic invocation without needing to explain return values. However, the absence of annotations makes the missing deletion semantics and side-effect information meaningful gaps for a destructive tool.

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 the structured fields already document both required parameters and establish the baseline score. The description reinforces the role of record_id but adds no further meaning about collection identifiers, ID formats, or how the two parameters relate.

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, resource, and targeting method: deleting a record by ID. It is distinguishable from delete_collection and update_record by its wording, but it does not explicitly differentiate itself from any sibling.

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?

The phrase "by ID" gives minimal implicit context for when to use it, but there are no prerequisites, exclusions, or alternative-tool recommendations. It does not explain when batch_records or delete_collection would be more appropriate.

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

get_auth_storeB

Return the current authentication state.

Returns: A dict with the active token and all stored sessions.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does disclose that the return payload contains an active token and stored sessions, which is valuable sensitivity context, but it says nothing about whether the call is read-only, what happens when unauthenticated, or any permission requirements.

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?

Two short sentences, front-loaded with the purpose. The "Returns:" block duplicates the existing output schema and is partly redundant, though it is brief enough not to be wasteful.

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?

An output schema exists, so the return-value sentence is not strictly needed, and for a zero-parameter getter the description is close to sufficient. It still leaves the unauthenticated-state behavior and safety profile unstated, which matters for a tool that surfaces tokens.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter meaning to add and the baseline applies. The description correctly does not invent inputs.

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?

States a specific verb and resource ("Return the current authentication state") and its scope, which distinguishes it from the sibling auth_with_password by implying a read of existing state rather than a login action. It never names that sibling explicitly, so the differentiation is inferential rather than stated.

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 when-to-use or when-not-to-use guidance is given, and the obvious alternative (auth_with_password) is not mentioned. An agent must guess whether this tool is for checking login status versus initiating authentication.

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

get_collectionC

Get a collection schema by name or ID.

NameRequiredDescriptionDefault
collection_id_or_nameYesThe collection ID or name.

Output Schema

NameRequiredDescription
idYes
nameYes
typeYesCollection type: 'base', 'auth', or 'view'.
fieldsYes
systemYes
indexesYes
listRuleNo
viewRuleNo
createRuleNo
deleteRuleNo
updateRuleNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden of behavioral disclosure. "Get" implies a read, but the description says nothing about read-only guarantees, what happens when the name/ID does not exist, or any permission requirements for private collections.

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?

A single sentence with the resource and its lookups front-loaded and no filler. It is efficient, though the brevity comes at the cost of the missing behavior and selection guidance noted above.

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?

An output schema exists and there is only one well-documented parameter, so return values and inputs are covered elsewhere. However, with zero annotations the description should still establish that this is a safe read and what a missing collection looks like; that gap keeps it at minimum-viable.

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%, and the schema already says the parameter accepts "The collection ID or name." The description's "by name or ID" repeats that rather than adding format, precedence, or edge-case meaning such as what happens if a name collides with an ID.

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?

States a specific verb ("Get") and a specific resource ("collection schema"), keyed by name or ID. It is distinguishable from list_collections and get_record, though it never explicitly contrasts itself with the other read tools like list_collections or get_auth_store.

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?

There is no when-to-use or when-not-to-use guidance and no named alternative. An agent must infer that this is the single-collection lookup versus list_collections for enumeration, entirely from the tool's name and the sibling list.

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

get_recordC

Get a single record by ID.

NameRequiredDescriptionDefault
expandNoComma-separated list of relations to expand.
fieldsNoComma-separated list of fields to return.
record_idYesThe record ID.
collectionYesThe collection name or ID.

Output Schema

NameRequiredDescription
idYes
createdYes
updatedYes
collectionIdYes
collectionNameYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden. 'Get' implies a read, but it says nothing about error behavior for missing records, whether expand/fields change payload size or trigger extra fetches, or permission requirements — meaningful gaps for an unannotated tool.

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?

A single short sentence with zero wasted wording and the core action front-loaded. Brevity is appropriate, though it borders on under-specification rather than elegant concision.

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?

An output schema exists, so return values needn't be explained, and the input schema fully documents the parameters. However, with no annotations and no usage or error context, a retrieval tool on a large sibling set deserves more than one sentence.

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 all four parameters, including expand and fields, are already documented in the schema. The description adds no additional meaning beyond that baseline.

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?

States a specific verb ('Get') and resource ('a single record') scoped by ID, which is clear enough to distinguish from list_records at a glance. It does not explicitly name or contrast with siblings, and omits that a collection scope is required, so it falls short of full differentiation.

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?

There is no guidance on when to use this versus list_records, batch_records, or get_collection, and no mention of prerequisites such as needing a valid collection. The agent must infer the use case purely from the name.

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

list_collectionsC

List all collections with optional filtering, sorting, and pagination.

NameRequiredDescriptionDefault
pageNoThe page number to return. Defaults to 1.
sortNoSort expression (e.g. '-created', '+name').
filterNoPocketBase filter expression (e.g. "type = 'base'").
per_pageNoNumber of collections per page. Defaults to 30.

Output Schema

NameRequiredDescription
pageYes
itemsYes
perPageYes
totalItemsYes
totalPagesYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses that filtering, sorting and pagination are optional, but says nothing about whether the listing is admin-scoped, whether it returns only accessible collections, or what the defaults are — all relevant for a PocketBase collections endpoint.

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?

A single front-loaded sentence with the resource first and capabilities second; nothing is redundant. It is arguably too terse for the behavioral gaps it leaves, but there is no wasted wording.

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?

The output schema covers return values and the input schema covers all four optional parameters, so the mechanical calling information is complete. What is missing relative to a collections-listing tool is the permission/auth context and any statement of listing scope.

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 page, per_page, sort and filter are already fully documented with defaults and examples. The description only echoes the parameter categories at a high level and adds no syntax or constraint detail beyond the schema.

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?

States a specific verb and resource ("List all collections") and names the three supported operations. It is distinguishable from get_collection (singular retrieval) by the word "all", though it never explicitly contrasts itself with that sibling.

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?

There is no when-to-use guidance, no mention of when to prefer get_collection, and no prerequisites such as required auth scope. The agent must infer usage entirely from the tool name and the word "optional".

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

list_recordsB

List records in a collection with filtering, sorting, and pagination.

NameRequiredDescriptionDefault
pageNoThe page number to return. Defaults to 1.
sortNoSort expression (e.g. '-created', '+title').
expandNoComma-separated list of relations to expand (e.g. 'author,tags').
fieldsNoComma-separated list of fields to return (e.g. 'id,title,created').
filterNoPocketBase filter expression (e.g. "status = 'published'").
per_pageNoNumber of records per page. Defaults to 30.
collectionYesThe collection name or ID.
skip_totalNoIf true, skip the total counts query for faster responses.

Output Schema

NameRequiredDescription
pageYes
itemsYes
perPageYes
totalItemsYes
totalPagesYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it only discloses that pagination exists. It does not state that this is a read-only operation, whether collection access rules or auth apply, how results are ordered by default, or the cost implications of the total-count query that skip_total hints at. An output schema exists, so return-value explanation is not required.

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?

A single front-loaded sentence with no filler, and the core capability set appears immediately. It is efficient, though the brevity borders on under-specification for an eight-parameter tool.

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?

With 100% schema coverage and an output schema, the structural load is already carried elsewhere, so the short description is not fatal. However, for an eight-parameter list tool with no annotations, it says nothing about access control, default ordering, or the performance tradeoff behind skip_total, leaving gaps an agent would want filled.

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 100%, so all eight parameters, including the PocketBase filter syntax, sort expression format, expand, fields, and skip_total, are already documented in the schema. The description's 'filtering, sorting, and pagination' merely summarizes a subset of those parameters and adds no semantics beyond the schema, so the baseline 3 applies.

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 sentence gives a specific verb ('List') and resource ('records in a collection') and names the three capabilities (filtering, sorting, pagination), which is enough to distinguish it from get_record and create_record. It stops short of explicitly contrasting with siblings like list_collections, so it is clear but not fully differentiated.

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?

Enumeration is implicitly the use case, but there is no explicit 'use this when...' statement, no mention of when to prefer get_record for a single item, and no prerequisites such as collection permissions or auth requirements. The agent must infer the routing from the tool name.

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

update_collectionC

Update a collection's schema or rules.

NameRequiredDescriptionDefault
nameNoNew name for the collection.
fieldsNoUpdated list of field definitions. Replaces the existing fields.
indexesNoUpdated list of index expressions.
list_ruleNoUpdated API rule for listing records. Pass empty string for public access, None for superusers only, or omit to leave unchanged.__unset__
view_ruleNoUpdated API rule for viewing a single record.__unset__
create_ruleNoUpdated API rule for creating records.__unset__
delete_ruleNoUpdated API rule for deleting records.__unset__
update_ruleNoUpdated API rule for updating records.__unset__
collection_id_or_nameYesThe collection ID or name to update.

Output Schema

NameRequiredDescription
idYes
nameYes
typeYesCollection type: 'base', 'auth', or 'view'.
fieldsYes
systemYes
indexesYes
listRuleNo
viewRuleNo
createRuleNo
deleteRuleNo
updateRuleNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden, and it discloses almost nothing: not that passing 'fields' or 'indexes' replaces existing definitions, not the '__unset__' semantics for rules, not permission requirements, and not whether the change is reversible. For a 9-parameter mutation tool this is a significant gap.

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?

A single short sentence, front-loaded with the verb and resource, with no filler. Its brevity is efficient but borders on under-specification for a mutation tool with nine parameters.

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?

With an output schema present the return value need not be explained, but a mutation tool with no annotations and destructive replacement semantics (fields, indexes, rules) needs more than one sentence. The description leaves permission requirements and the overwrite behavior unstated, relying entirely on the schema.

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 all nine parameters, including the '__unset__' sentinel and the empty-string/public rule convention, are already documented in the schema. The description adds only the high-level grouping 'schema or rules' and omits renaming, so it does not exceed the baseline.

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?

States a specific verb and resource ('Update a collection') plus the broad scope of what can change ('schema or rules'). It is distinguishable from record-level siblings (update_record) and from create_collection/delete_collection by name and verb. It stops short of naming siblings explicitly or noting that renaming is also possible, so it is clear but not fully differentiating.

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?

There is no guidance on when to use this versus alternatives such as create_collection or delete_collection, and no prerequisites (admin/auth requirements, whether the collection must be empty or existing). The agent must infer usage entirely from the tool name.

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

update_recordC

Update an existing record.

NameRequiredDescriptionDefault
bodyYesThe fields to update as key-value pairs. Only include the fields you want to change (e.g. {"status": "published"}).
expandNoComma-separated list of relations to expand in the response.
fieldsNoComma-separated list of fields to return in the response.
record_idYesThe record ID to update.
collectionYesThe collection name or ID.

Output Schema

NameRequiredDescription
idYes
createdYes
updatedYes
collectionIdYes
collectionNameYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. "Update" implies a mutation, but the description does not disclose partial-update behavior, missing-record semantics, permissions, or other safety context.

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

Conciseness3/5

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

The single sentence is short, readable, and front-loaded, with no structural clutter. However, its brevity provides almost no value beyond the tool name, making it under-specified rather than usefully concise.

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?

The rich input schema and presence of an output schema reduce what the description must explain, but this remains an unannotated mutation with five parameters and a nested body. A minimal restatement is not complete enough; it should at least clarify partial updates and routing versus related record tools.

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%, including the important partial-update semantics of `body` and the response-shaping options `expand` and `fields`. The description adds no parameter meaning, so the high schema coverage supports the baseline score.

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

Purpose2/5

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

The description identifies an update to an existing record, but it simply verbalizes `update_record` without adding scope or distinguishing it from siblings such as `update_collection` or `create_record`. This makes it largely tautological rather than informative.

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?

There is no explicit when-to-use or when-not-to-use guidance, prerequisite, or alternative. The word "existing" only weakly implies that creation requires another tool; `create_record` is never named.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.1.1
    • First observedauth_with_password
    • First observedbatch_records
    • First observedcreate_collection
    • First observedcreate_record
    • First observeddelete_collection
    • First observeddelete_record
    • First observedget_auth_store
    • First observedget_collection
    • First observedget_record
    • First observedlist_collections
    • First observedlist_records
    • First observedupdate_collection
    • First observedupdate_record

TDQS

B3.2/5.0

Scored across 13 tools

Disambiguation5/5

Each tool has a clearly distinct resource and action: collections, records, batch operations, and authentication are cleanly separated. The only overlap is batch_records versus individual record operations, but their boundaries are obvious.

Naming Consistency4/5

Nearly all tools use snake_case verb_noun naming such as list_collections, create_record, and delete_collection. auth_with_password is a minor deviation, but it remains readable and consistent with the overall verb-led style.

Tool Count5/5

The set has 13 tools, which is well within the appropriate range for a PocketBase CRUD and auth server. Every tool appears to earn its place without excessive surface area.

Completeness4/5

Core CRUD coverage is strong for both collections and records, including batch operations and authentication. Minor gaps exist around auth lifecycle operations such as logout or token refresh, but the main workflows are covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    D
    quality
    Not graded
    maintenance
    A comprehensive MCP server that provides sophisticated tools for interacting with PocketBase databases. This server enables advanced database operations, schema management, and data manipulation through the Model Context Protocol (MCP).
    14
    627 npm
    70
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive server that enables advanced database operations with PocketBase, providing tools for collection management, record operations, user management, and database administration through the Model Context Protocol.
    627 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables Claude AI to interact with PocketBase databases by listing and accessing collections through natural language.
    5 npm
    1
    MIT
  • -
    license
    B
    quality
    Not graded
    maintenance
    A comprehensive Model Context Protocol server for PocketBase that provides both user and administrative functionality, enabling authentication, collection/record management, file operations, and system administration through a standardized interface.
    38
    5 npm
    -