
FireCMS Cloud
co.firecms由 firecms.co 發布官方發布者v3.5.2更新於 Nov 11, 2026
Manage FireCMS Cloud from an AI agent: Firestore data, collections, schemas and users.
概覽
透過 AI 助理管理 FireCMS Cloud:瀏覽與編輯 Firestore 文件、設計集合結構、設定專案並管理使用者。
- 可以做什麼
- 瀏覽與查詢 Firestore 資料:列出根集合與子集合、列出資料庫,查詢、讀取、計數、新增、更新與刪除文件,以及匯出集合資料或批次匯入 JSON 文件。
- 推斷與編輯集合結構:在不儲存的情況下預覽推斷結果,從現有資料推斷並儲存集合,建立、更新或刪除集合結構與個別屬性,並依提示詞用 AI 產生或修改結構。
- 設定專案:讀取並修改專案名稱、品牌配色、預設語系、文字搜尋與實體歷史記錄。
- 管理使用者:列出專案使用者與角色、邀請使用者、變更角色與移除使用者。
- 連接 Firebase 專案(僅本機伺服器):列出可存取的 Google Cloud 專案、檢查就緒狀態、啟用 API、建立 Firestore 資料庫、連接專案並套用安全規則。
- 以可讀資源形式提供專案的集合、使用者、結構與設定。
- 適用情境
- 適合讓助理直接在 FireCMS Cloud 專案上工作:檢視現有 Firestore 資料、將其轉為 CMS 集合、草擬或調整集合結構、編輯內容,或管理專案設定與使用者。本機版本適合從零完成新 Firebase 專案的連接設定。
- 執行需求
- 可使用 api.firecms.co 的託管端點並透過瀏覽器 OAuth 登入,或以 npx 執行本機 npm 套件,後者需要 Node.js 與瀏覽器中的 Google 登入。需要一個 FireCMS Cloud 專案,寫入操作要求 admin 角色;連接專案前須在 Firebase 主控台啟用 Firebase Authentication。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 FireCMS Cloud,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/co.firecms%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"firecms-cloud": {
"type": "http",
"url": "https://api.firecms.co/mcp"
}
}
}README
@firecms/mcp-server
MCP server for FireCMS Cloud. Lets AI assistants connect a Firebase project to FireCMS, infer collections from the data already in Firestore, and then manage the CMS — browse and edit data, shape collection schemas and properties, configure the project, and manage users.
Admin-only: All write operations require the authenticated user to have the
adminrole on the target project. Read operations are available to any authenticated project member. Onboarding tools run before a project exists, so they are gated by Google Cloud access instead.
The same server runs in two places:
- Hosted, at
https://api.firecms.co/mcp, for everyone. Clients sign in with OAuth in the browser; nothing to install. It holds no Google Cloud credentials, so connecting a new Firebase project is handed off to the web app. The FireCMS backend mounts it through the@firecms/mcp-server/hostedentry point. - Local, over stdio (
npx @firecms/mcp-server). It signs in with your Google account (firecms_login), so it can also enable APIs, create Firestore databases and connect projects end to end.
Hosted server
In Claude (claude.ai or Claude Desktop): Settings → Connectors → Add custom connector, and paste https://api.firecms.co/mcp.
In Claude Code:
Any other client that takes remote servers by URL:
Local server
Setup
Claude Desktop
Add to claude_desktop_config.json:
Or use npx (no build required):
Use firecms_login to sign in when prompted. Tokens are shared with the FireCMS CLI (~/.firecms/tokens.json).
Connecting an existing Firebase project
The typical first session. Everything here is driven by the Google account you logged in with.
Firebase Authentication must be enabled on the project before step 5 — it is the one prerequisite with no API, so turn it on in the Firebase console. Step 5 then adds FireCMS's access rule to the project's Firestore and Storage rules; without it the CMS reports "Missing Firestore Security Rules" and opens nothing, and no tool here would notice, because they all read through the backend's service account, which bypasses security rules.
Step 6 is where an existing project becomes a working CMS: FireCMS samples the documents at each root collection, infers the property types, and uses an LLM to pick display names, a singular name, an icon and a navigation group.
Building collections from existing data
preview_inferred_schema is the non-destructive option: it samples up to 200 documents, infers types, enums and validation locally, and hands back a draft you can edit and then persist with save_collection_schema. It also works for subcollections and any path the bulk tools skip.
infer_collections_from_data and setup_all_collections go through the backend, which adds the LLM pass and writes the result straight into the project. Both skip paths that already map to a collection, so they are safe to re-run as the database grows.
Tools
Auth
Onboarding
Projects & Root Collections
Project Configuration 🔒
Users 🔒
Collection Schemas 🔒
AI Schema Generation
Documents (Firestore CRUD)
Data Import & Export
🔒 = Admin-only operation · 💻 = local server only
Every tool declares a title and a readOnlyHint, plus a destructiveHint when it writes: false for tools that only add (create a document, invite a user), true for anything that can overwrite or delete.
Resources
Example Workflows
Bring an existing Firebase project into FireCMS
Create a collection from scratch
Shape a schema before committing to it
AI-assisted schema creation
Architecture
Sessions: local and hosted
Nothing reads credentials from process-wide state. Every API call goes through a FireCMSSession (session.ts) — the user's email, a Firebase ID token on firecms-backend, and a Google access token when there is one — passed to createFireCMSMcpServer():
- Local (
cli.ts):localSessionreads the CLI's tokens file and exchanges the Google ID token for a backend token (below). The login/logout tools are registered by the CLI only. - Hosted (
hosted.ts): the backend resolves each request's OAuth bearer token to a user and passes a session that mints that user's backend ID token. There is no Google token, so the Google Cloud tools are replaced by aconnect_project_to_firecmsthat links to the web app. Every request gets its own server and transport (stateless Streamable HTTP), so nothing of one person's session outlives their request.hosted.tsnever imports the CLI's login flow; a test walks its import graph to keep it that way.
Authentication
The FireCMS Cloud API expects two different tokens, and the server sends both — the same pair the web app sends:
firecms login only produces the Google credentials. The Google ID token is not a Firebase ID token — it is issued by accounts.google.com for the Google OAuth client, so verifyIdToken() rejects it. backend-auth.ts therefore exchanges it for a real firecms-backend token through Identity Toolkit signInWithIdp, which is the headless equivalent of the web app's signInWithPopup(auth, GoogleAuthProvider). The exchanged token is cached in memory until shortly before it expires.
Where collection configurations live
FireCMS Cloud reads collection configurations from the backend Firestore, at projects/{projectId}/collections/{collectionId} — see useFirestoreCollectionsConfigController in FireCMSCloudApp.tsx. That is not the client project's __FIRECMS/config/collections, which is the self-hosted layout and is never read by Cloud.
The backend exposes no REST endpoints for that store — the web app writes to it directly with the Firebase SDK — so backend-firestore.ts talks to the Firestore REST API with the exchanged Firebase token. The backend's security rules apply unchanged.
Document CRUD is different: it is proxied by the backend into the client's Firestore using the project's delegated service account.
Cache-aware collection discovery
The backend's firestore_root_collections endpoint caches its answer for 5 minutes per project, so it misses collections created since the last lookup — including every collection of a project connected moments ago. Discovery therefore goes through the uncached admin/collections/list endpoint, and setup_all_collections resolves the paths itself rather than delegating to initial_setup, which resolves them through that same cache.
infer_collections_from_data also refuses paths with no documents. The backend runs its LLM pass regardless, and with nothing to sample the model invents a schema from the path name alone — an empty articles path yields plausible title/slug/status/author fields that exist nowhere in the data.
stdout is reserved
On a stdio transport, stdout carries the JSON-RPC stream, so cli.ts routes every console channel to stderr before starting. Dependencies do log — @firecms/schema_inference logs while inferring properties — and a single stray console.log would corrupt the protocol stream.
Security
- Hosted authentication: OAuth 2.1 with PKCE against the FireCMS backend; the person approves each client in the web app. The backend stores tokens only as hashes, rotates refresh tokens, and never holds Google Cloud credentials
- Local authentication: Google OAuth via browser, same as
firecms loginCLI - Authorization: Write operations enforce admin role check per project
- Token storage:
~/.firecms/tokens.json(shared with CLI); the exchanged backend token is held in memory only and dropped on logout - Admin cache: Role checks are cached for 5 minutes per project
- Credential hygiene:
list_projectsstrips each project's service account from its output, so credentials are never serialised into the model's context
來源:packages/mcp_server/README.md,提交 74bd4a2
工具
0版本歷史
3- v3.5.2最新Nov 11, 2026
- v3.5.1Sep 30, 2026
- v3.5.0Sep 30, 2026
評分
已滿足適用檢查項的 75%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。