Skip to main content
Glama
Mouseminar

University Rankings MCP Server

by Mouseminar
README.md
# 高校学科评估 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