Skip to main content
Glama
README.md
# mcp-for-nwafactivity · 西北农林科技大学校园信息 MCP 工具集

一套符合 [MCP 协议](https://modelcontextprotocol.io) 的智能体工具集,为部署在
任意智能体平台上的 Agent 提供西农校园信息能力:

1. **校园频道热门总结**:总结西北农林科技大学官方 QQ 频道
   ([pd.qq.com/g/inwafu1934](https://pd.qq.com/g/inwafu1934))近期热门帖子,
   自动归类为「活动 / 竞赛 / 通知 / 推荐 / 贴士 / 求助」等,重要信息附来源标题与链接。
2. **官网快速查询**:查询学校官网([www.nwafu.edu.cn](https://www.nwafu.edu.cn/))
   最近的通知、活动、竞赛、招聘,支持输入「植保学院」「教务处」等关键词缩小范围。
3. **跨站自定义检索**:自动拆解问题关键词,在官网全文索引与校园频道近期帖子中
   检索并合并输出,排版为易读的 Markdown。

## 工具列表

| 工具 | 用途 | 关键参数 |
| --- | --- | --- |
| `campus_channel_summary` | 校园频道近期热门帖子总结(热度榜 + 分类 + 来源引用) | `window_hours`、`max_posts`、`top_n`、`include_comments` |
| `official_site_recent` | 官网最近通知/活动/竞赛/招聘查询与总结 | `category`、`keyword`(如学院名)、`days`、`max_results` |
| `official_site_search` | 官网全文检索 | `query`、`keyword`、`days`、`max_results` |
| `campus_question_search` | 跨「官网 + 校园频道」自定义问题检索 | `question`、`keywords`、`days`、`include_channel` |

## 快速开始(本地)

```powershell
cd nwafu-mcp
uv sync --extra dev --extra cookies
uv run mcp-for-nwafactivity
```

频道类工具需要 QQ 频道会话 Cookie(`p_uin` / `uuid` / `EO-Bot-Js-Token`),
首次使用请先导出并配置:

```powershell
uv run nwafu-export-cookies --out cookies.json
$env:NWAFU_COOKIE_FILE = "F:\path\to\cookies.json"
# 或把 cookies.json 中的 cookie_header 填入环境变量 PDQQ_COOKIES
```

不想手动维护 Cookie?见下文「Cookie 自动化」。

## 部署到魔搭社区(可托管部署)

项目已发布到 PyPI。魔搭 STDIO 托管只支持 `npx` / `uvx`,且只能拉取已发布包,
因此服务配置如下:

```json
{
  "mcpServers": {
    "nwafu-campus": {
      "command": "uvx",
      "args": ["mcp-for-nwafactivity"],
      "env": {
        "PDQQ_COOKIES": "p_uin=xxx; uuid=xxx; EO-Bot-Js-Token=xxx",
        "PDQQ_GUILD_ID": "inwafu1934",
        "PDQQ_CHANNEL_ID": "670126629"
      }
    }
  }
}
```

创建步骤:

1. 打开 [创建 MCP 服务](https://modelscope.cn/mcp/servers/create),保持
   「从 GitHub 仓库快速创建」。
2. GitHub 地址填 `https://github.com/unielevotor/nwafu-AgentPlatformMCP`,
   英文名称填 `nwafu-campus`,托管类型选「可托管部署」。
3. 平台自动解析本 README 的服务配置并执行部署检测
   (`uvx` 安装包 → 连接 → `list_tools`),通过后即可在工具页测试使用。

同一份配置也可直接用于 Claude Desktop / Cursor 等本地客户端。
`PDQQ_COOKIES` 过期后重新导出并在连接时更新;官网类工具无需 Cookie。

如需以远程 HTTP 方式部署(Docker / Serverless),用
`mcp-for-nwafactivity --transport streamable-http` 启动,详见代码内
`--help` 与仓库 Dockerfile。

## Cookie 自动化(无需手动填 PDQQ_COOKIES)

QQ 频道会话 Cookie 会过期,手动复制容易忘。项目提供两个自动化手段:

1. **本地 Cookie 守护程序 `nwafu-cookie-keeper`**:周期性用浏览器自动刷新
   Cookie 并写入 `cookies.json`,可附带启动 HTTP 端点供 MCP 拉取:

   ```powershell
   uv run nwafu-cookie-keeper --serve 127.0.0.1:8765 --token 换成随机长令牌 --out cookies.json
   ```

2. **MCP server 自动拉取**:在 MCP 环境里配置 `PDQQ_COOKIE_URL` 指向上面端点的
   `/cookie`,server 会按 TTL 自动拉取并缓存,无需手工填写:

   ```env
   PDQQ_COOKIE_URL=http://127.0.0.1:8765/cookie
   PDQQ_COOKIE_TOKEN=换成随机长令牌
   PDQQ_COOKIE_REFRESH_TTL=600
   ```

本地 / 局域网部署时 keeper 与 MCP 同机即可;若 MCP 部署在魔搭云端,需要把
keeper 端点通过内网穿透(如 Cloudflare Tunnel)暴露为公网 HTTPS 地址。

## 环境变量

| 变量 | 说明 |
| --- | --- |
| `PDQQ_COOKIES` | QQ 频道会话 Cookie(频道类工具需要) |
| `NWAFU_COOKIE_FILE` | 指向 `nwafu-export-cookies` 导出的 JSON |
| `PDQQ_COOKIE_URL` / `PDQQ_COOKIE_TOKEN` | 远程 Cookie 提供者地址与 Bearer 令牌(自动化) |
| `PDQQ_COOKIE_REFRESH_TTL` | 远程 Cookie 缓存秒数,默认 600 |
| `PDQQ_GUILD_ID` / `PDQQ_CHANNEL_ID` | 频道与子版块标识,默认 `inwafu1934` / `670126629` |
| `NWAFU_TIMEOUT` | 单请求超时秒数,默认 30 |
| `NWAFU_MCP_TRANSPORT` | `stdio`(默认)或 `streamable-http` |

参考 [.env.example](.env.example)。

## 合规说明

仅抓取公开可见内容,不绕过登录 / 权限校验;内置随机 UA、限速与重试,请勿调低
延迟做高频抓取。重要信息请以官方原文为准。

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a fairly distinct retrieval need: QQ channel hot summaries, official-site recent info, official-site full-text search, and cross-source question search. The only mild overlap is between official_site_recent and official_site_search, but their descriptions make the difference clear enough.

Naming Consistency4/5

Tool names are consistently lowercase snake_case and follow recognizable source prefixes like campus_* and official_site_*. However, suffixes mix result-oriented terms (summary, recent) with action terms (search), so they do not follow a strict verb_noun pattern throughout.

Tool Count5/5

Four tools is well-scoped for a campus information retrieval server. Each tool covers a distinct retrieval workflow without redundancy, and the set is neither too thin nor overloaded for its stated purpose.

Completeness4/5

The set covers recent official announcements, full-text official-site search, QQ channel hot content, and a combined question-based search across both sources. A dedicated channel-only keyword search is missing, but campus_question_search partially fills that gap, so the surface is reasonably complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues