# RateMySupervisor_MCP
`RateMySupervisor_MCP` 是一个基于 FastMCP 构建的服务器,提供了一个接口,用于查询来自[导师评价网](https://www.urfire.com/)的导师评价数据。大语言模型(LLM)或其他兼容 MCP 协议的客户端可以通过此服务器轻松地获取导师、院系和评价信息。服务器内置了对导师姓名的智能模糊匹配功能,支持中文名与拼音的自动识别,并能通过详细的指令引导大模型进行高效、准确的查询。
## demo
<p align="center">
<img src="assets/demo1.gif" alt="demo1" width="48%" style="display:inline-block;vertical-align:top;margin-right:1%;">
<img src="assets/demo2.gif" alt="demo2" width="48%" style="display:inline-block;vertical-align:top;">
</p>
## 数据来源
数据来源:[https://github.com/pengp25/RateMySupervisor](https://github.com/pengp25/RateMySupervisor),这个仓库使用了爬虫工具从[导师推荐网](https://www.urfire.com/)获取导师评价数据,存储为`data/comments_data.json`。
`comments_data.json`存储了如下格式的`json`数据:
```json
[
{
"school_cate": "",
"university": "",
"department": "",
"supervisor": "",
"rate": 0,
"description": ""
}
]
```
## 安装与运行
1. **克隆仓库**
```bash
git clone https://github.com/CJL196/RateMySupervisor_MCP.git
cd RateMySupervisor_MCP
```
2. **安装依赖**
项目依赖 `fastmcp`, `pydantic` 和 `pinyin`。通过以下命令安装:
```bash
pip install -r requirements.txt
```
3. **运行服务器**
直接运行 `server.py` 即可启动 MCP 服务器:
```bash
python server.py
```
服务器将以 MCP Stdio 模式运行,等待客户端连接。
## MCP 客户端配置
要将此服务器集成到兼容 MCP 的客户端(如cursor或cline)中,您可以使用类似以下的配置。请确保将 `command` 和 `args` 中的路径修改为 `server.py` 在您系统中的 **绝对路径**。
```json
{
"mcpServers": {
"RateMySupervisor": {
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "python",
"args": [
"/path/to/your/RateMySupervisor_MCP/server.py"
],
"env": {}
}
}
}
```
## 可用工具 (API)
服务器 `(name="导师评价查询系统")` 提供了以下工具:
---
### 1. `search_supervisor_by_name`
根据导师姓名模糊搜索相关的评价。
> **Note**: 此工具支持智能姓名匹配。当输入中文姓名(如"何凯明")时,服务器会自动搜索其中文形式以及对应的拼音形式(如 "Kaiming He"),从而有效处理数据中导师姓名为英文或拼音的情况。
- **参数**:
- `name` (string, required): 要搜索的导师姓名。
- **成功响应**:
```json
{
"success": true,
"data": [
{
"school_cate": "985",
"university": "哈尔滨工业大学",
"department": "机电工程学院",
"supervisor": "周裕(深圳,千人计划)",
"rate": 2.5,
"description": "自证认识导师:57年生人...\n学术水平:喜欢发高质量论文..."
}
]
}
```
- **失败响应**:
```json
{
"success": false,
"message": "没有找到名为 '张三' 的导师。"
}
```
---
### 2. `get_departments_by_university`
根据大学名称,获取该大学所有的院系列表。
- **参数**:
- `university` (string, required): 要查询的大学名称。
- **成功响应**:
```json
{
"success": true,
"data": [
"机电工程学院",
"计算机科学与技术学院"
]
}
```
- **失败响应**:
```json
{
"success": false,
"message": "没有找到大学 '未知大学' 的信息或该大学下没有院系列表。"
}
```
---
### 3. `get_supervisors_by_university_and_department`
根据大学和院系名称,获取该院系所有的导师列表。
- **参数**:
- `university` (string, required): 大学名称。
- `department` (string, required): 院系名称。
- **成功响应**:
```json
{
"success": true,
"data": [
"杨立军",
"白基成",
"郝明晖"
]
}
```
- **失败响应**:
```json
{
"success": false,
"message": "在 '哈尔滨工业大学' 的 '未知学院' 没有找到导师信息。"
}
```
---
### 4. `get_reviews`
根据大学、院系和导师的完整信息,获取具体评价。
- **参数**:
- `university` (string, required): 大学名称。
- `department` (string, required): 院系名称。
- `supervisor` (string, required): 导师姓名。支持智能模糊匹配(中文名和拼音)。
- **成功响应**:
```json
{
"success": true,
"data": [
{
"school_cate": "985",
"university": "哈尔滨工业大学",
"department": "机电工程学院",
"supervisor": "杨立军",
"rate": 5.0,
"description": "自证认识导师:办公室在制造楼5楼..."
}
]
}
```
- **失败响应**:
```json
{
"success": false,
"message": "没有找到关于 '哈尔滨工业大学' '机电工程学院' 的 '王五' 导师的评价。"
}
```