@companion-ai/feynman 0.5.60 → 0.5.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -59,7 +59,7 @@ Results are saved to `outputs/` (drafts to `papers/`). `/lit`, `/deepresearch`,
59
59
 
60
60
  ## Sources
61
61
 
62
- Feynman searches alphaXiv, Semantic Scholar, OpenAlex, arXiv, PubMed, Europe PMC, bioRxiv, medRxiv, Crossref, the web, and Hugging Face, and reads local PDFs and documents. Free `OPENALEX_API_KEY` and `SEMANTIC_SCHOLAR_API_KEY` keys avoid the shared rate limits. It runs on stock [Pi](https://github.com/earendil-works/pi) with four research agents: researcher, verifier, reviewer, and writer.
62
+ Feynman searches alphaXiv, Semantic Scholar, OpenAlex, arXiv, PubMed, Europe PMC, bioRxiv, medRxiv, Crossref, the web, and Hugging Face, and reads local PDFs and documents. Free `OPENALEX_API_KEY` and `SEMANTIC_SCHOLAR_API_KEY` keys avoid the shared rate limits. It runs on stock [Pi](https://github.com/earendil-works/pi) with four research agents: researcher, verifier, reviewer, and writer. Add your own tools, such as a Zotero library, with `feynman mcp add`.
63
63
 
64
64
  ## Telemetry
65
65
 
package/RELEASES.md CHANGED
@@ -6,6 +6,10 @@ GitHub release notes are generated from the matching `## vX.Y.Z` section in this
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## v0.5.61 - 2026-10-30
10
+
11
+ - **`feynman mcp` adds MCP servers.** Pi has built-in MCP support, but its docs say `pi mcp add`, and `feynman mcp list` used to be sent to the model as a chat question. `feynman mcp add|list|remove` now runs Pi's own command with Feynman's settings, saves servers in `~/.feynman/agent/mcp.json`, and every session loads them. For example, to use your Zotero library with [zotero-mcp](https://github.com/54yyyu/zotero-mcp): `feynman mcp add zotero --env ZOTERO_LOCAL=true -- zotero-mcp`. Pi's own output and help still say `pi mcp`; use `feynman mcp` instead.
12
+
9
13
  ## v0.5.60 - 2026-10-29
10
14
 
11
15
  - **pi-subagents 0.84.0.**
package/dist/cli.js CHANGED
@@ -461,6 +461,19 @@ async function runMain(input) {
461
461
  await runBundledAlphaCli(appRoot, alphaPassthrough.args, { cwd: alphaPassthrough.cwd });
462
462
  return;
463
463
  }
464
+ // Pi owns MCP server management; its flags (--env, --url, ...) would fail Feynman's own parser.
465
+ // Servers land in this Feynman home's agent directory, which every Feynman session loads.
466
+ if (rawArgs[0] === "mcp") {
467
+ const piOptions = {
468
+ appRoot,
469
+ workingDir: process.cwd(),
470
+ sessionDir: getDefaultSessionDir(feynmanHome),
471
+ feynmanAgentDir,
472
+ feynmanVersion,
473
+ };
474
+ process.exitCode = await runPi(piOptions, rawArgs, buildPiEnv(piOptions));
475
+ return;
476
+ }
464
477
  const parseCliArgs = () => parseArgs({
465
478
  args: process.argv.slice(2),
466
479
  allowPositionals: true,
@@ -138,6 +138,7 @@ export const cliCommandSections = [
138
138
  { usage: "feynman packages list", description: "Show core and optional Pi package presets." },
139
139
  { usage: "feynman packages install <preset>", description: "Install optional package presets on demand." },
140
140
  { usage: "feynman packages remove <preset>", description: "Remove an installed optional package preset." },
141
+ { usage: "feynman mcp <add|list|remove|...>", description: "Add and manage MCP servers, such as a Zotero library. Same as Pi's `mcp` command; servers are stored in ~/.feynman/agent/mcp.json." },
141
142
  { usage: "feynman search status", description: "Show Pi web-access status and config path." },
142
143
  { usage: "feynman search set <provider> [api-key]", description: "Set the web search provider and optionally save its API key." },
143
144
  { usage: "feynman search clear", description: "Reset web search provider to auto while preserving API keys." },
@@ -169,7 +170,7 @@ export const legacyFlags = [
169
170
  { usage: "--setup-preview", description: "Alias for `feynman setup preview`." },
170
171
  ];
171
172
 
172
- export const topLevelCommandNames = ["alpha", "chat", "doctor", "help", "model", "packages", "search", "setup", "status", "update"];
173
+ export const topLevelCommandNames = ["alpha", "chat", "doctor", "help", "mcp", "model", "packages", "search", "setup", "status", "update"];
173
174
 
174
175
  export function formatSlashUsage(command) {
175
176
  return `/${command.name}${command.args ? ` ${command.args}` : ""}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@companion-ai/feynman",
3
- "version": "0.5.60",
3
+ "version": "0.5.61",
4
4
  "description": "The open source AI research agent.",
5
5
  "license": "MIT",
6
6
  "type": "module",