学生管理系统MCP服务器

一个基于Django REST API和MCP协议的学生管理系统,提供学生、教授、课程和注册的CRUD操作,并支持与大型语言模型(如ChatGPT和Claude)的交互。

  • by BrauoOue
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 BrauoOue/mcp-server

使用说明

学生管理系统 - MCP服务器

这个项目为学生管理系统实现了一个模型上下文协议(MCP)服务器。MCP服务器提供了工具,使得像ChatGPT和Claude这样的大型语言模型(LLMs)能够通过标准化接口与任何系统进行交互。

项目概述

后端系统

该项目包含一个Django REST API后端,负责管理:

  • 学生包含个人信息、学号、学习年份和入学日期的学生记录
  • 教授们不同类型的教职员工(教授/助教)及其联系方式
  • 课程带有课程描述和学分值的学术课程
  • 课程实例特定学年中具体课程的实例,包括指定的教授和助教
  • 报名人数带有成绩追踪功能的课程实例中的学生注册

后端为所有实体提供了全面的CRUD(创建、读取、更新、删除)操作,并包含高级功能,如:

  • 学生注册/退学管理
  • 成绩评定及更新
  • 复杂查询(例如,查找某学生的所有注册信息)
  • 数据完整性保障下的级联删除处理

MCP服务器

MCP服务器作为大型语言模型(LLMs)和Django后端之间的桥梁,提供了超过25种工具,这些工具被组织成不同的类别:

  • 列表操作检索所有学生、教授、课程、课程实例
  • 详细操作通过ID、索引、电子邮件或名称获取特定记录
  • 创建操作添加新学生、教授、课程和课程实例
  • 更新操作注册/取消注册学生,更新成绩,编辑课程信息
  • 删除操作删除记录时进行适当的级联处理
  • 系统操作检查后端连接和系统状态

安装与设置

选项1:Docker(推荐)

这是运行整个系统并确保所有依赖项都正确配置的最简单方法。

先决条件

  • Docker(注:Docker是一个开源的应用容器引擎,用于开发、交付和运行应用程序。)
  • Docker Compose

步骤

  1. 克隆仓库:
git clone https://github.com/BrauoOue/mcp-server.git
cd mcp-server
  1. 构建并启动服务:
docker-compose up --build

这将开始:

  • Django 后端运行在 8000 端口
  • 端口8765上的MCP服务器

这些服务将在Docker网络内自动相互连接。

管理Docker服务

# Stop services
docker-compose down

# View logs
docker-compose logs django-backend
docker-compose logs mcp-server

# Restart specific service
docker-compose restart mcp-server

选项2:本地开发

先决条件

  • Python 3.11及以上版本
  • pip(在计算机领域,通常指Python的包管理工具)

后端设置

  1. 导航至后端目录:
cd backend
  1. 安装依赖项:
pip install -r requirements.txt
  1. 运行迁移:
python manage.py migrate
  1. 启动Django服务器:
python manage.py runserver

后端将在 http://localhost:8000

MCP服务器设置

  1. 打开一个新的终端,并导航到MCP目录:
cd mcp
  1. 安装依赖项:
pip install -r requirements.txt
  1. 启动MCP服务器:
# For local development (localhost only)
python mcp_server.py

MCP服务器将在 http://localhost:8765

暴露MCP服务器

要使用MCP服务器与ChatGPT、Claude或其他外部工具配合,你需要让该服务器能够通过互联网访问。最简单的方法是使用ngrok。

使用ngrok

  1. 从(指定来源)安装 ngrok https://ngrok.com/ 的中文翻译可以是“https://ngrok.com/(注:网址本身在中文中通常保持不变,不进行翻译,但这里为了符合问题要求,可说明其含义为‘Ngrok 官网’或直接保留原样,因为网址是国际通用的)。不过,如果要更自然地表达,可以说“这是 Ngrok 的官方网站”

  2. 公开MCP服务器:

ngrok http 8765
  1. ngrok 将提供一个类似这样的公共 URL: https://abc123.ngrok.io您的MCP终端地址将是:
https://abc123.ngrok.io/mcp

当你想使用外部工具连接MCP服务器时,请保持ngrok运行。

ChatGPT集成

先决条件

  • ChatGPT Plus或Pro订阅
  • 开发者模式访问

安装说明

1. 启用开发者模式

  1. 打开ChatGPT并前往 设置 → 连接器
  2. 在……之下 高级切换 开发者模式 使(某物)能够启用/使(某功能)可用

2. 创建连接器

  1. 在 设置 → 连接器,点击 创造
  2. 请输入以下信息:
    • 名字学生管理系统
    • 服务器URL: https://your-ngrok-url.ngrok.io/mcp/
    • 检查 我相信这个供应商
    • 如需添加认证(本项目无需认证)
  3. 点击 创建

3. 在聊天中使用

  1. 在ChatGPT中开始一个新聊天
  2. 点击 加号 按钮 → 更多 → 开发者模式
  3. 启用您的MCP服务器连接器(对于每次新聊天都必须执行此操作)
  4. MCP工具现已可用

示例用法

一旦连接成功,您就可以使用自然语言与学生管理系统进行交互:

学生管理
"List all students in the system"
"Get details for student with index 20240001"
"Create a new student named John Doe with email john.doe@university.edu and index 20240015"
"Delete the student with index 20240001"
课程管理
"Show me all available courses"
"Create a new course called 'Advanced Algorithms' with 8 credits"
"Search for courses containing 'database' in the name"
"Update the course Advanced Algorithms to have 6 credits instead of 8"
管理学教授
"List all professors"
"Find the professor with email jane.smith@university.edu"
"Add a new assistant professor named Dr. Alice Johnson"
"Delete professor with email jane.smith@university.edu"
课程实例管理
"Show all course instances for the current academic year"
"Create a course instance for 'Data Structures' in 2024/2025 with professor with email jane.smith@university.edu and assistant with email nicole.smith@university.edu"
"Get details for the 'Machine Learning' course in academic year 2024/2025"
招生管理
"Enroll student with index 256001 in course Advance Programming 2025/2026"
"Show all enrollments for student with index 256001"
"Update the grade for student with index 256001 in course Advance Programming 2025/2026 to 8.5"
"Unenroll student with index 256001 from course Advance Programming 2025/2026"
系统监控
"Check the system status"

真实的ChatGPT对话示例

要全面了解该系统在实际中的应用,请参阅这段真实的ChatGPT对话,其中大量使用了MCP服务器: 实时ChatGPT演示

这段对话展示了实际使用模式,包括:

  • 系统状态检查及故障排除
  • 创建和管理学生、教授及课程
  • 为课程实例设定合适的学年
  • 学生注册工作流程
  • 成绩管理与更新
  • 结合多个操作的复杂查询
  • 错误处理和验证场景

该演示展示了您如何使用对话语言与系统进行自然交互,以及MCP服务器如何处理各种边缘情况并提供有用的反馈。

API终端点

Django 后端提供了以下主要的端点:

学生

  • GET /api/students/ - 列出所有学生
  • POST /api/students/create/ - 创建新学生
  • GET /api/students/{index}/ - 通过索引获取学生
  • GET /api/students/{index}/enrollments/ - 获取学生注册信息
  • DELETE /api/students/{index}/delete/ - 删除学生

教授们

  • GET /api/professors/ - 列出所有教授
  • POST /api/professors/create/ - 创建新教授
  • GET /api/professors/email/{email}/ - 通过电子邮件联系教授
  • DELETE /api/professors/{id}/delete/ - 删除教授

课程

  • GET /api/courses/ - 列出所有课程
  • POST /api/courses/create/ - 创建新课程
  • GET /api/courses/name/{name}/ - 按名称搜索课程
  • PATCH /api/courses/{id}/edit/ - 更新课程
  • DELETE /api/courses/{id}/delete/ - 删除课程

课程实例

  • GET /api/course-instances/ - 列出所有课程实例
  • POST /api/course-instances/create/ - 创建新的课程实例
  • GET /api/course-instances/{course_name}/{academic_year}/ - 获取特定实例
  • DELETE /api/course-instances/{id}/delete/ - 删除课程实例

报名人数

  • GET /api/enrollments/ - 列出所有注册情况
  • POST /api/enrollments/enroll/ - 报名学生
  • DELETE /api/enrollments/unenroll/{student_id}/{course_instance_id}/ - 取消学生注册
  • PATCH /api/enrollments/grade/{student_id}/{course_instance_id}/ - 更新成绩

详细文档

如需全面的技术文档,请参阅 metadata/ 包含详细指南的文件夹:

  • API 端点文档提供所有Django REST API端点的完整规范,包括请求/响应示例、参数描述和错误代码
  • MCP 工具文档对所有可用的MCP工具进行详细解释,包括其参数、返回值以及使用示例。 这些Markdown文件提供了深入的技术参考资料,作为本README快速入门方法的补充。

故障排除

常见问题

ChatGPT无法访问MCP服务器:

  • 确保 ngrok 正在运行且 URL 正确
  • 验证连接器是否已在ChatGPT聊天会话中启用

Django 后端连接错误:

  • 确保Django服务器正在8000端口上运行
  • 检查迁移是否已应用
  • 对于Docker:验证容器之间可以通信(检查 docker-compose logs)

Docker中的权限错误:

  • 在Linux/Mac系统上,您可能需要调整文件权限
  • 试着跑起来 sudo docker-compose up --build

日志记录与调试

Docker 日志:

docker-compose logs django-backend
docker-compose logs mcp-server

检查MCP服务器状态: 访问 http://localhost:8765/mcp 在您的浏览器中(进行操作)以验证服务器是否正在运行。

测试Django后端: 参观 http://localhost:8000/admin 检查API是否在响应。

技术栈

  • 后端Django 5.1.6,Django REST Framework(Django REST 框架)
  • MCP 服务器FastMCP,Python 3.11
  • 数据库SQLite(开发版),可轻松配置以适应PostgreSQL/MySQL
  • 集装箱化Docker,Docker Compose
  • 建立人脉/网络拓展ngrok 用于外部暴露(或:外部访问)

项目创作者

这个项目由以下人员开发:

  • 维克托·科斯塔迪诺夫斯基 (音译) - 学生
  • 安德烈亚·斯特瓦诺斯卡 (安德烈亚-444) - 学生
  • 伊凡·基塔诺夫斯基 - 教师与导师

我们是北马其顿斯科普里FINKI/FSCE(计算机科学与工程学院)的学生和教师。这个项目既是一次学习实践,也是对现代软件开发实践的展示,包括REST API设计、容器化以及新兴技术如模型上下文协议(MCP)等。

贡献

该项目展示了MCP服务器的功能以及Django REST API的开发。欢迎根据以下功能进行扩展:

  • 身份验证和授权
  • 更复杂的查询和报告
  • 文件上传功能

许可证

此项目仅供教育和演示之用,按原样提供。