Repository navigation
Releases: melhzy/pubmed-stream
Release list
pubmed-stream 0.4.4
Fixes from a review of 0.4.3. Registering the server by hand now covers every folder, with claude mcp add --scope user; pubmed-stream init decides whether the Claude Code plugin is on exactly as Claude Code does; and tutorial 7's new option C connects the chat of the Claude desktop app.
pubmed-stream is also listed in the official MCP Registry as io.github.melhzy/pubmed-stream.
Fixed
- The docs and
pubmed-stream mcp --helpregister the server by hand withclaude mcp add --scope user; without--scope user, Claude Code loads it only in the folder where you ran the command. initdecides whether the Claude Code plugin is on as Claude Code does, one plugin id at a time across the user, project and local settings: a disabled copy of your own no longer hides a copy synced from claude.ai, and a synced copy counts only where Claude Code would load it, soinitno longer removes a folder's server in a session that signs in with an API key, a token, Bedrock or Vertex.- The server's instructions and
AGENTS.mdno longer tell the assistant to prefer pubmed-stream over other PubMed tools, as Anthropic's directory policy asks; they say what it does differently, and the researcher chooses. - The chat of the Claude desktop app can use pubmed-stream once the server is added to the app's configuration: tutorial 7's new option C shows how, and the docs no longer say that the chat cannot.
- Troubleshooting checks that the plugin is installed and enabled, not only listed, before blaming uv, and the plugin's README gives the install command for a terminal too.
Upgrade: pip install --upgrade pubmed-stream. Plugin users get it with their next plugin update.
pubmed-stream 0.4.3
Added
-
A listing in the official MCP Registry, which other MCP directories copy:
server.jsondescribes the server as the PyPI package run withuvxand the argumentmcp, with the optionalNCBI_API_KEYandNCBI_EMAIL, and the README carries the hidden linemcp-name: io.github.melhzy/pubmed-streamby which the registry checks that the PyPI package belongs to it. The release steps in the README end withmcp-publisher publish, and the tests keepserver.json's versions and name in step with the package. -
The MCP server reports progress. When the assistant asks for it,
download,fetch_abstractsandbuild_knowledge_graphsend MCP progress notifications while they run: the articles downloaded so far, the abstracts fetched, and the search, key paper or build the knowledge graph is at.search_and_download,fetch_abstractsandcreate_kgtake aprogresscallback, called with(done, total, message), for the same.
Fixed
- On Windows, the console window that a desktop app's start opens for the MCP server no longer stays on screen: the server hides it as soon as it runs, so it only flashes. A desktop app such as Claude's or ChatGPT's has no console, so Windows gives the server a new one, where a terminal's server shares the terminal's console; the window is hidden only when every process attached to the console is uv, a launcher or Python, so a terminal is never touched (
hide_own_console). - Cowork can start the plugin's server. The Claude Code manifest gives the NCBI API key option an empty default: Cowork ignores an MCP server that references an option without one, and never asks for values, where Claude Code asks at install. The README, the plugin's README and tutorial 7 say how the Claude desktop app reaches pubmed-stream: its Code tab has the plugin installed from the terminal; Cowork needs the plugin on the claude.ai account, added from Customize > Plugins with
melhzy/pubmed-streamas a marketplace; chat cannot start a program on the computer.initcounts a plugin synced from the account, which Claude Code loads with no settings entry, so it writes no second server for the folder. The Codex CLI calls the skill as$pubmed-stream:literature-search, as the docs now say.
Changed
-
PyPI describes pubmed-stream as what it now is, literature searches in PubMed and PubMed Central for researchers and their AI assistants, with an MCP server and a plugin for Claude Code and Codex, and its keywords and classifiers add MCP, the assistants, Ollama and artificial intelligence, so searches for them find it.
-
The MCP server's instructions, which every assistant receives on connecting, cover all nine tools and the order to use them in, ask for each search to be reported with its count, and say to prefer pubmed-stream's tools to other PubMed tools the assistant may have, since pubmed-stream saves every article it reads;
AGENTS.mdand the plugin's skill say the same. -
The plugin has a README of its own, as Anthropic's plugin directory requires, saying what it runs, sends and saves. The README and tutorial 7 say what to type to call pubmed-stream in Claude Code, the Codex app and the Codex CLI, that Claude's chat cannot use it, what to do when the plugin's first start takes too long, and what to do when Claude Code reaches for Anthropic's own PubMed connector instead.
-
The plugin's Codex settings moved from
.mcp.jsonto.codex-plugin/mcp.jsonand give the server 60 seconds to start and 600 per call, instead of Codex's 10 and 60: the first start downloads pubmed-stream, and a large download or a knowledge graph takes minutes. Claude Code reads the server from.claude-plugin/plugin.json, as before. -
The README, tutorial 7 and the assistant's instructions explain how pubmed-stream connects to Claude Code and Codex: the MCP server is part of the Python library, started as
pubmed-stream mcp, and the plugin,initandclaude mcp addorcodex mcp addonly tell the assistant how to start it. The README has a new title, a section on the three ways to connect with the nine tools listed, and installs the Codex plugin from the terminal withcodex plugin add pubmed-stream@pubmed-stream. When the tools are missing,AGENTS.mdand the plugin's skill tell the assistant what to ask the researcher to run, andpubmed-stream mcp --helplists all nine tools and the three ways. Tutorial 7 adds MCP to its list of tools, explains the connection in section 3, shows how to update, list and remove the plugin, describes what the plugin contains, and troubleshoots either way of connecting; the glossary has entries for plugin, skill and uv, and its MCP entry links to the renamed section; the setup, troubleshooting and Obsidian guides and the tutorials index name the plugin besideinit.
Upgrade: pip install --upgrade pubmed-stream
pubmed-stream 0.4.2
pubmed-stream now works as a plugin for Claude Code and Codex, so your assistant has its tools and its research rules in every folder, and it asks for your free NCBI API key once, which makes downloads about three times faster.
claude plugin install pubmed-stream --marketplace melhzy/pubmed-stream # Claude Code
codex plugin marketplace add melhzy/pubmed-stream # Codex: then /plugins, Install plugin
pubmed-stream init --ncbi-api-key YOUR-KEY # save your NCBI API key for every folderThe plugin needs uv, which fetches pubmed-stream for it. Tutorial 7 shows both ways to connect your assistant, step by step. The Codex plugin follows OpenAI's documentation but has not yet been tried in Codex itself; if it misbehaves, please open an issue.
This release also makes pubmed_stream.impact, which tutorial 8 imports, part of the package on PyPI.
Added
-
pubmed-stream as a plugin for Claude Code and Codex, in
plugins/pubmed-stream, with marketplaces at.claude-plugin/marketplace.jsonand.agents/plugins/marketplace.json:claude plugin install pubmed-stream --marketplace melhzy/pubmed-stream, orcodex plugin marketplace add melhzy/pubmed-streamand then Install plugin under/plugins. It gives the assistant the MCP tools in every folder, running the pubmed-stream release of the plugin's own version throughuvx, and the instructions ofAGENTS.mdas the skillliterature-search. Where the plugin is installed,initleaves the server out of the folder, and removes one it added earlier, so the tools are not listed twice. Tests keep the plugin's version, the release it runs and the skill in step with the package, and makeAGENTS.mdname every tool. -
A
studies/folder for research done with pubmed-stream, kept with its frozen data so its numbers can be checked and the study rerun. The first,studies/abeta56_retraction_impact, continues tutorial 8: the 1,240 papers citing the retracted 2006 Nature paper on Aβ*56 and the 44,957 papers citing those, frozen as tables with the kind of citation and the citing sentence; a sourced account of what the paper claimed, exactly what was wrong and what the retraction does not overturn; infini-gram counts of the claim and its correction in Dolma and The Pile; twelve probe questions for language models with a runner for Ollama models and the installed assistants; and a web page (index.html, a React application with its stylesheet and a data file built from the study's files) with the citing papers searchable by the sentence in which they cite the paper. -
A place for the NCBI API key that works everywhere.
pubmed-stream init --ncbi-api-key KEYsaves it in~/.pubmed-stream.json, which the command line and the MCP server read in every folder whenNCBI_API_KEYis unset, andinitasks for it in a terminal while none is configured. The Claude Code plugin asks for it at install and passes it to the server;initlistsNCBI_API_KEYamong the variables Codex forwards to the server. The server tells the assistant when none is configured, and the instructions say what to tell the researcher, and never to ask for the key in the conversation.initchecks a key with NCBI before saving it, remembers a skipped question so it asks once, and ends with the key's status; a configured key NCBI rejects is dropped with a warning, so requests continue without it instead of all failing with400 API key invalid; after a download that a key would have shortened by ten seconds or more, the command line and thedownloadtool say by how much; the MCP server saves the Claude Code plugin's key for the command line too, when none is saved, after a tool call in which NCBI accepted it, and tells the assistant once when a configured key was rejected. The settings files live inpubmed_stream.settings.
Changed
pyproject.tomltakes the version frompubmed_stream/__init__.py, one place fewer to change at a release.AGENTS.mdnamesexport_citations, says when to export, and says what missing tools mean with the plugin.- The Aβ*56 study page is easier to find. The README, the studies index and the study's own README link to it at the top, the study README with a screenshot; the documentation site names it in the navigation and opens the study's About page with a button to it; the page's header links back to the site, the About page and the folder on GitHub; and the page carries a description, a preview image and an icon for links shared elsewhere.
- Tutorial 8's helpers are now part of pubmed-stream, as
pubmed_stream.impact:from pubmed_stream import impactgives the citing papers of many papers at once, counts by year and flag, the sentences in which full texts or Semantic Scholar cite a paper, their classification, and the annotation of a knowledge graph, without the tutorials folder on the path. The notebook and the tests import the module from the package;tutorials/citation_impact.pyremains as a shim that imports everything from it, so older copies of the notebook still run.
Upgrade: pip install --upgrade pubmed-stream
pubmed-stream 0.4.1
pubmed-stream review can now have Claude Code, Codex or Gemini CLI summarize the abstracts, not only a model running in Ollama on your own computer. One option chooses who summarizes:
pubmed-stream review "Is the gut microbiota linked to frailty?" --limit 10 --model qwen3.5:4b --vault kg_gut_microbiome_frailty # Ollama: nothing leaves your computer
pubmed-stream review "Is the gut microbiota linked to frailty?" --limit 10 --model claude --vault kg_gut_microbiome_frailty # Claude Code
pubmed-stream review "Is the gut microbiota linked to frailty?" --limit 10 --model codex --vault kg_gut_microbiome_frailty # Codex
pubmed-stream review "Is the gut microbiota linked to frailty?" --limit 10 --model gemini --vault kg_gut_microbiome_frailty # Gemini CLIAdded
review --model claude,codexorgeminiuses the AI assistant installed and signed in on your computer, optionally with its own model, as inclaude:opus. The assistant runs in an empty folder with its tools turned off, so it only writes summaries, up to four abstracts at once. Everything else works as with Ollama: one abstract at a time without the question, PubMed IDs attached by pubmed-stream, the number check,--answerand--vault.init --review-modelaccepts them too.- Each note says which assistant wrote it and which company received the abstracts (Anthropic, OpenAI or Google).
Changed
- Review notes in a knowledge graph are named after the question, the date and the model, so reviews of one question by several models no longer replace each other. Notes by an assistant are tagged
pubmed/assistant-review; the home note lists all reviews under "Reviews". reviewexits with 2 when any model fails, not only Ollama.ModelErroris the common base ofOllamaErrorand the newAssistantError.
On tutorial 7's seven Parkinson's papers, Claude Code's summaries were all accurate in 12 seconds, including a review of eleven studies that Llama 3.2 1B called a trial.
Upgrade: pip install --upgrade pubmed-stream
0.4.0 - 2026-10-19
0.3.2
Added
- A GitHub Actions workflow that runs the tests on Python 3.8 to 3.13, on Linux and Windows, and the linter on every push and pull request. The linter's rules are now set in
pyproject.toml, soruff check .checks the same rules everywhere. - The README explains how to use any Ollama model with
pubmed-stream review, with suggested models for each size of computer, and its quick start includes a local review.
Changed
pubmed-stream reviewno longer shows the question to the model while it summarizes each abstract. Given the question, small models opened summaries with it restated as a finding ("The gut microbiota is linked to frailty.") even for papers that did not test it. Summaries now start with the kind of study and what it studied. The question is still used for--answer.- Tutorial 7 reports how the local model did with the new summaries, with a new screenshot, and that its summaries can change after Ollama reloads the model.
Fixed
- On Windows with Python 3.8 or 3.9,
pubmed-stream kgandpubmed-stream vaultgiven a folder that did not exist yet kept a relative path for it. - Tutorial 8's helpers failed on Python 3.8 and 3.9 when writing notes and the table of citing papers.
pubmed-stream reviewwith a model that thinks before answering, such as Qwen3, spent the summary's length limit on thinking and cut the summary short. Thinking is now turned off.- A summary cut at its length limit was flagged for the number in its own "[cut at 300 tokens]" note.
- Removed unused imports from tutorials 3 and 6.