项目简介

该项目是GDG UTSC (多伦多大学士嘉堡分校Google开发者社区) 官方网站的后端管理服务,基于Model Context Protocol (MCP) 构建。它旨在以标准化的方式向大型语言模型 (LLM) 客户端提供上下文信息和功能,特别是针对网站的后台管理需求。通过一系列精心设计的工具,LLM客户端可以调用这些功能来管理用户权限、发布活动、管理项目和处理职位申请,从而实现智能化的运营和维护。

主要功能点

  • 用户权限管理: 提供授予/移除管理员和超级管理员权限、查询用户管理状态、批量执行权限操作、同步Firebase Auth Claims与Firestore用户角色、以及获取用户登录活动和整体统计信息的功能。
  • 活动管理: 允许获取单个或列表形式的活动信息、创建新活动、更新活动状态(如即将开始、进行中、已完成等),并能查询特定活动的注册列表。
  • 项目管理: 支持获取、列出、创建、更新和删除项目。此外,还可以为特定项目添加贡献者,便于项目团队协作管理。
  • 职位申请管理: 包含获取、列出、创建职位信息,更新职位状态(如草稿、活跃、非活跃),以及管理和查询职位申请。您可以获取所有申请、更新申请状态(如待处理、已接受、已拒绝),并获取单个申请的详细信息。
  • 数据持久化: 所有数据和权限管理都通过Firebase Firestore和Firebase Authentication进行持久化存储和安全控制。

安装步骤

在开始使用之前,请确保您已安装Node.js和npm。

  1. 克隆仓库:

    git clone https://github.com/GDSC-UTSC/gdg-website.git
    cd gdg-website
  2. 安装项目依赖: 运行以下脚本,它将安装项目所需的各种依赖,包括Firebase CLI工具。

    sh startup.sh

    此脚本主要用于安装整个Next.js应用的依赖并启动前端开发服务器。MCP服务器的依赖通常也包含在其中。

  3. 配置Firebase服务账户: MCP服务器需要连接到您的Firebase项目。您需要配置Firebase服务账户凭据作为环境变量。

    • 登录Firebase控制台,选择您的项目。
    • 导航到“项目设置” -> “服务账户”。
    • 点击“生成新的私钥”,下载JSON格式的服务账户密钥文件。
    • 将密钥文件中的'project_id'、'client_email'和'private_key'内容,分别设置到以下环境变量中:
      • 'FIREBASE_PROJECT_ID'
      • 'FIREBASE_CLIENT_EMAIL'
      • 'FIREBASE_PRIVATE_KEY' (请注意,私钥内容中的换行符'\n'在设置为环境变量时可能需要替换为字面量'\n',具体取决于您的操作系统和配置方式)
  4. 构建并启动MCP服务器:

    • 进入MCP服务器的代码目录:
      cd mcp
    • (可选)如果上一步的'startup.sh'没有安装'mcp'目录下的特定依赖,请在此运行:
      npm install
    • 编译TypeScript代码为JavaScript:
      npx tsc
      这会在'mcp'目录下生成一个'dist'目录,其中包含编译后的JavaScript文件,例如'index.js'。
    • 启动MCP服务器:
      node dist/index.js
      服务器将在标准输入/输出 (Stdio) 上监听JSON-RPC请求。

服务器配置 (MCP客户端使用)

当您在MCP客户端(如VS Code扩展或其他LLM应用)中配置此MCP服务器时,需要提供以下JSON格式的配置信息。请务必将'args'字段中的路径替换为您的'gdg-website'仓库在本地文件系统中的实际绝对路径。

{
  "name": "gdg-website",
  "command": "node",
  "args": [
    "/[您的仓库根目录]/gdg-website/mcp/dist/index.js"
  ],
  "description": "连接到GDG UTSC网站的MCP管理后端,提供用户、活动、项目和职位管理能力。",
  "serverCapabilities": {
    "resources": {},
    "tools": {
      "admin": [
        "grant_admin_role",
        "remove_admin_role",
        "list_all_admins",
        "check_admin_status",
        "bulk_admin_operation",
        "sync_admin_claims",
        "get_recent_logins",
        "get_user_login_activity",
        "get_login_statistics"
      ],
      "events": [
        "get_event",
        "list_events",
        "create_event",
        "update_event_status",
        "get_event_registrations"
      ],
      "positions": [
        "get_position",
        "list_positions",
        "create_position",
        "update_position_status",
        "get_applications_by_position",
        "update_application_status",
        "get_application"
      ],
      "projects": [
        "get_project",
        "list_projects",
        "create_project",
        "update_project",
        "delete_project",
        "add_contributor_to_project"
      ],
      "users": [
        "get_user",
        "list_users_by_role",
        "list_all_users",
        "update_user_role",
        "create_user_profile",
        "get_user_associations",
        "add_user_association"
      ]
    }
  }
}
  • 'name': 服务器的唯一标识名称,在此为"gdg-website"。
  • 'command': 启动MCP服务器所使用的命令,这里是'node'。
  • 'args': 传递给'command'的参数,即MCP服务器的入口文件路径。请务必将'/[您的仓库根目录]/gdg-website'替换为您的本地文件系统中仓库的实际绝对路径。
  • 'description': 对MCP服务器功能的简要描述。
  • 'serverCapabilities': 服务器向客户端声明的能力清单。'tools'字段列出了服务器注册的所有工具及其分类。

基本使用方法

当MCP服务器成功启动并被MCP客户端正确连接后,LLM客户端将能够发现并调用服务器上注册的各种工具。例如:

  1. 管理用户权限: LLM客户端可以调用'admin.grant_admin_role'工具,并提供一个用户邮箱和角色("admin"或"superadmin")作为参数,来授予用户管理员权限。
  2. 发布新活动: LLM客户端可以调用'events.create_event'工具,并提供活动的标题、描述、日期等信息来创建一个新的活动。
  3. 查询项目列表: LLM客户端可以调用'projects.list_projects'工具,并可选择提供'language'或'limit'参数来筛选和限制返回的项目列表。

LLM客户端会根据这些工具的定义,生成相应的JSON-RPC请求发送给MCP服务器,服务器执行请求并返回结果。

信息

分类

网页与API