使用说明
学生管理系统 - MCP服务器
这个项目为学生管理系统实现了一个模型上下文协议(MCP)服务器。MCP服务器提供了工具,使得像ChatGPT和Claude这样的大型语言模型(LLMs)能够通过标准化接口与任何系统进行交互。
项目概述
后端系统
该项目包含一个Django REST API后端,负责管理:
- 学生包含个人信息、学号、学习年份和入学日期的学生记录
- 教授们不同类型的教职员工(教授/助教)及其联系方式
- 课程带有课程描述和学分值的学术课程
- 课程实例特定学年中具体课程的实例,包括指定的教授和助教
- 报名人数带有成绩追踪功能的课程实例中的学生注册
后端为所有实体提供了全面的CRUD(创建、读取、更新、删除)操作,并包含高级功能,如:
- 学生注册/退学管理
- 成绩评定及更新
- 复杂查询(例如,查找某学生的所有注册信息)
- 数据完整性保障下的级联删除处理
MCP服务器
MCP服务器作为大型语言模型(LLMs)和Django后端之间的桥梁,提供了超过25种工具,这些工具被组织成不同的类别:
- 列表操作检索所有学生、教授、课程、课程实例
- 详细操作通过ID、索引、电子邮件或名称获取特定记录
- 创建操作添加新学生、教授、课程和课程实例
- 更新操作注册/取消注册学生,更新成绩,编辑课程信息
- 删除操作删除记录时进行适当的级联处理
- 系统操作检查后端连接和系统状态
安装与设置
选项1:Docker(推荐)
这是运行整个系统并确保所有依赖项都正确配置的最简单方法。
先决条件
- Docker(注:Docker是一个开源的应用容器引擎,用于开发、交付和运行应用程序。)
- Docker Compose
步骤
- 克隆仓库:
git clone https://github.com/BrauoOue/mcp-server.git
cd mcp-server
- 构建并启动服务:
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的包管理工具)
后端设置
- 导航至后端目录:
cd backend
- 安装依赖项:
pip install -r requirements.txt
- 运行迁移:
python manage.py migrate
- 启动Django服务器:
python manage.py runserver
后端将在 http://localhost:8000
MCP服务器设置
- 打开一个新的终端,并导航到MCP目录:
cd mcp
- 安装依赖项:
pip install -r requirements.txt
- 启动MCP服务器:
# For local development (localhost only)
python mcp_server.py
MCP服务器将在 http://localhost:8765
暴露MCP服务器
要使用MCP服务器与ChatGPT、Claude或其他外部工具配合,你需要让该服务器能够通过互联网访问。最简单的方法是使用ngrok。
使用ngrok
-
公开MCP服务器:
ngrok http 8765
- ngrok 将提供一个类似这样的公共 URL:
https://abc123.ngrok.io您的MCP终端地址将是:
https://abc123.ngrok.io/mcp
当你想使用外部工具连接MCP服务器时,请保持ngrok运行。
ChatGPT集成
先决条件
- ChatGPT Plus或Pro订阅
- 开发者模式访问
安装说明
1. 启用开发者模式
- 打开ChatGPT并前往 设置 → 连接器
- 在……之下 高级切换 开发者模式 使(某物)能够启用/使(某功能)可用
2. 创建连接器
- 在 设置 → 连接器,点击 创造
- 请输入以下信息:
- 名字学生管理系统
- 服务器URL:
https://your-ngrok-url.ngrok.io/mcp/ - 检查 我相信这个供应商
- 如需添加认证(本项目无需认证)
- 点击 创建
3. 在聊天中使用
- 在ChatGPT中开始一个新聊天
- 点击 加号 按钮 → 更多 → 开发者模式
- 启用您的MCP服务器连接器(对于每次新聊天都必须执行此操作)
- 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的开发。欢迎根据以下功能进行扩展:
- 身份验证和授权
- 更复杂的查询和报告
- 文件上传功能
许可证
此项目仅供教育和演示之用,按原样提供。
