Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
MCP server for Firebase — Firestore, Storage, Auth, and Cloud Logging, with schema validation.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"firebase": {
"command": "npx",
"args": [
"-y",
"@dasasian/firebase-mcp-server"
]
}
}
}在终端中运行这条命令
claude mcp add firebase -- npx -y @dasasian/firebase-mcp-server粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"firebase": {
"command": "npx",
"args": [
"-y",
"@dasasian/firebase-mcp-server"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"firebase": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dasasian/firebase-mcp-server"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 dasasian 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.1.0)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, MCP Server Autocad Lisp Helper
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
High-precision static analysis and debug server for AutoCAD AutoLISP (.lsp) files.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
General-purpose Model Context Protocol (MCP) server for Firebase (Firestore, Storage, Auth, Functions Logging) with schema-driven validation and context-efficient tools.
@firebase:firestore://users/user-123firestore.rules conventionfirestore.indexes.jsonAdd it to your MCP client (e.g. Claude Code) — runs via npx, no global install needed:
{
"mcpServers": { "firebase": { "command": "npx", "args": ["-y", "@dasasian/firebase-mcp-server", "start", "./firestore-schemas.json"] } } }
start takes an optional schema config path (default ./firestore-schemas.json) and an optional indexes path (default ./firestore.indexes.json) — see Schema Format. Firebase auth uses Application Default Credentials.
Or install the CLI globally:
npm install -g @dasasian/firebase-mcp-server
firebase-mcp start ./firestore-schemas.json
npm install
npm run build npm run cli -- start --config ./examples/basic/firestore-schemas.json
Reference Firestore documents directly in Claude Code:
What's the email for @firebase:firestore://users/user-123?
Show me all posts: @firebase:firestore://posts/*
When you type @firebase in Claude Code:
Shows schema-based collections (with validation):
Plus auto-discovered collections (no schema):
# Enable/disable auto-discovery (default: true)
export FIRESTORE_AUTO_DISCOVER=true
export FIRESTORE_DISCOVERY_CACHE_TTL=300
Auto-discovery cost: ~$0.0003/day (negligible)
The server ships 33 tools in four groups. Every tool declares MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) so a client can auto-approve reads and ask before writes.
All 33 tool definitions cost roughly 12k tokens of context on every session. If you only need part of the surface, narrow it:
# Only Firestore (12 tools, ~4.3k tokens)
firebase-mcp start --tools firestore
firebase-mcp start --tools firestore,auth
Or set it in your MCP client config:
export FIREBASE_MCP_TOOLS=firestore,storage
The --tools flag wins over the environment variable. Leaving both unset loads everything, so upgrading never hides a tool you were already using. Calling a tool from a group you switched off returns an error naming the group to add.
| Group | Tools | ~Tokens |
|---|---|---|
firestore | 12 | 4,341 |
storage | 14 | 4,152 |
auth | 6 | 2,075 |
logs | 1 | 1,817 |
| *all (default)* | *33* | *12,387* |
--tools firestorefirestore_show_collections — Show collections *(read)*firestore_read — Read document *(read)*firestore_export — Export collection *(read)*firestore_validate — Validate against schema *(read)*firestore_query_select — Query documents *(read)*firestore_query_collection_group — Query collection group *(read)*firestore_count — Count documents *(read)*firestore_sum — Sum a field *(read)*firestore_stats — Collection statistics *(read)*firestore_import — Import document *(write, destructive)*firestore_update — Update documents *(write, destructive)*firestore_delete — Delete documents *(write, destructive)*--tools authfirebase_auth_list_users — List users *(read)*firebase_auth_get_user — Get user *(read)*firebase_auth_create_user — Create user *(write)*firebase_auth_update_user — Update user *(write, destructive)*firebase_auth_delete_user — Delete user *(write, destructive)*firebase_auth_revoke_sessions — Revoke sessions *(write, destructive)*--tools storagefirebase_storage_list_buckets — List buckets *(read)*firebase_storage_ls — List files *(read)*firebase_storage_stat — File metadata *(read)*firebase_storage_find — Find files *(read)*firebase_storage_get_url — Get file URL *(read)*firebase_storage_get_access — Get file access *(read)*firebase_storage_read — Download file to a local temp path *(write)*firebase_storage_upload — Upload file *(write, destructive)*firebase_storage_rm — Delete file *(write, destructive)*firebase_storage_cp — Copy file *(write, destructive)*firebase_storage_mv — Move file *(write, destructive)*firebase_storage_sync — Sync bucket to local *(write, destructive)*firebase_storage_push — Push local to bucket *(write, destructive)*firebase_storage_set_access — Set file access *(write, destructive)*--tools logsfirebase_functions_logs — Query Cloud Functions logs with SQL-like syntax *(write)*firebase_storage_read and firebase_functions_logs are not marked read-only because they write: the first downloads to a local temp file, the second updates its auto-discovered logging schema on disk.
Reading function logs needs an extra IAM role. The Firebase Admin SDK service
account has no Cloud Logging access by default, so
firebase_functions_logsfails
with
PERMISSION_DENIED: Permission denied for all log viewseven when every other
tool works. Grant the role and allow a few minutes for it to take effect:
`bash
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:firebase-adminsdk-xxxxx@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/logging.viewAccessor"
`
roles/logging.vieweralone may not be enough — the error names *log views*, and the
logging.views.accesspermission is inviewAccessor.
Example queries:
// Discover what functions exist
{"distinct": "functionName"}
// Show recent errors {"where": [{"field": "severity", "operator": "==", "value": "ERROR"}], "limit": 20}
// Top error patterns with counts (use "message" — structured logs have no textPayload) {"groupBy": ["message"], "aggregates": [{"field": "*", "operation": "count", "alias": "count"}], "where": [{"field": "severity", "operator": "==", "value": "ERROR"}], "orderBy": [{"field": "count", "direction": "desc"}], "limit": 10}
// Filter by custom labels (e.g., user, environment) {"where": [{"field": "labels.user_id", "operator": "==", "value": "123"}]}
Schemas follow Firebase's path-based convention:
{
"schemas": { "/organizations/{organizationId}": { "description": "Organization documents", "schema": { "type": "object", "required": ["id", "name"], "properties": { "id": { "type": "string" }, "name": { "type": "string" } } } }, "/organizations/{organizationId}/products/{productId}": { "description": "Product catalog", "schema": { "type": "object", "properties": { "name": { "type": "string" }, "category": { "type": "string", "x-status": "legacy", "x-replacedBy": "productType" }, "productType": { "type": "string", "x-status": "experimental" } } }, "timestampFields": ["createdAt", "updatedAt"] } } }
@firebase:firestore:// referencesMIT