Research Notebook MCP
Supports capturing sources from Google Scholar (and other highwire-style academic pages) by extracting bibliographic metadata - title, authors, date, journal/site, and DOI - from the citation_* meta tags when a URL is cited, so Scholar-indexed papers can be stored as structured, citable sources.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Research Notebook MCPcite this page and add a note about why it matters"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Research Notebook MCP
An MCP server that turns any BOSS agent into a research assistant. It gives your agent (Claude Code, Codex, Gemini, OpenCode - anything BOSS drives) a set of tools to capture cited sources, keep linked notes, and export a bibliography or a literature-review outline - all stored as plain files inside the project you are working in.
Point it at a project, browse and read as usual, and ask your agent to "cite
this page", "note down why this matters", or "draft an outline of what I have so
far". The notebook is a single human-readable notebook.json plus the Markdown
and BibTeX files it generates, so nothing is locked away.
Why this helps researchers
The expensive part of a literature review is not reading, it is keeping track: where a fact came from, which paper made which claim, and how a pile of notes turns into a structured draft. A general chat agent forgets all of this between turns. This server gives the agent a durable, structured memory built around the two things a researcher actually accumulates:
Sources you cite, with real bibliographic metadata (title, authors, date, journal or site, DOI) extracted automatically from the page.
Notes you write, each linked to the sources behind it.
From those it can produce a BibTeX file for LaTeX/Overleaf, an annotated bibliography, or a literature-review outline that groups your notes by theme and threads in the right citations.
Related MCP server: Tacitus MCP Server
The tools
Tool | What it does |
| Fetch a URL, extract its metadata, and save it as a source (de-duplicates by URL; adds your quote/tags to an existing source). |
| Record a source by hand (a book, or a page you cannot fetch). |
| Correct or enrich a source's fields. |
| Attach an excerpt (with page/location and your comment) to a source. |
| Write a Markdown research note linked to the sources it draws on. |
| Edit a note's title, content, tags, or links. |
| List sources or notes, optionally filtered by tag (or by linked source). |
| Show full detail of one item, including quotes. |
| Full-text search across sources and notes. |
| Delete an item (removing a source unlinks it from notes and reports which). |
| Render sources as BibTeX, optionally writing |
| Render a Markdown bibliography (plain or annotated), optionally writing |
| Assemble notes into a literature-review scaffold, optionally writing |
| Counts of sources, notes, quotes, tags, and types. |
Quick start
git clone https://github.com/Rushikeshiitb/boss-research-notebook-mcp.git
cd boss-research-notebook-mcp
npm install
npm run buildRun it directly (it speaks MCP over stdio):
RESEARCH_NOTEBOOK_DIR="$PWD/.research-notebook" node dist/index.jsOr install it on your PATH as research-notebook-mcp (the package declares a
bin):
npm install -g . # from the cloned repo
# now `research-notebook-mcp` launches the server over stdioCite keys
Sources get a human-friendly citation key in the usual author-year-word style,
for example vaswani2017attention. Collisions are disambiguated with a trailing
letter (smith2020a, smith2020b). You can refer to any source by either its
cite key or its internal id in every tool that takes a source.
Connecting it to BOSS
BOSS drives coding CLIs (Claude Code, Codex, Gemini, OpenCode), and each of them loads MCP servers from its own configuration - so you register this server with the CLI you use inside BOSS. It is a stdio server: the client launches it and talks over stdin/stdout.
Project-scoped config file (portable across clients). Drop a .mcp.json in
the root of the project you open in BOSS:
{
"mcpServers": {
"research-notebook": {
"command": "node",
"args": ["/absolute/path/to/boss-research-notebook-mcp/dist/index.js"],
"env": {
"RESEARCH_NOTEBOOK_DIR": "/absolute/path/to/your/project/.research-notebook",
"RESEARCH_NOTEBOOK_TITLE": "My Literature Review"
}
}
}
}Claude Code, one command (run it in your project directory):
claude mcp add research-notebook \
-e RESEARCH_NOTEBOOK_DIR="$PWD/.research-notebook" \
-- node /absolute/path/to/boss-research-notebook-mcp/dist/index.jsIf you installed it globally (npm install -g .), the command is simply
research-notebook-mcp in place of node .../dist/index.js.
Once connected, the 17 tools above appear to your agent alongside the rest of the tools it can call.
Configuration
Variable | Default | Purpose |
|
| Folder holding |
| (unset) | Sets the notebook title on first run, used in export headings. |
What gets written
Everything lives in the notebook directory:
notebook.json- the canonical store (sources and notes). Written atomically (unique temp file + rename) under an advisory lock.references.bib- BibTeX, when you askexport_bibtexto write.references.md- Markdown bibliography, when you askexport_markdownto write.outline.md- the literature-review scaffold, when you askgenerate_outlineto write.
Because it is all plain text in your project, it version-controls cleanly and you
can read or edit it without the server. Every source and note needs a non-empty
id; the server normalises array fields on load (missing ones become empty,
tags are lowercased and de-duplicated, unknown keys are kept) and refuses to
start if an entry cannot be read at all.
Editing it while the server runs: the server loads notebook.json once and
writes the whole document back on each change. If the file changes on disk
underneath it - you hand-edited it, or a second server shares the directory - the
next write is refused rather than silently overwriting your edit: the server
reloads the on-disk version and returns a conflict error asking you to re-apply
your change. A refused or failed write never corrupts the file or the in-memory
copy. Writes are serialized by a lock file, so two servers on one directory take
turns instead of clobbering each other.
Example workflow
cite_urlon a paper you are reading, with aquoteandtags: ["method"].add_notecapturing your take, linked to that source.Repeat while you read.
generate_outlineto get a themed draft with citations threaded in.export_bibtexto dropreferences.bibinto your LaTeX project.
Privacy and safety
The only outbound request the server makes is
cite_urlfetching a page. Because the agent, not you, picks that URL, the fetch is hardened against being pointed at your own network (SSRF):only
http/https;the hostname is resolved and every address it returns is checked - the request is refused if any is loopback, private, link-local (cloud metadata at
169.254.169.254), CGNAT or IPv6 loopback/ULA/link-local/mapped-private;the connection is pinned to the validated address, so a name cannot be re-resolved to a private address after the check (DNS-rebinding);
redirects are followed manually and each hop is re-validated, so a public page cannot bounce the fetch to an internal one;
the response body is capped (5 MiB) and the fetch gives up after 30 s. Nothing else leaves your machine.
All data is stored locally in the notebook directory. There is no external service and no telemetry.
A failed or blocked fetch is reported cleanly; you can always fall back to
add_sourceto record a citation by hand.
Development
npm run typecheck # tsc --noEmit
npm test # vitest: unit + in-memory MCP integration tests
npm run build # emit dist/The test suite covers metadata extraction (OpenGraph, Google Scholar / highwire
citation_* tags, JSON-LD, and degenerate pages), cite-key generation and
collisions, the notebook store and its persistence, BibTeX and Markdown
rendering, and a full end-to-end pass driving the real MCP server over an
in-memory transport with a stubbed fetch.
Layout
src/
types.ts data model (sources, notes, notebook)
metadata.ts pure HTML -> bibliographic metadata extraction
citekey.ts author-year-word cite keys, with de-duplication
notebook.ts the store: CRUD, search, atomic persistence
bibtex.ts BibTeX export
markdown.ts bibliography + literature-review outline
server.ts MCP tool registration (fetch and store injected)
index.ts stdio entry pointLicense
Apache-2.0, matching the BOSS Console core.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal context for every AI: search, read, and write back to your private Markdown library of articles, threads, PDFs, notes, and captured ChatGPT/Claude/Gemini/Grok conversations. OAuth 2.1 paste-and-authorize or revocable tiered Agent keys (read_only / edit / full). Every agent edit is versioned and revertible.
AI research library. Save, organise and reuse notes and webpages as clean markdown context.
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables searching and reading full text of papers in a Zotero library by converting PDF attachments to Markdown and exposing a full-text search index to LLM tools.MIT
- AlicenseNot gradedqualityAmaintenanceTurns a folder of Markdown notes into an agent-native knowledge base, providing long-term memory with provenance, token-budgeted retrieval, and safe write-back with versioning.MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to maintain a folder-scoped research wiki for scientific papers by providing MCP tools for full-text search, reading, note creation, tagging, logging, and PDF ingestion, all without requiring its own LLM API key.Apache 2.0
- AlicenseBqualityCmaintenanceEnables local agents to search and retrieve cited evidence from PDFs and Markdown notes, including page-specific passages and rendered page images.6GPL 3.0