# 高校学科评估 MCP 服务器
这是一个基于 FastMCP 的高校学科评估查询服务器,提供智能化的高校、学科、排行榜等多维度查询功能。
## 功能特性
本 MCP 服务器提供以下八个工具:
### 1. search_university - 高校专业搜索
输入高校名,查看其所有学科及评估等级。
**参数:**
- `university_name`: 高校名称(支持模糊匹配),如"清华大学"、"北京大学"
- `max_results`: 最大返回结果数,默认100
**返回:**
- 该高校的所有学科及其评估等级
- 按等级分组统计信息
### 2. search_discipline - 学科信息查询
输入学科名,查看开设该学科的所有高校及排名。
**参数:**
- `discipline_name`: 学科名称(支持模糊匹配),如"计算机"、"法学"
- `max_results`: 最大返回结果数,默认100
**返回:**
- 开设该学科的高校列表,按等级排序
- 等级分布统计
### 3. filter_by_grade - 等级筛选查询
按评估等级(A+/A/A-/B+等)筛选查看学科点。
**参数:**
- `grades`: 等级列表,可选值:A+, A, A-, B+, B, B-, C+, C, C-
- 例如:["A+", "A"]
- `max_results`: 最大返回结果数,默认100
**返回:**
- 符合条件的学科列表
- 按等级分类统计
### 4. browse_by_province - 地区浏览
按省份查看该地区高校的学科分布。
**参数:**
- `province`: 省份名称,如"北京"、"上海"、"浙江"
**返回:**
- 该地区高校的学科分布统计
- 高校列表及其学科数
- 等级和专业门类分布
### 5. university_ranking - 高校排行榜
按学科数量、A+数量、一流大学数量等多维度排序。
**参数:**
- `rank_by`: 排序方式,可选值:
- "disciplines" - 按学科总数排序(默认)
- "a_plus" - 按A+学科数排序
- "a_grade" - 按A级及以上学科数排序
- "first_class" - 按一流大学学科数排序
- `limit`: 返回前N个排名,默认50
**返回:**
- 按指定方式排序的高校排行榜
- 包含每所高校的学科统计信息
### 6. discipline_ranking - 学科排行榜
显示每个学科的开设高校数、A+数量统计。
**参数:**
- `rank_by`: 排序方式,可选值:
- "universities" - 按开设高校数排序(默认)
- "a_plus" - 按A+数量排序
- "a_grade" - 按A级及以上数量排序
- `limit`: 返回前N个排名,默认50
**返回:**
- 按指定方式排序的学科排行榜
- 包含每个学科的Top高校信息
### 7. strong_disciplines - 强势学科分析
查看某高校或地区的A/A+学科。
**参数:**
- `university`: 高校名称(模糊匹配),如"清华大学"、"北京大学"
- `province`: 省份名称,如"北京"、"上海"
- `grades`: 等级列表,默认["A+", "A", "A-"]
**返回:**
- 符合条件的强势学科列表
- 按等级分类统计
### 8. grade_analysis - 评估等级分析
统计各等级的学科点分布、热门学科。
**参数:**
- 无需参数
**返回:**
- 各等级的学科分布统计
- 按等级的详细分析(热门学科、分布特点等)
## 扩展工具
### 9. get_statistics - 获取统计信息
获取高校学科评估的统计信息。
**参数:**
- `group_by`: 分组统计字段,可选值:
- "所在省" - 按省份统计(默认)
- "一级学科" - 按学科统计
- "评估等级" - 按等级统计
- "院校类别" - 按高校类别统计
**返回:**
- 统计信息
## 环境配置
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. 配置数据文件
将 `第四轮学科评估结果.xlsx` 文件放置在项目目录下,或设置环境变量:
```bash
export UNIVERSITY_EXCEL_PATH=/path/to/第四轮学科评估结果.xlsx
```
## 使用方法
### 本地运行
```bash
python mcp_server.py
```
服务器将在 `http://localhost:9000/sse` 启动。
### 配置到 Claude Desktop
#### Stdio 模式(推荐日常使用)
编辑 Claude Desktop 配置文件 (`%APPDATA%\Claude\claude_desktop_config.json`):
```json
{
"mcpServers": {
"university-rankings": {
"command": "python",
"args": ["G:\\Desktop\\mcp_guokao\\university_rankings_mcp\\mcp_server.py"],
"env": {
"UNIVERSITY_EXCEL_PATH": "G:\\Desktop\\mcp_guokao\\university_rankings_mcp\\第四轮学科评估结果.xlsx"
}
}
}
}
```
#### SSE 模式(推荐开发测试)
1. 启动 SSE 服务器:
```bash
python mcp_server.py
```
2. 配置 Claude Desktop:
```json
{
"mcpServers": {
"university-rankings": {
"url": "http://localhost:9000/sse"
}
}
}
```
### 阿里云函数计算部署
1. 运行构建脚本安装依赖:
```bash
./build.sh
```
2. 将以下文件上传到阿里云函数计算:
- `mcp_server.py`
- `run.sh`
- `第四轮学科评估结果.xlsx`
- `python/` 目录(依赖包)
3. 配置函数:
- 运行时:自定义运行时
- 启动命令:`./run.sh`
- 监听端口:9000
## 使用示例
### 示例 1: 查看高校的所有学科
```
帮我查看清华大学的所有学科及其评估等级
```
### 示例 2: 查询学科信息
```
计算机科学与技术专业在全国有哪些高校开设?排名前三的是哪些?
```
### 示例 3: 按等级筛选
```
帮我查找所有A+等级的学科
```
### 示例 4: 地区浏览
```
帮我看看北京有哪些高校,它们各有多少个学科
```
### 示例 5: 高校排行
```
帮我列出学科数量最多的前10所高校
```
### 示例 6: 学科排行
```
哪些学科的开设高校最多?
```
### 示例 7: 强势学科分析
```
北京大学有哪些A级及以上的学科?
```
### 示例 8: 等级分析
```
告诉我各等级学科的分布情况,特别是A+等级有多少个
```
## 项目结构
```
university_rankings_mcp/
├── mcp_server.py # FastMCP 服务器实现
├── university_assistant.py # 原始命令行工具(保留)
├── main.py # 命令行交互程序
├── build.sh # 构建脚本
├── run.sh # 启动脚本
├── requirements.txt # Python 依赖
├── 第四轮学科评估结果.xlsx # 数据文件(需自行准备)
└── README.md # 本文件
```
## 技术栈
- **FastMCP**: MCP 服务器框架
- **Pandas**: 数据处理和分析
- **Python 3.11+**: 运行环境
## 数据文件格式
数据文件应包含以下列:
- `一级学科`: 学科名称
- `评估等级`: 评估等级(A+, A, A-, B+, B, B-, C+, C, C-)
- `院校代码`: 高校代码
- `专业门类`: 专业门类
- `专业大类`: 专业大类
- `院校名称`: 高校名称
- `所在省`: 所在省份
- `所在市`: 所在城市
- `院校类别`: 高校类别
- `一流大学学科`: 是否为一流大学学科(可为空)
- `院校性质`: 高校性质
## 注意事项
1. 确保数据文件 `第四轮学科评估结果.xlsx` 已正确配置
2. 数据文件应包含第四轮学科评估的完整数据
3. 返回结果默认限制为100条,可通过参数调整
4. 模糊匹配功能支持部分名称匹配
## 与 guokao_mcp 的集成
两个 MCP 服务可以同时配置到 Claude Desktop:
```json
{
"mcpServers": {
"guokao-helper": {
"command": "python",
"args": ["G:\\Desktop\\mcp_guokao\\guokao_mcp\\mcp_server.py"]
},
"university-rankings": {
"command": "python",
"args": ["G:\\Desktop\\mcp_guokao\\university_rankings_mcp\\mcp_server.py"]
}
}
}
```
这样可以在与 Claude 的对话中同时使用两个 MCP 服务的功能。
## 许可证
MIT License