mcpField
G
grad-agent

grad-agent

本地服务
github.com/i-ninte科研与教育45 周前更新

关于 grad-agent

grad-agent 是面向申请全额资助硕士和博士项目者的自主 MCP Agent,可发现导师、起草联系邮件并跟踪申请。它通过身份核验和邮件事实校验减少错误,并保留人工审核与发送环节。

主要功能

  1. 01按研究领域发现教授
  2. 02核验教授身份与教职资格
  3. 03起草并核查联系邮件
  4. 04跟踪回复、推荐信和截止日期
  5. 05生成并版本化 SOP PDF

适用场景

  1. 01寻找研究方向匹配的导师
  2. 02审核并整理冷邮件草稿
  3. 03跟进教授回复与后续邮件
  4. 04按学校编制 SOP 并追踪申请事项

MCP 相关

以 stdio MCP 服务运行,向 MCP 客户端提供约 36 个申请与外联工具;也可作为命令行工具使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"i-ninte-grad-agent": {
"command": "uvx",
"args": [
"grad-agent"
],
"env": {
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>",
"SMTP_SERVER": "<SMTP_SERVER>",
"SMTP_PORT": "<SMTP_PORT>",
"SMTP_USERNAME": "<SMTP_USERNAME>",
"SMTP_PASSWORD": "<SMTP_PASSWORD>",
"SMTP_FROM": "<SMTP_FROM>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"HF_TOKEN": "<HF_TOKEN>",
"GRAD_AGENT_HOME": "<GRAD_AGENT_HOME>",
"LOR_LETTERHEAD_PATH": "<LOR_LETTERHEAD_PATH>",
"LOR_LETTERHEAD_WIDTH": "<LOR_LETTERHEAD_WIDTH>"
}
}
}
}
启动命令uvx grad-agent
需要配置的环境变量
ANTHROPIC_API_KEY密钥Anthropic API key used by Claude Haiku for hook synthesis and verification.
SMTP_SERVERSMTP host for the review mailer.
SMTP_PORTSMTP port.
SMTP_USERNAMESMTP username; used as From address by default.
SMTP_PASSWORD密钥SMTP password. Gmail App Password recommended.
SMTP_FROMEnvelope From address for drafts emailed to the user's review inbox.
GITHUB_TOKEN密钥Optional. Personal access token used to enumerate the user's public and private GitHub repos during catalog sync.
HF_TOKEN密钥Optional. HuggingFace token used to enumerate the user's published models and datasets during catalog sync.
GRAD_AGENT_HOMEOptional. Override the default ~/.grad-agent/ location for profile, programs, secrets, and data.
LOR_LETTERHEAD_PATHOptional. Absolute path to a letterhead / company logo image (.png / .jpg / .pdf) embedded at the top of Letters of Recommendation during LaTeX compile. Leave unset for a plain top block. Can also be set at runtime via the `set_letterhead` MCP tool.
LOR_LETTERHEAD_WIDTHOptional. LaTeX length for the letterhead image width (e.g. '2.5in'). Used only when LOR_LETTERHEAD_PATH is set.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypigrad-agent0.2.9

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

grad-agent

一款自主 MCP Agent,可帮助你申请有全额资助的硕士和博士项目。

发现并起草

  • 在 arXiv 上发现你研究领域的教授,也可按项目截止日期发现(run_program_batch)
  • 以触发论文在 Semantic Scholar 中对应的规范作者 ID 为锚点,确认每位教授的身份,而非依赖姓名字符串——从结构上杜绝将“Wei Zhang”这类重名者混淆
  • 如果无法锚定身份,则拒绝起草;具体的不匹配原因(例如 identity ambiguous: 2 comparable candidates, h=40 vs h=38)会记录到 skipped 工作表中,以供审计
  • 验证每位候选人确实是教职人员(设定 h 指数和论文数量门槛)
  • 按地区筛选(在你的个人资料中设置 target_regions: [US, Canada];结合关键词表、主页顶级域名和大模型回退判断)
  • 抓取其实验室网页,查找招募信号和电子邮件地址
  • 将教授与和你匹配度最高的已交付项目相匹配(标签重合度 + TF-IDF 语义层 + 基于学习的回复率偏差)
  • 起草具体且经过事实核查的冷邮件:Claude Haiku 根据教授近期论文撰写切入点,然后通过第二次调用依据摘要核查每项陈述,并重写任何缺乏依据的内容
  • 按 1 到 10 分评估每封草稿的匹配度,并给出一句理由,让你能在几秒内完成筛选
  • 每封草稿都附有时效性警告:将 S2 所列的机构信息与教授当前的主页交叉核对(若教授可能已更换实验室,则标记为 MISMATCH),并标记超过 2 年未发表论文的研究人员

学习并跟进

  • 通过只读 IMAP 检测教授回复,并自动为日志添加标签
  • 从结果中学习:能获得回复的项目会在后续匹配中排名靠前(outcome_report 会显示哪些做法有效)
  • 为超过 10 天未回复的教授起草跟进提醒;绝不对同一位教授提醒两次
  • 教授回复后,生成一页式面试准备材料:总结其论文、列出可能的问题和你的谈话要点

追踪所有事项

  • 将每所学校的个人陈述(SOP)编译为 PDF(LaTeX),并保留版本,绝不覆盖任何草稿
  • 通过 xlsx/yaml 追踪联络、推荐信(LOR)申请、项目截止日期和外部奖学金(Mastercard、Commonwealth、Fulbright、Rhodes 等)
  • 将每封草稿发送到你的收件箱供你审核;未经你的同意,绝不会向教授发送任何内容

内置的 Claude Code / Claude Desktop 技能

安装 grad-agent 后会附带一组 Anthropic Skills,可在支持这些技能的任何 Claude 客户端中调用(Claude Code、Claude Desktop、支持 MCP 的 IDE)。grad-agent init 会自动将其符号链接到 ~/.claude/skills/;若不运行 init 而是单独安装或重新安装,请使用 grad-agent install-skills(添加 --force 以替换现有条目,或添加 --target <dir> 以链接到其他位置)。

  • sop-writing — 硕士/博士目的陈述(Statement of Purpose)起草规则,综合自 MIT CommLab、MIT CAPD、Berkeley Grad Div、Harvard GSAS、Stanford 以及计算机科学教职人员指南。与 LaTeX SOP 编译步骤配套使用。
  • lor-writing — 推荐信写作规则,包括申请人代推荐人起草信件、再由推荐人签署这一常见情况。包含多封信件的差异化、推荐人视角的真实性、HHMI 偏差卫生规范,以及违禁短语正则扫描。支持通过 LOR_LETTERHEAD_PATH 环境变量设置可选的信头/公司徽标(LOR_LETTERHEAD_WIDTH 默认值为 2.2in),以便 LaTeX 编译时将图像插入信件顶部;不设置此变量,则使用纯文本顶部区块,方便推荐人粘贴到自己的信头上。grad-agent init 会交互式提示输入信头路径;之后若要更改(或为不同推荐人更换信头),请运行 grad-agent set-letterhead /path/to/image.png --width 2.5in(不传路径即可清除设置)。
  • 冷邮件起草工具(grad_agent/drafters/cold_email.py)——根据博士项目联络的最佳实践重新编写(锚定具体论文、明确一处具体重合点、不使用无依据的夸张表述、不声称“我读过您的论文”)。 作为 stdio MCP 服务运行,供 Claude Code / Claude Desktop / 任意 MCP 客户端使用;也可以作为普通 CLI 运行。

发布于:

安装

任选一种:

# Recommended for MCP clients (Claude Desktop, Claude Code, etc.)
uvx grad-agent server      # single-shot, no persistent install

# Persistent CLI install
pipx install grad-agent

# Or in a venv
python3 -m venv .venv && source .venv/bin/activate
pip install grad-agent

5 分钟内完成设置

grad-agent init

这会写入:

  • ~/.grad-agent/profile.yaml — 你的身份信息、项目和偏好
  • ~/.grad-agent/programs.yaml — 目标项目(已预置)
  • ~/.grad-agent/scholarships.yaml — 外部奖学金及截止日期(已预置)
  • ~/.grad-agent/.env — 密钥模板

填写 ~/.grad-agent/.env:

ANTHROPIC_API_KEY=sk-ant-...
SMTP_SERVER=smtp.gmail.com        # presets for Outlook/Yahoo/Zoho in the template
SMTP_PORT=587
[email protected]
SMTP_PASSWORD=<gmail app password>
[email protected]
# Optional:
S2_API_KEY=                       # free Semantic Scholar key, dedicated rate limits
                                  # (client-side throttle already enforces >=1.1s between requests)
IMAP_SERVER=imap.gmail.com        # read-only reply detection; defaults to SMTP creds
GITHUB_USERNAME=your-gh
GITHUB_TOKEN=github_pat_...
HF_USERNAME=your-hf

填写 ~/.grad-agent/profile.yaml 中的重要信息:

  • name、identity_line、portfolio
  • cv_path、transcript_path(绝对路径)
  • degree_status: bachelors | masters(用于博士资格筛选)
  • target_term、target_degree
  • research_areas: [nlp, ai4health, ...]
  • target_regions: [US, Canada] — 仅为这些地区的教授起草内容(留空 = 任意地区)
  • seed_projects: 3 到 10 个旗舰项目,包含 name、pitch、link、tags

即使 MCP 会话正在长时间运行,修改个人资料也会立即生效。

然后:

grad-agent sync        # scan projects (GitHub + HF + local)
grad-agent run         # one batch, drafts land in your inbox

注册到 Claude Code

按顺序执行以下三个命令:

pipx install grad-agent
pipx ensurepath                              # macOS/Linux: opens ~/.local/bin on PATH
                                             # Windows: opens %USERPROFILE%\.local\bin on PATH
claude mcp add grad-agent grad-agent server

在 Windows 上,运行 pipx ensurepath 后,你可能需要打开新的 PowerShell 或 Terminal 窗口, PATH 更改才能生效。

想用无需安装的一行命令?跳过 pipx,改用 uvx:

claude mcp add grad-agent uvx grad-agent server

然后在新的 Claude Code 会话中:

/mcp

你应该会看到 grad-agent 已连接,并提供约 36 个工具。在它开始执行有用操作之前,先运行 grad-agent init(或 uvx grad-agent init),并按照上方设置部分的说明填写 ~/.grad-agent/.env 和 ~/.grad-agent/profile.yaml。

如果你跳过了 pipx ensurepath,grad-agent register-claude 会打印一个绝对路径版本的命令,无需更改 PATH 即可运行。

注册到 Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "grad-agent": {
      "command": "uvx",
      "args": ["grad-agent", "server"]
    }
  }
}

uvx 命令无需预先安装。如果你已经运行过 pipx install grad-agent, 也可以改用 "command": "grad-agent", "args": ["server"]。

其他任何 MCP 客户端(Cursor、Zed、Windsurf)都使用相同的清单格式;只需 将其指向 uvx grad-agent server。

每日自主运行

此软件包为三种操作系统都提供了调度器模板。grad-agent schedule 会为你的平台生成对应模板:

grad-agent schedule --dest .

然后按照命令打印的安装说明操作。如果想提前查看:

macOS(launchd):

cp com.gradagent.daily.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.gradagent.daily.plist

Linux(systemd 用户定时器,于本地时间 08:00 触发):

mkdir -p ~/.config/systemd/user
cp grad-agent-daily.service grad-agent-daily.timer ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now grad-agent-daily.timer

Windows(任务计划程序):

# In an elevated PowerShell prompt:
schtasks /Create /TN "grad-agent-daily" /XML .\grad-agent-daily.xml

或者通过任务计划程序 GUI 导入 XML(操作 → 导入任务)。

每天早晨:通过 IMAP 自动检测回复,为未回复的教授起草跟进提醒,提供 3 位经过身份验证的教师线索及匹配度评分(最佳匹配优先),根据论文摘要核实联络切入点,在教授的 S2 记录与实时主页不一致时发出时效性警告,并提醒项目和奖学金截止日期——所有信息汇总在一封审核邮件中。被跳过的线索会连同具体不匹配原因一起保存(通过 skipped_log_view 查看,或打开 skipped 工作表)。

每个 MCP 工具的用途

工具用途
run_daily_batch(n, area)完整工作流:验证 → 招募 → hook + 验证 → 起草 → 记录
outreach_log_view(limit)显示 outreach xlsx 中最近 N 行
outreach_mark_sent(prof, uni)标记已实际发送给教授的行
sync_catalog(source)从 github、hf 或 local 拉取项目
list_projects_in_catalog()显示匹配器可查看的所有项目
list_programs()你的目标项目
upcoming_deadlines(days)接下来 N 天内是否有项目截止日期
lor_add / lor_outstanding / lor_mark推荐信追踪器
run_program_batch(program_id, n)截止日期驱动的批处理:为某个项目的教师起草邮件
skipped_log_view(limit)跳过线索的审计记录,包含具体阶段和不匹配原因
s2_cache_invalidate(query, all)按作者姓名或 ID 有选择地清除 Semantic Scholar 缓存条目
followups_due(days)为 10 天以上未回复的教授起草跟进邮件
outreach_mark_followup(prof)记录已发送的跟进邮件(每位教授最多跟进一次)
outreach_mark_response(prof, outcome)标记回复;结果会反馈给匹配器的学习循环
outcome_report()按领域和项目统计回复率
ingest_replies()只读 IMAP 扫描;自动在日志中标记回复
interview_prep(prof)一页简报:他们的论文、可能的问题以及你的谈话要点
list_scholarships(region)按资格地区筛选外部奖学金
upcoming_scholarship_deadlines(days)即将到来的奖学金截止日期
draft_cold_email(...)手动为单位教授起草邮件
draft_sop(...)编译 Columbia 风格的 SOP PDF(版本化:sop_v1、v2……)
send_draft_to_me(path)将任意草稿文件发送到你的审核收件箱
discover_profs(area)扫描 arXiv + OpenReview(原始候选人,不进行验证)

博客发布工具(publish_article、update_article 等)受 profile.yaml 中的 blog.enabled: true 控制,并且专用于作者基于 Turso 的 Next.js 作品集。大多数用户可以忽略这些工具。

Agent 不会做什么

  • 不会向教授发送任何邮件。所有邮件都由你在阅读草稿后,从自己的 Gmail 手动发送。
  • 除阅读外,不会操作你的收件箱。IMAP 访问权限为只读:不会发送、删除或标记邮件。
  • 不会捏造论文论断。hook 会经过第二次 Claude 调用,该调用会拒绝摘要中未出现的论断并重写内容。
  • 不会给同一位教授发送两次邮件。去重依据 Semantic Scholar 的 authorId;旧记录则回退使用姓名,并会标记跟进邮件,确保每位教授最多收到一次跟进。
  • 当两位教授同名时,不会给错误的人起草邮件。身份根据触发论文的 authorId 而非姓名字符串进行解析;遇到有歧义的情况时,会拒绝处理并记录。
  • 不会隐藏线索被拒绝的原因。每次跳过都会保存到 outreach_log.xlsx 的 skipped 工作表中,包含阶段(identity、faculty-gate、region、dedup、no-papers)和具体的不匹配原因,而不会将其埋在旧的审核邮件中。
  • 不会超出 Semantic Scholar 的速率限制。客户端节流会确保请求间隔至少为 1.1 秒,遇到任何 429 或 5xx 响应时会采用指数退避。
  • 不会为你不符合资格的项目起草邮件。如果你的 degree_status 为 bachelors,需要先获得 MSc 的 PhD 项目将被筛除。资格地区之外的奖学金也会采用相同的限制。

要求

  • Python 3.10+
  • macOS、Linux 或 Windows(CI 已在 3.10 / 3.11 / 3.12 上测试这三种系统)
  • 如果需要 SOP PDF,PATH 中必须有 pdflatex (macOS:MacTeX;Ubuntu:texlive-latex-recommended;Windows:MiKTeX)
  • Anthropic API 密钥
  • Gmail(或其他 SMTP 服务),用于审核邮件发送器

数据存放位置

默认情况下,所有数据都位于 ~/.grad-agent/ 下;如果设置了 $GRAD_AGENT_HOME,则位于该目录下:

~/.grad-agent/
  profile.yaml         identity + preferences (regions, seed projects, ...)
  programs.yaml        target programs with eligibility rules + deadlines
  scholarships.yaml    external scholarships with region eligibility + deadlines
  .env                 secrets (gitignored)
  data/
    outreach_log.xlsx  outreach sheet (drafts + outcomes) + skipped sheet (audit trail)
    lor_log.xlsx       recommendation-letter tracker
    catalog.json       synced projects (GitHub + HF + local)
    s2_cache.json      Semantic Scholar lookups (14 day TTL)
    region_cache.json  LLM-inferred regions for unusual affiliations
    db.sqlite          drafts + status
  drafts/              per-school SOP versions + email drafts
    prep/              interview prep one-pagers

贡献

采用 MIT 许可证。欢迎提交 PR,添加更多项目模板、非 Gmail 的 SMTP 预设、非 arXiv 来源适配器,以及更好的教授验证启发式方法。

Author

Kwabena Obeng · i-ninte.github.io/portfolio/

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。