Django Firebase MCP 是一个全面的 Django 应用程序,它实现了 Firebase 模型上下文协议(MCP)服务器,使 AI 代理能够通过标准化协议与 Firebase 服务进行交互。
使用独立的 Firebase 代理进行测试,您可以在 5 分钟内完成部署并运行该项目。
git clone https://github.com/your-repo/django-firebase-mcp.git
cd django-firebase-mcp
pip install -r requirements.txt
credentials.json。确保您的 Firebase 项目中启用了以下服务:
在项目根目录下创建一个 .env 文件:
# Firebase 配置
SERVICE_ACCOUNT_KEY_PATH=credentials.json
FIREBASE_STORAGE_BUCKET=your-project-id.appspot.com
# MCP 配置
MCP_TRANSPORT=http
MCP_HOST=127.0.0.1
MCP_PORT=8001
# Django 设置
DEBUG=True
SECRET_KEY=your-secret-key-here
⚠️ 重要提示
请将
your-project-id替换为您实际的 Firebase 项目 ID。
Firebase MCP 代理使用状态管理来实现对话持久化。您可以选择以下其中一种方式:
在端口 6379 上安装并运行 Redis:
# 使用 Chocolatey 安装 Redis
choco install redis-64
# 或者从以下链接下载:https://github.com/microsoftarchive/redis/releases
# 然后运行 Redis 服务器
redis-server
在 .env 文件中添加以下内容:
# Redis 配置
REDIS_URL=redis://localhost:6379
USE_REDIS=true
如果您想在不使用 Redis 的情况下进行快速测试,代理将自动使用 InMemorySaver,无需额外设置。
在 .env 文件中添加以下内容:
# 基于内存的状态(无持久化)
USE_REDIS=false
⚠️ 重要提示
InMemorySaver 不会在重启之间保留对话,而 Redis 可以在会话之间维持状态。
使用独立的 Firebase 代理立即测试您的设置:
# 运行独立代理
python firebase_admin_mcp/standalone_firebase_agent.py
您应该会看到以下输出:
🔥 Firebase MCP Agent Ready!
Type 'help' for available commands, 'quit' to exit.
>
您可以尝试以下命令:
> List all Firebase collections
> Check Firebase health status
> help
> quit
若要进行完整的 Django 集成,请执行以下操作:
# 应用迁移
python manage.py migrate
# 创建超级用户(可选)
python manage.py createsuperuser
# 运行 Django 开发服务器
python manage.py runserver 8001
MCP 服务器将在以下地址可用:http://127.0.0.1:8001/mcp/
# 运行独立的 Firebase 代理(快速测试)
python firebase_admin_mcp/standalone_firebase_agent.py
# 通过 Django 运行 MCP 服务器
python manage.py runserver 8001
# 以标准输入输出模式运行 MCP 服务器(适用于 MCP 客户端)
python manage.py run_mcp --transport stdio
# 以 HTTP 模式运行 MCP 服务器
python manage.py run_mcp --transport http --host 127.0.0.1 --port 8001
# 通过 Django 管理命令运行独立代理
python manage.py run_standalone_agent
# 测试 Firebase 连接
python firebase_admin_mcp/tests/test_firebase_connection.py
# 测试 MCP 服务器完整性
python firebase_admin_mcp/tests/test_mcp_complete.py
# 演示 Firebase 代理
python firebase_admin_mcp/tests/demo_firebase_agent.py
# 演示独立代理
python firebase_admin_mcp/demo_standalone_agent.py
MCP 服务器提供了涵盖三个类别的 14 个 Firebase 工具:
firebase_verify_token - 验证 Firebase ID 令牌firebase_create_custom_token - 创建自定义身份验证令牌firebase_get_user - 根据用户 ID 获取用户信息firebase_delete_user - 删除用户账户firestore_list_collections - 列出所有集合firestore_create_document - 创建新文档firestore_get_document - 检索文档firestore_update_document - 更新文档firestore_delete_document - 删除文档firestore_query_collection - 使用过滤器进行查询storage_list_files - 带过滤功能的文件列表storage_upload_file - 上传文件storage_download_file - 下载文件storage_delete_file - 删除文件您可以使用以下代码示例将 Django Firebase MCP 集成到 LangChain 中:
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
# 导入 Firebase 工具
from firebase_admin_mcp.tools.agents.firebase_mcp_client import ALL_FIREBASE_TOOLS
# 创建具有 Firebase 功能的代理
model = ChatOpenAI(model="gpt-4")
agent = create_react_agent(
model=model,
tools=ALL_FIREBASE_TOOLS,
prompt="You are a Firebase assistant with full database and storage access."
)
# 使用代理
response = agent.invoke({
"messages": [{"role": "user", "content": "Show me all my Firestore collections"}]
})
本项目包含全面的文档:
| 问题 | 解决方案 |
|---|---|
Default app does not exist 错误 |
验证 .env 文件中 credentials.json 的路径 |
| 服务器无法启动 | 检查端口 8001 是否可用:`netstat -an |
| Firebase 连接失败 | 验证控制台中是否已启用 Firebase 服务 |
| 导入错误 | 确保所有依赖项已安装:pip install -r requirements.txt |
| Redis 连接失败 | 验证 Redis 是否正在运行:redis-cli ping(应返回 "PONG") |
| 会话之间状态未持久化 | 检查 Redis 配置,或从 InMemorySaver 切换到 Redis |
django-firebase-mcp/
├── README.md # 本文件
├── FIREBASE_ADMIN_MCP.md # 完整文档
├── STANDALONE_AGENT.md # 独立代理指南
├── requirements.txt # Python 依赖项
├── credentials.json # Firebase 凭证(需您创建)
├── .env # 环境变量(需您创建)
├── manage.py # Django 管理
├── firebase_admin_mcp/ # 主要的 MCP 应用
│ ├── standalone_firebase_agent.py # 独立代理
│ ├── tools/ # Firebase MCP 工具
│ ├── management/commands/ # Django 命令
│ └── tests/ # 测试套件
└── django_firebase_mcp/ # Django 项目设置
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
🔥 准备好使用 Firebase 为您的 AI 代理赋能了吗?
先从独立代理开始,然后阅读完整文档以了解高级用法!