mcpField
G
grants

grants

github.com/alirezarezvani生产力28.9k357 次安装2 天前更新
代码仓库

关于 grants

Grants 是面向临床研究人员的 NIH 资助情报技能,将研究构想、职业阶段、初步数据等信息与 Consensus 文献搜索及 NIH RePORTER 项目数据结合,生成可编辑的 DOCX。报告涵盖研究定位、目标研究所、资助机会和策略建议;范围仅限 NIH。

主要功能

  1. 01通过六问收集研究项目信息
  2. 02用 Consensus 搜索研究文献
  3. 03通过 RePORTER 查询 NIH 项目
  4. 04匹配资助机制与研究范围
  5. 05生成含审计记录的 DOCX

适用场景

  1. 01为临床研究构想寻找 NIH 资助方向
  2. 02比较目标研究所及相近资助项目
  3. 03为新申请或重新提交准备策略材料

MCP 相关

此技能要求连接 Consensus MCP,以执行研究文献搜索;README 未说明它提供 MCP 服务。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill grants

安装后在 Claude Code 中输入/grants确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
docx_9_sections.md
nih_mechanism_matching.md
reporter_post_patterns.md
scripts/
citation_tracker.py
fiscal_year_calculator.py
mechanism_matcher.py

详细介绍

Grants — NIH 资助情报

**可移植性:**需要 bash_tool(通过 curl 向 RePORTER 发送 POST 请求)、安装了 docx 包的 Node.js,以及 Consensus MCP 连接。可在 Claude Code CLI 中原生运行。在 Claude.ai 中使用 Code Execution + Consensus MCP 时,工作流受支持,但速度较慢。

**范围:仅限 NIH。**非 NIH 资助方(PCORI、DOD CDMRP、VA、基金会)不在范围内,并会在受理时标记。

面向有研究构想的临床研究人员,生成一份可编辑的 .docx 格式 NIH 资助策略概览。输出涵盖研究定位分析、研究所映射、目标资助项目发现和策略建议,供研究人员编辑、复制内容并与导师分享。

Agent 完整性规则(Research-Pack 规范)

继承自既有规范;根据 PR #657 审计逐字锁定。

  • 执行纪律。只有确认收到结果后,步骤才算完成。Consensus 调用必须按顺序进行,间隔至少 1 秒。RePORTER 调用必须按顺序进行。
  • **数据来源。**只统计本会话中工具调用返回的数据。绝不补充训练知识。训练知识须标记为 [Not from Consensus/RePORTER — reference information],且不计入数量。
  • **数量与归属。**发送的查询 / 显示的结果 / 引用的结果——分别计数,绝不可混为一谈。每篇引用的论文都必须有本会话中可检索的 URL。
  • **错误处理。**失败时 → 等待 3 秒 → 重试一次 → 记录。若跨工具连续失败 3 次:停止,提醒研究人员,并说明缺少哪些内容。绝不默默跳过。
  • **透明度。**DOCX 中须有审计日志部分。聊天摘要与文档遵循相同标准。

请参阅 references/reporter_post_patterns.md,了解 RePORTER POST 规范和计划层级检测。

第 1 阶段:严格追问式信息收集(6 个关键问题,逐个提问)

Q1(根问题)— 研究构想

请用 2–3 句话描述研究构想。研究问题是什么?新颖之处是什么?临床意义是什么?含糊的回答(例如“医疗领域的 AI”“疾病 X 的生物标志物”)将被拒绝——请追问细节,力求具体。

*提问原因:*五次 Consensus 搜索(已确立的研究现状 / 研究意义 / 当前方法 / 相邻方法 / 研究空白)都依赖明确的研究构想。构想含糊,产生的研究空白引文和定位叙述也会含糊且毫无用处。

拒绝含糊其辞的回答。若用户回答过于宽泛,给出示例后再追问一次。

Q2(取决于 Q1)— 职业阶段

职业阶段——请选择一项:

  1. 博士前阶段(博士生、T32 受训者)
  2. 博士后研究员(F32、K99 候选人)
  3. 职业早期(K 类奖项候选人、首次申请 R01)
  4. 独立研究者(多个 R01、已建立的实验室)
  5. 资深 PI(R35、P 系列、U01 项目负责人)

*提问原因:*职业阶段会影响资助机制建议。F 系列面向受训者,K 系列面向职业早期研究者,R 系列面向独立研究者。选择错误的阶段会导致提出无法获得资助的机制建议。

必须选择一项。

Q3(取决于 Q2)— 初步数据情况

初步数据——请选择一项:

  1. 无(全新项目,尚无试点数据)
  2. 试点数据(早期发现,单中心)
  3. 有力的初步数据(多项实验,已达到 R01 规模)
  4. 已验证且准备就绪(多中心,已达到发表标准)

*提问原因:*初步数据情况决定资助机制和预算。无数据 → R03 / R21 试点范围。有力的初步数据 → R01 / U01 多中心规模。两者不匹配会导致申请缺乏竞争力。

Q4(取决于 Q2)— 研究环境

研究环境——请选择一项:

  1. 符合 R01 申请资格(研究密集型机构,拥有 NIH 基础经费)
  2. 中等水平(地区学术医疗中心,NIH 资助项目规模适中)
  3. 资源受限(规模较小的机构,NIH 基础经费有限)
  4. 与产业界合作(学术机构 + 产业界合作)

*提问原因:*研究环境会影响方案范围的现实性(多中心 U01 项目要求符合 R01 申请资格),也会影响哪些资助机制类别具有竞争力(R15 专门面向资源受限的机构)。

Q5(取决于 Q1)— 申请提交状态

申请提交状态——选择一项:

  1. 新申请(首次提交,没有过往评审)
  2. 重新提交(A1,需要回应评审意见)
  3. 正在了解(尚未决定是否提交)

询问原因: 重新提交时,DOCX(第 7 节)需要提供回应评审意见的指导。新申请无需此内容。正在了解则应将重点从策略转向整体情况。

Q6(取决于 Q1)— 已知的目标研究所

你是否已经考虑了 NIH 的特定研究所?请列出名称(NCI / NHLBI / NIMH / NINDS / NIDDK / 等),或回答“没有偏好——请帮我找合适的研究所”。

询问原因: 如果你对研究所已有假设,我会根据 RePORTER 数据验证。如果没有,我会通过研究所统计结果列出资助相近研究的排名前三的研究所。

“没有偏好”是常见情况,请接受此回答。

停止条件: Q6 之后,确定方案并开始阶段 2A。阶段 2A 开始后,绝不重新开启信息收集。

阶段 2A:研究定位(5 次 Consensus 搜索)

按顺序以每秒 1 次的频率运行。每次搜索对应一个定位维度:

  1. 已有成果 — "<research idea>" established evidence — 已知内容
  2. 重要性 — "<topic>" mortality OR burden OR cost OR prevalence — 研究为何重要
  3. 当前方法 — "<topic>" current treatment OR standard of care OR approach — 当前最先进的研究水平
  4. 相邻方法 — "<related technique>" applied to <topic> — 方法学上的可能性
  5. 研究空白 — "<topic>" limitations OR unanswered OR future directions OR challenge — 研究空白信号

每次搜索都使用 scripts/citation_tracker.py --action record_consensus_search。根据第一个响应检测计划等级。

综合: 为每个维度提取 2–3 条可引用的发现(用于第 2 节的研究空白引文)。按照“该领域已确立 X(参考文献),但 Y 仍未得到解答(参考文献)”的模式撰写意义和创新性内容。

阶段 2B:研究所映射 + 资助项目发现(RePORTER POST)

RePORTER 仅支持 POST。使用 bash_tool + curl,绝不使用 web_fetch。

动态财政年度范围

使用 scripts/fiscal_year_calculator.py 在运行时计算。默认范围:当前财政年度 + 之前 3 个财政年度。联邦财政年度从 10 月 1 日开始,因此:

python scripts/fiscal_year_calculator.py --output json
# Returns: {"current_fy": 2026, "window": [2023, 2024, 2025, 2026]}
窄范围(AND)搜索——查找直接重叠
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "criteria": {
      "fiscal_years": [2023, 2024, 2025, 2026],
      "include_active_projects": true,
      "advanced_text_search": {
        "operator": "AND",
        "search_field": "all",
        "search_text": "<key term 1> <key term 2>"
      }
    },
    "limit": 50,
    "include_fields": ["project_num", "project_title", "agency_ic_admin", "study_section", "fiscal_year", "principal_investigators", "abstract_text"]
  }'
宽范围(OR)搜索——查找相邻研究
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "criteria": {
      "fiscal_years": [2023, 2024, 2025, 2026],
      "advanced_text_search": {
        "operator": "OR",
        "search_field": "all",
        "search_text": "<term> <synonym> <related concept>"
      }
    },
    "limit": 50
  }'
研究所统计 + 评审组排序

RePORTER 响应返回后:

  • 统计 agency_ic_admin(研究所代码:NCI、NHLBI、NIMH 等)→ 资助排名前三的研究所
  • 统计 study_section → 排名前二的评审组(申请会送至这些评审组进行评审)
NOSI 发现

解析 RePORTER 响应,查找 NOT-* 项目编号。对每个编号:

# NOSIs live at predictable URLs:
# https://grants.nih.gov/grants/guide/notice-files/NOT-<INSTITUTE>-<YEAR>-<NUMBER>.html
web_fetch <url>

如果获取失败:记录 [NOSI {number} — fetch failed, not included],然后继续。

资助机制匹配(考虑项目范围)

建议不应仅由职业阶段决定。职业阶段 + 项目范围 + 初步数据共同决定建议。

使用 scripts/mechanism_matcher.py:

python scripts/mechanism_matcher.py \
  --career-stage "early_career" \
  --prelim-data "pilot" \
  --environment "r01_eligible" \
  --scope "single_site" \
  --output json
# Returns mechanism shortlist with rationale

完整矩阵请参阅 references/nih_mechanism_matching.md。

阶段 3:DOCX 生成

通过 Node.js + docx 库生成 9 个部分。完整规范请参阅 references/docx_9_sections.md。

  1. 执行摘要 — 标题 + 职业阶段 + 环境 + 3-4 条关键发现要点
  2. 研究定位 — 3-5 条差距引文(斜体,内嵌 Consensus 引用)+ 2-3 段定位叙述 + 支持证据表
  3. 目标研究所 — 排名表(研究所、时间窗口内项目数量、与您的构想的匹配度百分比)+ 2-3 句解读
  4. 资助机会 — 如有 NOSI,使用粗体标注。排名前 3 的资助项目表格,包含超链接 FOA + 每项资助的研究范围/预算匹配度段落
  5. 已资助的重叠项目 — 排名前 5 的项目表格(PI、project_num、IC、年份、指向 RePORTER 的超链接)+ 差异化段落
  6. 研究组别 — 排名表 + 最佳匹配解读
  7. 战略建议与后续步骤 — 3-4 条编号建议 + 必需的项目官员建议 + 提交时间表说明 +(如果重新提交时 Q5=2)评审意见回复指南 + 结尾段落
  8. 参考文献 — 编号书目,链接至 Consensus
  9. 审计日志 — Consensus 搜索表、计划层级说明、RePORTER 搜索表、NOSI 获取表、摘要统计、工具限制说明、失败步骤
样式

正文采用 Arial 12pt,标题采用海军蓝(#1a3a5c),表格标题采用浅蓝色(#e8f0f8),NOSI 标注采用琥珀色。ExternalHyperlink 模式:

  • 论文引用:https://consensus.app/papers/...
  • FOA 链接:https://grants.nih.gov/grants/guide/...
  • RePORTER 项目:https://reporter.nih.gov/project-details/<id>

必需的项目官员建议

始终在第 7 节中加入:

建议的下一步:联系 {top institute} 的项目官员。 请在 https://www.nih.gov/institutes-nih/list-nih-institutes-centers-offices → {institute} → Program Officers 页面查找其工作人员页面。请准备:1 页的具体目标 + 您的 CV + 3 个关于匹配度的具体问题。电子邮件主题:“预申请咨询:”。

这是对所有申请者最有价值的一条建议。绝不可省略。

提交时间表(嵌入 DOCX 第 7 节)

资助机制标准接收日期
R01, R21, R03Feb 5, Jun 5, Oct 5
K awards (K01, K08, K23, K99)Feb 12, Jun 12, Oct 12
R34, R61/R33Feb 16, Jun 16, Oct 16
F31, F32Apr 8, Aug 8, Dec 8

阶段 4:交付

  • 将 DOCX 保存至 <output-dir>/grants_<topic-slug>_<YYYY-MM-DD>.docx
  • 聊天摘要:文件路径 + 审计计数 + 计划层级 + 对目标研究所的判断
  • 验证:使用 python3 -c "import zipfile,sys; zipfile.ZipFile(sys.argv[1]).testzip()" <docx> 检查 zip 完整性(无输出 = 完整),然后确认必需的各个部分均已包含

工具

脚本作用
scripts/citation_tracker.py三项计数审计(Consensus 已发送/已显示/已引用 + RePORTER 项目/已引用),保存至 ~/.grants_sessions/<session>.json
scripts/fiscal_year_calculator.py当前财年 + 之前 3 年的时间窗口。在运行时计算,绝不硬编码。
scripts/mechanism_matcher.py职业阶段 × 研究范围 × 初步数据 → 资助机制推荐候选清单

参考资料

错误处理

失败情况行为
Consensus 触发速率限制等待 3s,重试一次并记录;如果仍然失败,则提醒研究人员
Consensus 对某个维度返回 0明确指出;绝不使用训练知识补充
检测到 Consensus 计划层级上限记录层级,在审计记录中注明,并告知研究人员
RePORTER POST 返回错误3s 后重试一次;如果仍然失败,则记录并继续
RePORTER 在窄范围查询中返回 <5 条结果记录情况;宽范围 OR 查询应予以弥补;指出结果数量偏少
NOSI 获取失败记录 [NOSI {n} — fetch failed],然后继续
连续 3 次工具调用失败停止,并提醒研究人员缺少哪些内容
DOCX 生成失败将原始数据保存为 JSON 备用文件,以免研究人员丢失工作成果

应拒绝的反模式

  • 并行调用 Consensus(会触发速率限制)
  • 使用 web_fetch 查询 RePORTER(仅支持 POST;web_fetch 使用 GET)
  • 硬编码财年值
  • 仅依据职业阶段推荐机制(还必须考虑范围)
  • 悄悄使用训练知识补充维度结果不足的部分
  • 跳过审计日志
  • 跳过项目官员推荐
  • 混淆“找到的论文”“展示的论文”和“引用的论文”
  • 获取失败时编造 NOSI 详情

版本: 1.0.0 源规范: megaprompts/08-grants-megaprompt.md(维护者本地草稿规范——已被 gitignore 排除,未包含在公开仓库中) 构建模式: Path B(直接转换)。与 pulse + litreview 并列的研究包。

评论

支持 Markdown