# com.googleapis.firestore/mcp (remote · firestore.googleapis.com)

Interact with your Google Cloud Firestore resources using natural language commands.

- Trust score: 60/100 (medium)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `firestore.googleapis.com`: 60/100 (this document), [markdown](https://verifymcp.io/servers/com-googleapis-firestore-mcp/firestore.md), [page](https://verifymcp.io/servers/com-googleapis-firestore-mcp/firestore)

## Channel facts

- Endpoint: `https://firestore.googleapis.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_document).
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2017 tokens (~134/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-googleapis-firestore-mcp https://firestore.googleapis.com/mcp
```

### Codex

```toml
[mcp_servers.com-googleapis-firestore-mcp]
url = "https://firestore.googleapis.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-googleapis-firestore-mcp": {
      "type": "remote",
      "url": "https://firestore.googleapis.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-googleapis-firestore-mcp --url https://firestore.googleapis.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-googleapis-firestore-mcp:
    url: "https://firestore.googleapis.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-googleapis-firestore-mcp": {
      "type": "http",
      "url": "https://firestore.googleapis.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 59, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 60, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 58, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 58)

First indexed and scored.

## MCP tools (15)

### `get_document` (~165 tokens)

Get a document from a Firestore database.

Input parameters:

- `mask`: The fields to return. If not set, returns all fields. If the document has a field that is not present in this mask, that field will not be returned in the response.
- `name` (string, required): Required. The resource name of the Document to get. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
- `readTime` (string): Reads the version of the document at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minu…
- `transaction` (string): Reads the document in a transaction.

Output parameters:

- `createTime` (string): Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `…
- `fields` (object): The document's fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts.…
- `name` (string): The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
- `updateTime` (string): Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared t…

### `add_document` (~189 tokens)

Create a document from a Firestore database.

Input parameters:

- `collectionId` (string, required): Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`.
- `document` (required): Required. The document to create. `name` must not be set.
- `documentId` (string): The client-assigned document ID to use for this document. Optional. If not specified, an ID will be assigned by the service.
- `mask`: The fields to return. If not set, returns all fields. If the document has a field that is not present in this mask, that field will not be returned in the response.
- `parent` (string, required): Required. The parent resource. For example: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}`

Output parameters:

- `createTime` (string): Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `…
- `fields` (object): The document's fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts.…
- `name` (string): The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
- `updateTime` (string): Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared t…

### `update_document` (~175 tokens)

Update a document from a Firestore database.

Input parameters:

- `currentDocument`: An optional precondition on the document. The request will fail if this is set and not met by the target document.
- `document` (required): Required. The updated document. Creates the document if it does not already exist.
- `mask`: The fields to return. If not set, returns all fields. If the document has a field that is not present in this mask, that field will not be returned in the response.
- `updateMask`: The fields to update. None of the field paths in the mask may contain a reserved name. If the document exists on the server and has fields not referenced in the mask, they are left unchanged. Fields…

Output parameters:

- `createTime` (string): Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `…
- `fields` (object): The document's fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts.…
- `name` (string): The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
- `updateTime` (string): Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared t…

### `delete_document` (~85 tokens)

Delete a document from a Firestore database.

Input parameters:

- `currentDocument`: An optional precondition on the document. The request will fail if this is set and not met by the target document.
- `name` (string, required): Required. The resource name of the Document to delete. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.

### `list_documents` (~581 tokens)

List documents from a Firestore database.

Input parameters:

- `collectionId` (string): Optional. The collection ID, relative to `parent`, to list. For example: `chatrooms` or `messages`. This is optional, and when not provided, Firestore will list documents from all collections under t…
- `mask`: Optional. The fields to return. If not set, returns all fields. If a document has a field that is not present in this mask, that field will not be returned in the response.
- `orderBy` (string): Optional. The optional ordering of the documents to return. For example: `priority desc, __name__ desc`. This mirrors the `ORDER BY` used in Firestore queries but in a string representation. When abs…
- `pageSize` (integer): Optional. The maximum number of documents to return in a single response. Firestore may return fewer than this value.
- `pageToken` (string): Optional. A page token, received from a previous `ListDocuments` response. Provide this to retrieve the subsequent page. When paginating, all other parameters (with the exception of `page_size`) must…
- `parent` (string, required): Required. The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example:…
- `readTime` (string): Perform the read at the provided time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp w…
- `recursive` (boolean): Optional. If the list should recursively include all documents nested under the parent at any level. If the request specifies a `collection_id`, then the list will include all nested documents in the…
- `showMissing` (boolean): If the list should show missing documents. A document is missing if it does not exist, but there are sub-documents nested underneath it. When true, such missing documents will be returned with a key…
- `transaction` (string): Perform the read as part of an already active transaction.

Output parameters:

- `documents` (array): The Documents found.
- `nextPageToken` (string): A token to retrieve the next page of documents. If this field is omitted, there are no subsequent pages.

### `list_collections` (~183 tokens)

List all the collection IDs underneath a document.

Input parameters:

- `pageSize` (integer): The maximum number of results to return.
- `pageToken` (string): A page token. Must be a value from ListCollectionIdsResponse.
- `parent` (string, required): Required. The parent document. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents/chatrooms/my…
- `readTime` (string): Reads documents as they were at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute ti…

Output parameters:

- `collectionIds` (array): The collection ids.
- `nextPageToken` (string): A page token that may be used to continue the list.

### `create_database` (~159 tokens)

Create a Firestore database.

Input parameters:

- `database` (required): Required. The Database to create.
- `databaseId` (string, required): Required. The ID to use for the database, which will become the final component of the database's resource name. This value should be 4-63 characters. Valid characters are /a-z-/ with first character…
- `parent` (string, required): Required. A parent name of the form `projects/{project_id}`

Output parameters:

- `done` (boolean): If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
- `error`: The error result of the operation in case of failure or cancellation.
- `metadata` (object): Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method…
- `name` (string): The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u…
- `response` (object): The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get…

### `get_database` (~39 tokens)

Get a Firestore database.

Input parameters:

- `name` (string, required): Required. A name of the form `projects/{project_id}/databases/{database_id}`

Output parameters:

- `appEngineIntegrationMode` (string): The App Engine integration mode to use for this database.
- `cmekConfig`: Optional. Presence indicates CMEK is enabled for this database.
- `concurrencyMode` (string): The default concurrency control mode to use for this database. If unspecified in a CreateDatabase request, this will default based on the database edition: Optimistic for Enterprise and Pessimistic f…
- `createTime` (string): Output only. The timestamp at which this database was created. Databases created before 2016 do not populate create_time.
- `databaseEdition` (string): Immutable. The edition of the database.
- `deleteProtectionState` (string): State of delete protection for the database.
- `deleteTime` (string): Output only. The timestamp at which this database was deleted. Only set if the database has been deleted.
- `earliestVersionTime` (string): Output only. The earliest timestamp at which older versions of the data can be read from the database. See [version_retention_period] above; this field is populated with `now - version_retention_peri…
- `etag` (string): This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.
- `firestoreDataAccessMode` (string): Optional. The Firestore API data access mode to use for this database. If not set on write: - the default value is DATA_ACCESS_MODE_DISABLED for Enterprise Edition. - the default value is DATA_ACCESS…
- `freeTier` (boolean): Output only. Background: Free tier is the ability of a Firestore database to use a small amount of resources every day without being charged. Once usage exceeds the free tier limit further usage is c…
- `keyPrefix` (string): Output only. The key_prefix for this database. This key_prefix is used, in combination with the project ID ("~") to construct the application ID that is returned from the Cloud Datastore APIs in Goog…
- `locationId` (string): Required. The location of the database. Available locations are listed at https://cloud.google.com/firestore/docs/locations.
- `mongodbCompatibleDataAccessMode` (string): Optional. The MongoDB compatible API data access mode to use for this database. If not set on write, the default value is DATA_ACCESS_MODE_ENABLED for Enterprise Edition. The value is always DATA_ACC…
- `name` (string): The resource name of the Database. Format: `projects/{project}/databases/{database}`
- `pointInTimeRecoveryEnablement` (string): Whether to enable the PITR feature on this database.
- `previousId` (string): Output only. The database resource's prior database ID. This field is only populated for deleted databases.
- `realtimeUpdatesMode` (string): Immutable. The default Realtime Updates mode to use for this database.
- `sourceInfo`: Output only. Information about the provenance of this database.
- `tags` (object): Optional. Input only. Immutable. Tag keys/values directly bound to this resource. For example: "123/environment": "production", "123/costCenter": "marketing"
- `type` (string): Required. The type of the database. See https://cloud.google.com/datastore/docs/firestore-or-datastore for information about how to choose.
- `uid` (string): Output only. The system-generated UUID4 for this Database.
- `updateTime` (string): Output only. The timestamp at which this database was most recently updated. Note this only includes updates to the database resource and not data contained by the database.
- `versionRetentionPeriod` (string): Output only. The period during which past versions of data are retained in the database. Any read or query can specify a `read_time` within this window, and will read the state of the database at tha…

### `list_databases` (~49 tokens)

List Firestore databases.

Input parameters:

- `parent` (string, required): Required. A parent name of the form `projects/{project_id}`
- `showDeleted` (boolean): If true, also returns deleted resources.

Output parameters:

- `databases` (array): The databases in the project.
- `unreachable` (array): In the event that data about individual databases cannot be listed they will be recorded here. An example entry might be: projects/some_project/locations/some_location This can happen if the Cloud Re…

### `update_database` (~40 tokens)

Update a Firestore database.

Input parameters:

- `database` (required): Required. The database to update.
- `updateMask` (string): The list of fields to be updated.

Output parameters:

- `done` (boolean): If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
- `error`: The error result of the operation in case of failure or cancellation.
- `metadata` (object): Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method…
- `name` (string): The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u…
- `response` (object): The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get…

### `delete_database` (~87 tokens)

Delete a Firestore database.

Input parameters:

- `etag` (string): The current etag of the Database. If an etag is provided and does not match the current etag of the database, deletion will be blocked and a FAILED_PRECONDITION error will be returned.
- `name` (string, required): Required. A name of the form `projects/{project_id}/databases/{database_id}`

Output parameters:

- `done` (boolean): If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
- `error`: The error result of the operation in case of failure or cancellation.
- `metadata` (object): Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method…
- `name` (string): The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u…
- `response` (object): The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get…

### `create_index` (~57 tokens)

Create a composite index.

Input parameters:

- `index` (required): Required. The composite index to create.
- `parent` (string, required): Required. A parent name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}`

Output parameters:

- `done` (boolean): If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
- `error`: The error result of the operation in case of failure or cancellation.
- `metadata` (object): Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method…
- `name` (string): The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u…
- `response` (object): The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get…

### `get_index` (~50 tokens)

Get a Firestore index.

Input parameters:

- `name` (string, required): Required. A name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`

Output parameters:

- `apiScope` (string): The API scope supported by this index.
- `density` (string): Immutable. The density configuration of the index.
- `fields` (array): The fields supported by this index. For composite indexes, this requires a minimum of 2 and a maximum of 100 fields. The last field entry is always for the field path `__name__`. If, on creation, `__…
- `multikey` (boolean): Optional. Whether the index is multikey. By default, the index is not multikey. For non-multikey indexes, none of the paths in the index definition reach or traverse an array, except via an explicit…
- `name` (string): Output only. A server defined name for this index. The form of this name for composite indexes will be: `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{compos…
- `queryScope` (string): Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection ID. Indexes with…
- `searchIndexOptions`: Optional. Options for search indexes that are at the index definition level. This field is only currently supported for indexes with MONGODB_COMPATIBLE_API ApiScope.
- `shardCount` (integer): Optional. The number of shards for the index.
- `state` (string): Output only. The serving state of the index.
- `unique` (boolean): Optional. Whether it is an unique index. Unique index ensures all values for the indexed field(s) are unique across documents.

### `list_indexes` (~108 tokens)

List Firestore indexes.

Input parameters:

- `filter` (string): The filter to apply to list results.
- `pageSize` (integer): The number of results to return.
- `pageToken` (string): A page token, returned from a previous call to FirestoreAdmin.ListIndexes, that may be used to get the next page of results.
- `parent` (string, required): Required. A parent name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}`

Output parameters:

- `indexes` (array): The requested indexes.
- `nextPageToken` (string): A page token that may be used to request another page of results. If blank, this is the last page.

### `delete_index` (~50 tokens)

Delete a Firestore index.

Input parameters:

- `name` (string, required): Required. A name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-googleapis-firestore-mcp/firestore#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 60
- 2026-08-01: 59
- 2026-07-31: 59
- 2026-07-30: 60
- 2026-07-29: 60
- 2026-07-28: 59
- 2026-07-27: 58
- 2026-07-26: 58

## Links

- Remote endpoint: https://firestore.googleapis.com/mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-googleapis-firestore-mcp/firestore/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-googleapis-firestore-mcp/firestore/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-googleapis-firestore-mcp/firestore
