Q1 Reviewer Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Q1 Reviewer Mcp (Agent Skill) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<p align="center"> <img src="logo-q1-reviewer-mcp.png" alt="Q1-Reviewer-MCP Logo" width="200"/> </p>
<h1 align="center">Q1-Reviewer-MCP</h1>
<p align="center"> <em>"Get rejected by us before you get rejected by them."</em> </p>
<p align="center"> <a href="https://pypi.org/project/q1-reviewer-mcp/"><img src="https://img.shields.io/pypi/v/q1-reviewer-mcp?style=for-the-badge&color=1F3864&label=PyPI" alt="PyPI Version"></a> <a href="https://python.org"><img src="https://img.shields.io/pypi/pyversions/q1-reviewer-mcp?style=for-the-badge&color=375623" alt="Python"></a> <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-red.svg?style=for-the-badge" alt="License"></a> <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-Compatible-blue?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiIvPjwvc3ZnPg==" alt="MCP"></a> </p>
<p align="center"> <strong>An AI-powered MCP server that simulates a ruthless Q1 journal Reviewer #2 — so your manuscript gets torn apart before it ever reaches the real one.</strong> </p>
Q1-Reviewer-MCP is a Model Context Protocol (MCP) server that turns Claude into a merciless academic peer reviewer. It reads your .docx manuscript, applies a battle-tested Q1 Red Flag Matrix, and produces a professionally formatted .docx decision letter — complete with color-coded severity ratings.
Think of it as having a permanently angry Reviewer #2 living inside your AI assistant, catching the exact issues that get manuscripts rejected from Nature, Cell, Plant Physiology, and other Q1 journals.
Academic authors routinely receive "Major Revision" or "Reject" decisions due to preventable issues:
These issues are invisible to the author but predictable to an experienced reviewer. Q1-Reviewer catches them before submission.
<table> <tr> <td width="50%">
Embedded review criteria covering:
</td> <td width="50%">
Decision letters that look like real journal reviews:
</td> </tr> <tr> <td>
Handles any manuscript format:
</td> <td>
Designed for scientific manuscripts:
</td> </tr> </table>
Q1-Reviewer-MCP follows the Tool-as-Data-Fetcher pattern — the MCP server is purely a filesystem operator. All analytical intelligence lives in the host LLM (Claude), guided by the Q1 Red Flag Matrix embedded in tool descriptions.
┌─────────────────────────────────────────────────────────────┐
│ HOST LLM (Claude) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Q1 Red Flag Matrix │ │
│ │ (Embedded in tool descriptions — auto-injected) │ │
│ └─────────────────────────────────────────────────────┘ │
│ Reasons, analyzes, generates critique │
└──────────────────────────┬──────────────────────────────────┘
│ MCP Protocol (stdio)
┌──────────────────────────┼──────────────────────────────────┐
│ Q1-Reviewer-MCP Server (Python) │
│ ┌──────────────────┐ ┌───────────────────────────────┐ │
│ │ parse_manuscript_ │ │ generate_docx_report() │ │
│ │ sections() │ │ Writes formatted .docx │ │
│ │ Reads .docx │ │ decision letter to disk │ │
│ └──────────────────┘ └───────────────────────────────┘ │
│ │
│ 📁 manuscript_v1.docx → 📄 Q1_Review_Report.docx │
└──────────────────────────────────────────────────────────────┘Why this design?
pip install q1-reviewer-mcpgit clone https://github.com/ZaEyAsa/Q1-reviewer-mcp.git
cd Q1-reviewer-mcp
pip install -e .Add to your Claude Desktop config file:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"q1-reviewer": {
"command": "python",
"args": ["-m", "q1_reviewer.server"]
}
}
}Note: Ifpythonisn't in your PATH, use the full path (e.g.,"C:\\Python313\\python.exe"on Windows).
Add the same configuration in Cursor Settings → MCP Servers.
After restarting Claude Desktop, you should see three tools available:
parse_manuscript_sections — reads your manuscriptgenerate_docx_report — writes the review reportcompare_revisions — compares V1 review with V2 manuscript (Phase 3)Please review my manuscript at:
C:/Users/me/Desktop/my_paper_v1.docx
Save the review report to the same directory..docx decision letterA professional .docx report containing:
| Section | Description |
|---|---|
| Editor Decision | Overall verdict (Accept / Minor Revision / Major Revision / Reject) |
| Critical Concerns | 🔴 Issues that would likely cause immediate rejection |
| Major Concerns | 🟠 Significant issues requiring substantial revision |
| Minor Concerns | Issues that should be addressed but aren't dealbreakers |
| Recommended Revisions | Numbered action items for the author |
| Positive Aspects | 🟢 Strengths of the manuscript (yes, we're fair too) |
Each issue follows the structured format:
issue_1: Pervasive Overclaiming
>
THE FLAW: The manuscript uses "proved" and "definitively demonstrated" in the Discussion, which are absolute claims inappropriate for biological research.
>
THE Q1 STANDARD: Q1 journals expect hedged language that reflects the inherent uncertainty of experimental biology. Only mathematical proofs allow "prove."
>
THE DIRECTION: Replace absolute claims with "suggest", "indicate", or "support the hypothesis that."
The review engine applies these rule categories:
<details> <summary><strong>🔴 Overclaiming Rules</strong> (click to expand)</summary>
</details>
<details> <summary><strong>📝 Introduction Audit Rules</strong></summary>
</details>
<details> <summary><strong>🔬 Methodology Audit Rules</strong></summary>
</details>
<details> <summary><strong>💬 Discussion Audit Rules</strong></summary>
</details>
q1-reviewer-mcp/
├── src/q1_reviewer/
│ ├── server.py # MCP server entry point
│ ├── tools/
│ │ ├── parse.py # 📖 parse_manuscript_sections()
│ │ ├── report.py # 📝 generate_docx_report()
│ │ └── compare.py # 🔄 compare_revisions() [Phase 3]
│ ├── formatting/
│ │ └── docx_builder.py # .docx formatting engine
│ └── utils/
│ ├── section_splitter.py # 3-tier section detection
│ └── lang_check.py # Language detection
├── tests/
│ ├── test_parse.py # 34 unit tests
│ ├── test_report.py # 15 unit tests
│ ├── test_e2e.py # End-to-end pipeline test
│ └── fixtures/ # Test manuscripts
├── config/
│ └── claude_desktop_config.json # Example config
├── logo-q1-reviewer-mcp.png # Project logo
├── pyproject.toml
├── requirements.txt
├── LICENSE
└── CHANGELOG.md# Run all tests (49 tests)
python -m pytest tests/ -v
# Run specific modules
python -m pytest tests/test_parse.py -v # Section parsing tests
python -m pytest tests/test_report.py -v # Report generation tests
# Run end-to-end pipeline test
python tests/test_e2e.py| Phase | Name | Status | Description |
|---|---|---|---|
| 1 | The Overclaim Detector | ✅ Complete | MVP: parse .docx, apply Red Flag Matrix, generate .docx report |
| 2 | The Full Reviewer | 🔜 Planned | Full-section analysis (Intro, Methods, Results) with per-issue severity scoring |
| 3 | The Editor | 📋 Designed | V1↔V2 revision comparison with LLM-as-a-Judge scoring |
| Component | Technology |
|---|---|
| Language | Python 3.10+ |
| MCP Framework | Official MCP Python SDK (FastMCP) |
| Document I/O | python-docx |
| Language Detection | langdetect |
| Transport | stdio |
| Host Client | Claude Desktop / Cursor |
Contributions are welcome! Please:
git checkout -b feature/amazing-feature)python -m pytest tests/ -v)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License — see the LICENSE file for details.
ZaEyAsa — GitHub
<p align="center"> <em>Because every manuscript deserves a Reviewer #2 before it meets the real one.</em> </p>
<p align="center"> <sub>Built with ❤️ for the academic community</sub> </p>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.