MCPserverCumtJW
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"MCP服务器 - SSE模式": {
"type": "sse",
"url": "https://ppbizon.xyz:8800/sse"
}
}
}
服务介绍
详细文档见https://modelscope.cn/docs/%E5%88%9B%E7%A9%BA%E9%97%B4%E5%8D%A1%E7%89%87
domain: nlp
tags:
- MCP
- 教务系统
- 学生信息
datasets:
models:
启动文件
deployspec:
entry_file: app.py
license: MIT License
MCPserverCumtJW - 中国矿业大学徐海教务系统MCP工具
项目简介
MCPserverCumtJW是一个基于MCP (Model Context Protocol)的工具,用于访问中国矿业大学徐海校区教务系统的数据。该项目提供了一个简单的API接口,可以获取学生的考试信息和成绩信息。
功能特点
- 安全的用户认证:使用RSA加密保护用户密码
- 考试信息查询:获取指定学年学期的考试安排
- 成绩信息查询:获取指定学年学期的成绩信息,并计算GPA
- MCP接口:通过MCP协议提供API服务,方便AI助手调用
技术栈
- Python 3.x
- requests:用于HTTP请求
- pycryptodomex:用于RSA加密
- mcp-server:用于提供MCP服务
- mcp:MCP客户端库
- FastAPI:用于构建API服务
- uvicorn:ASGI服务器
- Gradio:用于构建Web界面
- ModelScope:AI模型部署平台
安装方法
- 克隆项目代码
git clone https://github.com/yourusername/MCPserverCumtJW.git
cd MCPserverCumtJW
- 安装依赖
pip install -r requirements.txt
使用方法
启动MCP服务器
python main.py
服务器启动后,会输出"hello ai_mcp",表示服务已经成功启动。MCP服务器使用"stdio"模式运行,这意味着它通过标准输入/输出与客户端通信,适合与AI助手等工具集成。
启动Web界面
python app.py
启动Web界面后,可以通过浏览器访问http://localhost:7860,使用图形化界面与MCP服务交互。Web界面提供了以下功能:
- 输入学生信息(用户名和密码)
- 设置查询参数(学年和学期)
- 查询考试信息
- 查询成绩信息
在ModelScope平台上部署时,会自动使用app.py作为入口文件,提供Web界面服务。
API接口说明
获取考试信息
get_exam_list(student_username, student_password, year=None, term=None, exam_name=None)
参数说明:
- student_username:学生用户名
- student_password:学生密码
- year:学年,如 "2023-2024"
- term:学期,如 1, 2, 3
- exam_name:考试名称,如 "期末考试"
返回值:
{
"status": "success",
"data": [
{
"course_name": "高等数学",
"exam_date": "2024-01-15 09:00-11:00",
"exam_location": "教学楼A-101",
"exam_name": "期末考试"
},
// 更多考试信息...
],
"message": "成功获取考试信息"
}
获取成绩信息
get_score_list(student_username, student_password, year=None, term=None, mark_type=None)
参数说明:
- student_username:学生用户名
- student_password:学生密码
- year:学年,如 "2023-2024"
- term:学期,如 1, 2, 3
- mark_type:课程标记,如 "主修"/"辅修"等
返回值:
{
"status": "success",
"data": [
{
"course_name": "高等数学",
"grade": "90",
"credit": "4.0",
"course_type": "必修"
},
// 更多成绩信息...
],
"gpa": 3.8,
"message": "成功获取成绩信息"
}
项目结构
.
├── .modelscope/ # ModelScope配置目录
│ ├── config.json # 模型配置
│ └── deploy.json # 部署规范
├── api.py # API核心实现,包含教务系统客户端和MCP工具函数
├── app.py # Web界面和MCP服务器启动入口
├── main.py # 命令行模式MCP服务器入口
├── mcp_client_example.py # MCP客户端示例
├── models.py # 数据模型定义
├── requirements.txt # 项目依赖
└── README.md # 项目文档
数据模型
- Student:学生信息,包含用户名和密码
- Course:课程信息,包含课程名称、教师、地点、时间和周次
- Schedule:课程表,包含多个课程
- Score:成绩信息,包含课程名称、学分、成绩等
- ScoreList:成绩列表,包含多个成绩信息,可计算GPA
- Exam:考试信息,包含课程名称、考试时间、地点等
- ExamList:考试列表,包含多个考试信息
服务配置与环境设置
服务参数配置
基本配置
在部署MCP服务器时,可以通过以下方式配置服务参数:
-
修改运行模式
目前服务默认使用"stdio"模式运行,适合与AI助手集成。如需部署为HTTP服务,请修改
main.py:# 从 mcp.run("stdio") # 改为 import uvicorn uvicorn.run(mcp.app, host="0.0.0.0", port=8000) -
配置服务名称
在
main.py中,可以修改FastMCP的初始化参数来设置服务名称:# 默认名称为"jwxt" mcp = FastMCP("jwxt") # 可以修改为其他名称 mcp = FastMCP("cumt-jwxt-service") -
添加或移除工具
可以通过
mcp.add_tool()方法添加更多工具,或者移除现有工具:# 添加工具示例 mcp.add_tool(api.get_schedule) # 假设已实现get_schedule函数 # 移除工具示例(需要先实现移除方法) # mcp.remove_tool("get_exam_list")
高级配置
-
环境变量配置
为了保护敏感信息,建议使用环境变量存储配置:
import os # 从环境变量获取配置 PORT = int(os.getenv("MCP_PORT", 8000)) HOST = os.getenv("MCP_HOST", "0.0.0.0") # 使用环境变量配置服务 uvicorn.run(mcp.app, host=HOST, port=PORT) -
CORS配置
如果需要支持跨域请求,可以配置CORS:
from fastapi.middleware.cors import CORSMiddleware # 获取FastAPI应用实例 app = mcp.app # 配置CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], # 在生产环境中应该限制来源 allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
环境设置
本地开发环境
-
Python环境
- Python 3.8或更高版本
- 建议使用虚拟环境:
python -m venv venv - 激活虚拟环境:
- Windows:
venv\Scripts\activate - Linux/Mac:
source venv/bin/activate
- Windows:
-
依赖安装
- 安装所有依赖:
pip install -r requirements.txt - 开发依赖(可选):
pip install pytest black isort
- 安装所有依赖:
生产环境
-
服务器要求
- 支持Python 3.8+的Linux服务器(推荐Ubuntu 20.04或CentOS 8)
- 至少512MB RAM(推荐1GB或更多)
- 建议配置反向代理(Nginx或Apache)
-
安全设置
- 创建专用服务账户运行应用
- 配置防火墙,只开放必要端口
- 启用HTTPS(使用Let's Encrypt免费证书)
- 定期更新依赖包
-
监控与日志
- 配置日志记录:
logging.basicConfig(filename="mcp_server.log", level=logging.INFO) - 设置服务监控(如使用Prometheus或简单的健康检查端点)
- 配置日志记录:
-
自动启动
- 使用systemd配置服务自动启动
- 创建
/etc/systemd/system/mcp-server.service文件
容器化部署
-
Docker配置
创建
Dockerfile:FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "main.py"] -
Docker Compose配置
创建
docker-compose.yml:version: '3' services: mcp-server: build: . ports: - "8000:8000" environment: - MCP_PORT=8000 - MCP_HOST=0.0.0.0 restart: always
ModelScope平台部署
-
准备工作
- 确保项目根目录包含
requirements.txt文件 - 确保
main.py文件正确配置
- 确保项目根目录包含
-
ModelScope配置
- 项目已包含
.modelscope文件夹,其中包含以下配置文件:config.json: 定义模型类型、任务和框架deploy.json: 定义部署规范,包括入口文件、资源需求和端口配置
- 项目已包含
-
部署步骤
- 登录ModelScope平台
- 创建新的空间或选择现有空间
- 上传代码或关联GitHub仓库
- 系统会自动读取
.modelscope/deploy.json中的配置,使用app.py作为启动文件 - 选择合适的计算资源
- 完成部署后,可以通过Web界面与MCP服务交互
注意事项
- 本项目仅供学习和研究使用
- 请勿将学生账号密码明文存储或传输
- 使用过程中请遵守学校相关规定
- 部署到公网时,务必配置适当的安全措施
- 定期更新依赖包以修复潜在安全漏洞
许可证
MIT License
在ModelScope上使用
克隆项目
git clone https://www.modelscope.cn/studios/yourusername/MCPserverCumtJW.git
在ModelScope上部署
- 在ModelScope平台创建空间
- 上传或关联代码仓库
- 配置启动文件为
main.py - 部署并使用MCP服务
使用MCP客户端调用服务
项目提供了mcp_client_example.py示例文件,演示如何使用MCP客户端调用服务:
# 创建MCP客户端
from mcp.client import Client
client = Client("https://www.modelscope.cn/api/v1/mcp/servers/yourusername/MCPserverCumtJW")
# 调用获取考试信息API
exam_result = client.get_exam_list(
student_username="your_student_id",
student_password="your_password",
year="2023-2024",
term=1
)
# 调用获取成绩信息API
score_result = client.get_score_list(
student_username="your_student_id",
student_password="your_password",
year="2023-2024",
term=1
)
完整示例请参考项目中的mcp_client_example.py文件。