paper-handler-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PAPER_HANDLER_CONFIG | No | Path to an explicit paper-handler.toml configuration file. Use this when launching the MCP server outside a corpus root. | |
| PAPER_HANDLER_ENGINE | No | Rendering engine override: typst, latex, or both. | |
| PAPER_HANDLER_PAPERS_DIR | No | Override for the corpus papers directory. | |
| PAPER_HANDLER_TEMPLATES_DIR | No | Override for the corpus templates directory. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| paper_bib_checkC | Check references.bib for structural problems (brace balance, duplicate or empty keys). |
| paper_bib_initC | Create a starter references.bib in a paper. |
| paper_cite_keyA | Resolve a DOI/arXiv id/title from the attached handoff to its BibTeX key. Use this before citing a record whose key you do not know. |
| paper_close_corpusA | Forget the session corpus and return to cwd/config discovery. |
| paper_contextA | A compact context pack for writing one paper: front matter summary, outline, citation keys, current diagnostics and house style. This is the best first call; it is bounded by |
| paper_doctorA | Probe the render tools and render a minimal document; ok means a render actually succeeded, not just that quarto exists. |
| paper_initC | Initialise a paper corpus (config, _quarto.yml, papers/ directory). |
| paper_lintB | Structural and style diagnostics: placeholders, heading hierarchy, missing sections, long paragraphs/sentences, abstract length, undefined citations, readability. Returns at most |
| paper_listA | List the papers in the corpus with title, status, engine, render state and word count. Start here; it is much cheaper than reading any paper. |
| paper_meta_getB | Read one front-matter key, or the whole front matter when key is omitted. |
| paper_meta_setB | Set a front-matter key. The value is parsed as YAML, so 2026 becomes a number and '[a, b]' a list. |
| paper_newB | Scaffold a new paper from a template. Returns the entry path; then write it section by section with paper_write_section. |
| paper_open_corpusA | Pin a corpus for this MCP session (a corpus root or a papers/ directory). Use it when the server was launched outside the corpus. |
| paper_outlineB | The heading tree with per-section word counts, plus missing standard sections. Cheaper than reading the paper. |
| paper_read_sectionB | Read exactly one section (heading plus body), truncated to |
| paper_renderB | Render one paper (or the whole corpus with all=true) to PDF. Returns the output path, size and, on failure, a short stderr tail — not the full Quarto log. |
| paper_research_contextC | Compact evidence brief for an imported paper: counts, screening, top core papers and citation keys. Bounded by |
| paper_research_importB | Scaffold a paper from a researcher-python handoff bundle and wire its bibliographies. The manual references.bib is never overwritten. |
| paper_research_prismaC | Insert or replace a Quarto appendix that includes the generated PRISMA screening flow (research/prisma.md). |
| paper_research_syncB | Refresh a paper's generated research/ files from a newer handoff bundle. Manuscript text and the manual references.bib are untouched. |
| paper_templatesB | List built-in and corpus-local paper templates. |
| paper_write_abstractA | Set the front-matter abstract. Keeps the abstract out of the section flow; returns its word count and any diagnostics. |
| paper_write_sectionB | Replace, append to, or insert a section. Content is markdown without the heading. Returns a small receipt and the updated outline — not the whole document. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| write_paper | Draft or complete a paper section by section within a token budget. |
| revise_paper | Improve clarity and evidence in an existing paper. |
| review_paper | Review a paper as a critical reader and report concrete fixes. |
| research_to_paper | Run the researcher handoff import, then write the paper section by section. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Academic style guide | Short house style for structure, prose and evidence. |
| Paper corpus index | Every paper with title, status, engine and word count. |
| Paper templates | Built-in and corpus-local templates. |
TDQS
Scored across 23 tools
Most tools have clearly distinct purposes: corpus setup, paper scaffolding, section writing, metadata, diagnostics, rendering, and research import are well separated. A few pairs could be confused at first glance, especially paper_context vs paper_research_context and paper_lint vs paper_bib_check, but their descriptions clarify the boundaries.
All names use snake_case and share the paper_ prefix, with a clear paper_research_* subfamily for research tools. The internal pattern is not perfectly uniform (paper_read_section vs paper_bib_check vs paper_meta_get), but it remains predictable and readable.
With 23 tools, the server is on the heavy side for a paper-handling workflow and includes several specialized diagnostic and research-import operations. The tools are mostly justified by a broad domain, but the surface is large enough to feel borderline rather than tightly scoped.
The surface covers the paper lifecycle well: corpus setup, templates, scaffolding, metadata, section reading/writing, abstract writing, linting, bibliography handling, rendering, and research import/sync. Minor gaps remain, such as explicit paper deletion/renaming or section deletion, but core workflows are well supported.