Skip to main content
Glama

nwafu-mcp · Conjunto de herramientas MCP de información del campus de 西北农林科技大学

Proporciona a los agentes desplegados en cualquier plataforma de agentes un conjunto de herramientas compatibles con el protocolo MCP, que cubre tres capacidades principales:

  1. Resumen de tendencias del canal del campus: obtiene las publicaciones populares recientes del canal oficial de QQ de 西北农林科技大学 (pd.qq.com/g/inwafu1934), las ordena según el nivel de interacción y las clasifica automáticamente en categorías como «actividades / concursos / avisos / recomendaciones / consejos / ayuda»; cada dato importante va acompañado del título y el enlace de la publicación de origen para garantizar la trazabilidad.

  2. Consulta rápida en el sitio web oficial: consulta rápidamente actividades, concursos, avisos e información de contratación recientes a través del índice de texto completo del sitio web oficial de la universidad (www.nwafu.edu.cn) y del portal de noticias; admite palabras clave como «植保学院» o «教务处» para acotar el ámbito de búsqueda.

  3. Búsqueda personalizada entre sitios: divide automáticamente la pregunta del usuario en términos de búsqueda, busca al mismo tiempo en el índice de texto completo del sitio web oficial y en las publicaciones recientes del canal del campus, combina los resultados y los muestra formateados en Markdown legible, con enlaces al contenido original.


Características

  • Implementación estándar de MCP: basada en el SDK oficial de Python mcp (FastMCP), con transporte stdio; se puede conectar directamente a Claude Desktop, Cursor, Windsurf y otras plataformas de agentes compatibles con MCP.

  • Información trazable: todas las entradas concluyentes llevan el título de la fuente + el enlace original; la información importante tiene un bloque separado de «aviso destacado / aviso de vigencia».

  • Clasificación inteligente: el motor de reglas clasifica automáticamente las publicaciones del canal en categorías como «recomendación / consejos / actividades / concursos / avisos / ayuda», y dentro de cada grupo las ordena por popularidad (me gusta + comentarios ponderados).

  • Búsqueda precisa por palabras clave: la consulta en el sitio web oficial admite cualquier palabra clave para acotar el ámbito (por ejemplo, nombre de facultad, departamento o asunto).

  • Robustez y tolerancia a fallos: tiempo de espera de solicitud, reintentos, retardo aleatorio para limitar la frecuencia y aviso de caducidad de cookies; el fallo de una herramienta no afecta a las demás.

  • Cumplimiento de privacidad: solo se obtiene contenido visible públicamente, sin omitir la validación de inicio de sesión/permisos; las cookies se inyectan mediante variables de entorno y no se escriben en el repositorio de código.


Related MCP server: zju-mcp

Lista de herramientas

Herramienta

Uso

Parámetros clave

campus_channel_summary

Resumen inteligente de las publicaciones populares recientes del canal QQ del campus (ranking de popularidad + clasificación + información clave)

window_hours ventana de tiempo, max_posts cantidad a obtener, top_n número de puestos del ranking, include_comments si se obtienen los comentarios populares

official_site_recent

Consulta rápida y resumen de avisos/actividades/concursos/contratación recientes del sitio web oficial

category categoría, keyword para acotar el ámbito (p. ej., nombre de facultad), days rango de tiempo, max_results

official_site_search

Búsqueda de texto completo en el sitio web oficial (palabras clave personalizadas)

query término principal, keyword término adicional de acotación, days, max_results

campus_question_search

Búsqueda personalizada de preguntas entre «sitio web oficial + canal del campus»

question texto original de la pregunta, keywords palabras de búsqueda explícitas opcionales, days, include_channel

Todas las herramientas devuelven texto Markdown con la siguiente estructura: fuente de datos, hora de obtención, condiciones de consulta, lista de resultados (título / fecha / fuente / resumen / enlace) y avisos destacados.


Cómo funciona

Canal QQ del campus

El cliente web de 腾讯频道 se renderiza íntegramente en el frontend; los datos públicos provienen de una pasarela protobuf-over-JSON:

POST https://pd.qq.com/qunng/guild/gotrpc/noauth/trpc.qchannel.commreader.ComReader/<Method>
x-oidb: {"uint32_service_type": 11 时间线 | 5 评论}

El contenido público es legible de forma anónima, pero la pasarela exige una cookie de sesión a nivel de navegador (p_uin + uuid + EO-Bot-Js-Token). Esta herramienta:

  • Por defecto obtiene las últimas N publicaciones de la subsección «plaza de publicaciones» (670126629) (ordenadas por fecha de publicación);

  • Estima la popularidad con 点赞数 + 2 × 评论数 y toma las publicaciones más populares dentro de la ventana;

  • El motor de reglas clasifica automáticamente e indica por separado la información importante (avisos/anuncios/inscripciones/fechas límite/exámenes, etc.);

  • Opcionalmente, obtiene los comentarios populares de las publicaciones del ranking de popularidad (GetFeedComments).

Nota: el endpoint «ordenar por popularidad» de GetGuildFeeds devuelve datos vacíos en las pruebas reales, por lo que el ranking de popularidad utiliza el esquema «publicaciones recientes × interacción», que se ajusta mejor al significado de «populares recientes».

Sitio web oficial de la universidad

El sitio principal y el portal de noticias de la universidad utilizan el buscador de texto completo de 通元 CMS:

GET https://www.nwsuaf.edu.cn/cms/web/search/index.jsp
    ?query=<关键词>&siteID=<站点ID>&searchScope=0&channelID=&matchType=0
    &sortField=publishDate&order=1&date=<3|6|12>&page=<页码>
  • siteID=32e6d9be... es el índice del sitio principal (cubre todas las facultades/departamentos de la universidad);

  • Genera términos de búsqueda según la categoría (avisos/anuncios, actividades/conferencias/foros, concursos/certámenes, contratación, etc.), combina las palabras clave del usuario, obtiene los resultados por páginas y analiza el título, la fecha, la fuente, el resumen y el enlace original;

  • El rango de tiempo es de 90 días por defecto (corresponde al filtro de 3/6/12 meses del índice).


Inicio rápido (ejecución local)

cd nwafu-mcp
uv sync --extra dev
uv run nwafu-export-cookies --out cookies.json

El script abrirá la página del canal con Edge/Chrome locales para establecer una sesión y exportará la cookie. A continuación, escribe el cookie_header presente en cookies.json en una variable de entorno:

$env:PDQQ_COOKIES = "p_uin=xxx; uuid=xxx; EO-Bot-Js-Token=xxx"
# 或
$env:NWAFU_COOKIE_FILE = "F:\path\to\cookies.json"

La cookie caduca (el token anti-raspado está vinculado a la instancia del navegador); para despliegues en la nube se recomienda renovarla periódicamente.

2. Probar directamente las funciones de las herramientas (sin pasar por el cliente MCP)

uv run python -c "
import os
os.environ['NWAFU_COOKIE_FILE'] = 'cookies.json'
from nwafu_mcp.server import official_site_recent
print(official_site_recent(category='通知', keyword='植保学院'))
"

3. Ejecutar como servidor MCP

uv run nwafu-mcp

Conexión con clientes MCP

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "nwafu-campus": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/unielevotor/nwafu-AgentPlatformMCP",
        "nwafu-mcp"
      ],
      "env": {
        "PDQQ_COOKIES": "p_uin=xxx; uuid=xxx; EO-Bot-Js-Token=xxx"
      }
    }
  }
}

Cursor / Windsurf / plataformas genéricas (formato JSON)

{
  "mcpServers": {
    "nwafu-campus": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/unielevotor/nwafu-AgentPlatformMCP", "nwafu-mcp"],
      "env": {
        "PDQQ_COOKIES": "p_uin=xxx; uuid=xxx; EO-Bot-Js-Token=xxx",
        "PDQQ_GUILD_ID": "inwafu1934",
        "PDQQ_CHANNEL_ID": "670126629"
      }
    }
  }
}

También se puede instalar con pip install git+https://github.com/unielevotor/nwafu-AgentPlatformMCP y ejecutarlo directamente con el comando nwafu-mcp.


Pasos de despliegue en GitHub

  1. Haz push al repositorio de GitHub (unielevotor/nwafu-AgentPlatformMCP):

git remote add origin https://github.com/unielevotor/nwafu-AgentPlatformMCP.git
git push -u origin main
  1. Confirma que el repositorio sea Public (si es privado, la plataforma de agentes de destino debe poder acceder a las credenciales de GitHub).

  2. En la configuración MCP de la plataforma de agentes, introduce el comando de inicio uvx --from git+... de arriba e inyecta variables de entorno como PDQQ_COOKIES.


Variables de entorno

Variable

Obligatoria

Descripción

PDQQ_COOKIES

Necesaria para herramientas del canal

Cookie de sesión del navegador para el canal QQ

NWAFU_COOKIE_FILE

Necesaria para herramientas del canal

Apunta al JSON exportado por nwafu-export-cookies

PDQQ_GUILD_ID

No

Identificador del canal, por defecto inwafu1934

PDQQ_CHANNEL_ID

No

ID de la subsección, por defecto 670126629 (plaza de publicaciones)

PDQQ_MIN_DELAY / PDQQ_MAX_DELAY

No

Intervalo entre solicitudes al canal (segundos), por defecto 0.3–0.8

NWAFU_TIMEOUT

No

Tiempo de espera por solicitud (segundos), por defecto 30

Consulta .ene.example.


Ejemplo de salida (extracto)

# 🎓 西农校园频道 · 近期热门总结

> 数据来源:西北农林科技大学官方 QQ 频道 | 时间窗口:近 72 小时 | 帖子数:48

## 🔥 热度榜
1. **中元节鬼是真的多啊…**(👍7 · 💬1 · 08-27)
   来源:[中元节鬼是真的多啊](https://pd.qq.com/g/inwafu1934/post/...)

## 🏆 竞赛(2)
- **关于举办2026年创新创业大赛的通知**(👍5 · 💬2 · 08-26)
  来源:[…](https://pd.qq.com/g/inwafu1934/post/...)

## ⚠️ 重点信息(建议优先查看)
- [关于选课时间安排的通知](https://pd.qq.com/g/inwafu1934/post/...)
# 📢 西北农林科技大学官网 · 近期信息查询

> 查询条件:分类=通知 | 关键词=植保学院 | 时间范围:近 90 天 | 结果数:12

1. **关于举办2026年植保论坛系列学术报告会(十七)的通知**(2026-08-26 · 植物保护学院)
   [查看原文](https://ppc.nwafu.edu.cn/xzbg/...)

Cumplimient y recomendaciones de uso

  • Solo se obtiene contenido visible públicamente, sin omitir el inicio de sesión, el pago ni la validación de permisos.

  • Ya inluye UA aleatorio, retardo aleatorio y reintentos en caso de fallo; al desplogar, no reduzcas el retardo para hacer raspados de alta frecuincia. Respeta los términos de servicio de la plataforma de destino y las leyes aplicables, como la Ley de Protección de Información Personal.

  • Para información importante (fechas límite de inscripción, caledario de exámenes, etc.), consulta siempre la fuente oficial; la salida de la herramienta es solo para un vistazo rápido.

  • La cookie del canal contiene identificadores de sesión; nunca la envíes a un repositorio público; inyéctala siempre mediante variables de entorno.


Preguntas frecuentes

Síntoma

Solución

La herramienta del canal muestra «Cookie no configurada»

Ejecuta localmente nwafu-export-cookies --out cookies.json y luego configura la variable de entorno

La herramienta del canal reporta retcode=150/4000

La cookie ha caducado o falta el token anti-raspado; vuelve a exportarla

Los resultados de búsqueda en el sitio web oficial están vacíos

Amplía days, elimina la palabra clave o cambia de categoría y vuelve a intentarlo

No hay Edge/Chrome en la nube

Instala playwright y ejecuta pytho -m playwright install chromium, o exporta la cookie localmente e inyéctala periódicamente

Estructura de directorios

src/nwafu_mcp/
  server.py          MCP 服务器与四个工具定义
  qq_channel.py      QQ 频道数据层(时间线/热评)
  official_site.py   官网全文检索数据层
  classify.py        帖子分类与热度评分
  format.py          Markdown 报告排版
  config.py          环境变量与默认配置
  export_cookies.py  本地导出频道 Cookie 的 CLI
tests/               单元测试
scripts/mcp_smoke.py 端到端 MCP 冒烟测试(连接 stdio server 并调用全部工具)

Available Tools

4 tools
campus_channel_summaryA

抓取西北农林科技大学官方 QQ 频道(https://pd.qq.com/g/inwafu1934)近期帖子,按互动量(点赞+评论)排名出热度榜,并自动归类为活动/竞赛/通知/推荐/贴士/求助/其他,输出 Markdown 总结;每条重要信息都附来源帖子标题与链接。

NameRequiredDescriptionDefault
top_nNo
max_postsNo
window_hoursNo
comment_top_nNo
include_commentsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It transparently discloses the source URL, ranking formula, automatic categorization, Markdown output, and source attribution. It does not mention failure modes or rate limits, but the core behavior is clearly described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads the fetch action, source, ranking, categorization, and output format. Every clause is relevant, though a more structured breakdown of parameters would improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers return structure, and the description explains source, ranking, categories, and citations. However, with five parameters and no explicit guidance on when to invoke this tool versus siblings, the description is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the five parameters. Terms like 'top_n' and 'window_hours' are only indirectly related to '热度榜' and '近期帖子', while max_posts, comment_top_n, and include_comments receive no clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: fetch recent posts from a named QQ channel, rank them by likes+comments, categorize them into seven types, and output a Markdown summary with source links. It clearly identifies the resource and unique behavior, distinguishing it from a plain recent-posts or search tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for obtaining a ranked, categorized summary of QQ-channel posts rather than raw retrieval or search. It does not explicitly state when to use this tool versus the sibling tools or describe exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

official_site_recentA

查询西北农林科技大学官网(https://www.nwafu.edu.cn/)最近的活动、竞赛、通知、招聘等官方信息并输出 Markdown 总结。支持传入关键词(如学院名)缩小检索范围,例如 keyword='植保学院' 只返回植保学院相关通知。

NameRequiredDescriptionDefault
daysNo
keywordNo
categoryNo全部
max_resultsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden; it discloses that this is a read-only query of the official site and that output is a Markdown summary, plus that keyword narrows the results. It does not mention rate limits, freshness boundaries, or failure modes, but for a simple read tool the key behavioral traits are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first establishes tool, source URL, content scope, and output format; the second gives the key parameter example. The most load-bearing information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the output schema is present, which covers return structure. However, the description does not explain three of the four parameters, nor does it position the tool against official_site_search, so an agent still has meaningful uncertainty about how to set days/category/max_results and when to choose this over its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but only keyword is given real meaning (with the '植保学院' example). days, category, and max_results are left to inference from their names and defaults, which is insufficient with no schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb–resource pair: query the NWAFU official website for recent activities, competitions, notices, and recruitment information, then output a Markdown summary. It does not explicitly distinguish itself from official_site_search or the other siblings, so it loses a point for lacking sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use—retrieving recent official-site news—is implied and there is a concrete keyword example, but no alternative tools are named and no when-not-to-use conditions are given. Sibling tools like official_site_search could overlap, yet the description does not route the agent between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedcampus_channel_summary
    • First observedcampus_question_search
    • First observedofficial_site_recent
    • First observedofficial_site_search

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

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables interaction with Zhejiang University's learning platform (学在浙大 / 智云课堂) via MCP tools, allowing natural language commands to check todos, view schedules, fetch lecture transcripts, and submit homework.
    7
    9
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides Google search, URL extraction, and academic paper inline extraction without API keys, enabling search and content retrieval from a single MCP server.
    5
    428 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables searching the Xiangtan University Computer Science College official website, retrieving article content and attachments, and listing common sections through a Cloudflare-hosted MCP server.
    -