Firebase模型上下文协议服务器

一个实现Firebase模型上下文协议(MCP)的Django应用,使AI代理能够通过标准化协议与Firebase服务交互。

  • by Highpolar-Softwares
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Highpolar-Softwares/django-firebase-mcp

使用说明

Django Firebase MCP

一个全面的Django应用程序,实现了Firebase模型上下文协议(MCP)服务器,使AI代理能够通过标准化协议与Firebase服务进行交互。

🚀 快速开始

使用独立的Firebase代理进行测试,在5分钟内即可启动并运行。

先决条件

  • Python 3.11+
  • 带有Admin SDK的Firebase项目
  • Git(可选)
  • Redis(可选,用于持久状态管理)

1.克隆和设置

git clone https://github.com/your-repo/django-firebase-mcp.git
cd django-firebase-mcp

2.安装依赖项

pip install -r requirements.txt

3.Firebase设置

获取Firebase凭据

  1. 首选 Firebase控制台
  2. 选择您的项目(或创建一个新项目)
  3. 引导到 项目设置 → 服务帐户
  4. 点击 “生成新私钥”
  5. 下载JSON文件并将其另存为 credentials.json 在项目根中

启用Firebase服务

确保在Firebase项目中启用了这些服务:

  • 认证 (用于用户管理)
  • Firestore数据库 (用于文件存储)
  • 云存储 (用于文件上传)

4.环境配置

创建一个 .env 项目根目录中的文件:

# Firebase Configuration
SERVICE_ACCOUNT_KEY_PATH=credentials.json
FIREBASE_STORAGE_BUCKET=your-project-id.appspot.com

# MCP Configuration
MCP_TRANSPORT=http
MCP_HOST=127.0.0.1
MCP_PORT=8001

# Django Settings
DEBUG=True
SECRET_KEY=your-secret-key-here

⚠️ 重要提示: 替换 your-project-id 使用您的实际Firebase项目ID。

5.国家管理机构

Firebase MCP代理使用状态管理来实现会话持久性。选择一个选项:

选项A:Redis(推荐用于生产环境)

在端口6379上安装并运行Redis:

# Install Redis using Chocolatey
choco install redis-64

# Or download from: https://github.com/microsoftarchive/redis/releases
# Then run Redis server
redis-server

添加到您的 .env 文件:

# Redis Configuration
REDIS_URL=redis://localhost:6379
USE_REDIS=true

选项B:InMemorySaver(快速测试)

对于没有Redis的快速测试,代理将自动使用InMemorySaver。无需额外设置。

添加到您的 .env 文件:

# Memory-based state (no persistence)
USE_REDIS=false

注: InMemorySaver不会在重启之间持久化对话,而Redis会在会话之间保持状态。

6.使用独立代理进行快速测试

立即使用独立的Firebase代理测试您的设置:

# Run the standalone agent
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

7.完整的Django设置(可选)

对于完整的Django集成:

# Apply migrations
python manage.py migrate

# Create superuser (optional)
python manage.py createsuperuser

# Run Django development server
python manage.py runserver 8001

MCP服务器将在以下地点提供: http://127.0.0.1:8001/mcp/

🛠️ 管理命令

核心命令

# Run standalone Firebase agent (quick testing)
python firebase_admin_mcp/standalone_firebase_agent.py

# Run MCP server via Django
python manage.py runserver 8001

# Run MCP server in stdio mode (for MCP clients)
python manage.py run_mcp --transport stdio

# Run MCP server in HTTP mode
python manage.py run_mcp --transport http --host 127.0.0.1 --port 8001

# Run standalone agent via Django management command
python manage.py run_standalone_agent

测试命令

# Test Firebase connectivity
python firebase_admin_mcp/tests/test_firebase_connection.py

# Test MCP server completeness
python firebase_admin_mcp/tests/test_mcp_complete.py

# Demo Firebase agent
python firebase_admin_mcp/tests/demo_firebase_agent.py

# Demo standalone agent
python firebase_admin_mcp/demo_standalone_agent.py

🔧 可用工具

MCP服务器提供 14个Firebase工具 分为三类:

🔐 身份验证(4个工具)

  • firebase_verify_token -验证Firebase ID令牌
  • firebase_create_custom_token -创建自定义身份验证令牌
  • firebase_get_user -通过UID获取用户信息
  • firebase_delete_user -删除用户帐户

📚 Firestore数据库(6个工具)

  • firestore_list_collections -列出所有收藏
  • firestore_create_document -创建新文档
  • firestore_get_document -检索文档
  • firestore_update_document -更新文档
  • firestore_delete_document -删除文档
  • firestore_query_collection -使用筛选器进行查询

🗄️ 云存储(4个工具)

  • storage_list_files -列出具有筛选功能的文件
  • storage_upload_file -上传文件
  • storage_download_file -下载文件
  • storage_delete_file -删除文件

🧪 快速测试

测试服务器运行状况

curl http://127.0.0.1:8001/mcp/

测试Firebase工具

curl -X POST http://127.0.0.1:8001/mcp/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "firestore_list_collections",
      "arguments": {}
    },
    "id": 1
  }'

🤖 AI代理集成

LangChain示例

from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

# Import Firebase tools
from firebase_admin_mcp.tools.agents.firebase_mcp_client import ALL_FIREBASE_TOOLS

# Create agent with Firebase capabilities
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."
)

# Use the agent
response = agent.invoke({
    "messages": [{"role": "user", "content": "Show me all my Firestore collections"}]
})

📚 文档

该项目包括全面的文件:

  • FIREBASE_ADMI_MCP.md -完整的技术文档

    • API详细参考
    • 所有工具规格
    • 高级配置
    • 安全注意事项
    • 生产部署指南
  • STANDALONE_GENT.md -独立代理文档

    • 独立的Firebase代理
    • 完整的功能概述
    • 使用示例
    • 集成模式

🔧 故障排除

常见问题

问题: Default app does not exist 错误 解决方案: 验证 credentials.json 路径在 .env 文件

问题: 服务器无法启动 解决方案: 检查端口8001是否可用: netstat -an | findstr :8001

问题: Firebase连接失败 解决方案: 验证控制台中是否启用了Firebase服务

问题: 导入错误 解决方案: 确保安装了所有依赖项: pip install -r requirements.txt

问题: Redis连接失败 解决方案: 验证Redis是否正在运行: redis-cli ping (应返回“PONG”)

问题: 状态在会话之间不持久 解决方案: 检查Redis配置或从InMemorySaver切换到Redis

🎯 接下来是什么?

  1. 探索独立代理 -非常适合快速测试和演示
  2. 阅读完整文档 -有关完整详细信息,请参阅FIREBASE_ADMI_MCP.md
  3. 与您的AI代理集成 -在您的应用程序中使用MCP工具
  4. 根据您的需求进行定制 -通过额外的Firebase操作进行扩展

📝 项目结构

django-firebase-mcp/
├── README.md                          # This file
├── FIREBASE_ADMIN_MCP.md             # Complete documentation
├── STANDALONE_AGENT.md               # Standalone agent guide
├── requirements.txt                   # Python dependencies
├── credentials.json                   # Firebase credentials (you create this)
├── .env                              # Environment variables (you create this)
├── manage.py                         # Django management
├── firebase_admin_mcp/               # Main MCP app
│   ├── standalone_firebase_agent.py  # Standalone agent
│   ├── tools/                        # Firebase MCP tools
│   ├── management/commands/          # Django commands
│   └── tests/                        # Test suite
└── django_firebase_mcp/             # Django project settings

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 测试您的更改
  4. 提交拉取请求

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件。


🔥 准备好用Firebase为您的AI代理增压了吗?

从独立代理开始,然后浏览完整的文档以了解高级用法!