Skip to content

docs(mcp): point users at the official everos-mcp server - #484

Merged
dani1005 merged 3 commits into
mainfrom
docs/mcp-client-guide
Oct 12, 2026
Merged

dani1005 merged 3 commits into
mainfrom
docs/mcp-client-guide

Conversation

@gloryfromca

Copy link
Copy Markdown
Member

Summary

EverMind now ships an official MCP server, everos-mcp, which works against a self-hosted EverOS through EVEROS_BASE_URL. This repo did not tell anyone: the README still pointed at the community evermemos-mcp project (Cloud-only), and nothing in the CLI hinted that MCP clients can connect.

  • New docs/mcp.md: prerequisites, uvx everos-mcp setup for Claude Code / Codex / JSON-configured hosts, the seven tools and the endpoints they call, and the behaviour specific to a self-hosted server (no session delete yet, ~1 s index lag after saving, trajectory quality gate).
  • docs/index.md lists the page; README and docs/use-cases.md swap the community card for the official package.
  • everos init ends with a third step pointing at the guide; everos server start logs the uvx everos-mcp line with the right EVEROS_BASE_URL.

Refs #483 for the missing delete endpoint.

Area

  • Architecture method
  • Benchmark
  • Use case
  • Documentation
  • Developer experience
  • CI, build, or release

Verification

make lint            # ruff, import-linter, datetime discipline, openapi check — OK
make test            # 2618 passed, 4 skipped
make docs-check      # OK
make check-assets    # OK
make check-file-sizes
make check-commits RANGE=origin/main..HEAD
everos init --root <tmp>              # prints the new step 3
everos server start --root <tmp>      # logs "MCP clients: uvx everos-mcp with EVEROS_BASE_URL=http://127.0.0.1:8000 (docs/mcp.md)"

# Guide contents checked against a live run (2026-10-10, macOS):
# everos server start on a temp root + `uvx everos-mcp` over stdio via the
# mcp 1.x client -> all seven tools answered; forget_session reported the
# missing delete endpoint instead of failing; search/list found the memory
# ~0.5 s after add_memory(wait=true) returned.

make integration was not run: the change is documentation plus two informational CLI lines.

Checklist

  • I kept the change scoped to the relevant area.
  • I am opening this from a separate branch, not pushing directly to main.
  • I updated docs, examples, or setup notes when behavior changed.
  • I added or updated tests when the change affects behavior. (The two new CLI lines are informational; the existing everos init output test still passes and no new assertion was added.)
  • I did not commit secrets, .env files, dependency folders, or generated output.
  • Active relative links in Markdown files resolve.

Notes for Reviewers

  • make check-cjk reports 10 pre-existing hits (README badge lines, use-case samples, a TUI demo string); none are in files this PR touches.
  • The README card reuses the banner from the EverOS-MCP repository README.

🤖 Generated with Claude Code

Add docs/mcp.md with the client setup for Claude Code, Codex and
JSON-configured hosts against a self-hosted server, list it in the
docs index, and replace the community evermemos-mcp card in README
and docs/use-cases.md with the official package. `everos init` now
ends with a pointer to the guide and `everos server start` logs the
`uvx everos-mcp` line to use.

Verified against a local server: all seven everos-mcp tools answer.
The guide records the self-hosted limitations: no session-delete
endpoint yet (#483) and about a second of index lag after saving.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@dani1005 dani1005 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this fills a real gap: the repo never mentioned the official MCP server, and the README still pointed at the Cloud-only community project. The guide itself reads well.

Three things I'd fix before merging, because they mislead users directly (details inline):

  1. The startup hint builds EVEROS_BASE_URL from the bind host, so 0.0.0.0 and :: produce URLs clients can't use.
  2. docs/mcp.md is referenced as a relative path from the CLI. The wheel only packages src/everos, so pip/uvx installs don't have the file.
  3. The tool table names POST /api/v2/memory/delete, which doesn't exist on this server.

Smaller suggestions:

  • The MCP hint is logged before uvicorn binds, so on "address already in use" the log first says "connect here" and then reports the failure. Emitting it after a successful bind (lifespan/startup) avoids that.
  • Neither the new init step nor the server hint has a test. An assertion on the hint text, plus the URL it renders for a non-default host and port, would have caught (1).
  • The MCP card is now duplicated word for word in README.md and docs/use-cases.md, differing only in the link path. The old cards had already drifted ("With" vs "with"), so it may be worth keeping one source.

bootstrap_logger = logging.getLogger("everos.cli.server")
bootstrap_logger.info("starting everos on %s:%d", host_resolved, port_resolved)
bootstrap_logger.info(
"MCP clients: uvx everos-mcp with EVEROS_BASE_URL=http://%s:%d (docs/mcp.md)",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

host_resolved is the bind address, not a client address:

  • --host 0.0.0.0 logs EVEROS_BASE_URL=http://0.0.0.0:8000. That isn't a valid target on Windows or from another machine, which is the usual reason to bind 0.0.0.0.
  • --host :: logs http://:::8000, which isn't a valid URL.

Suggest mapping wildcard binds (0.0.0.0, ::) to 127.0.0.1 (or a <host> placeholder) and bracketing IPv6 literals. Also (docs/mcp.md) should be the absolute GitHub URL, same as in init_cmd.py.

root_flag = f" --root {resolved}" if root else ""
typer.echo(f" 2. Run: everos server start{root_flag}")
typer.echo(
" 3. Connect an MCP client (Claude Code, Codex, Cursor): see docs/mcp.md"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After pip install everos / uvx everos there's no docs/ on disk: the wheel only packages src/everos (pyproject.toml, [tool.hatch.build.targets.wheel]). The path is also resolved against whatever directory the user is in. Please use https://github.com/EverMind-AI/EverOS/blob/main/docs/mcp.md.

Comment thread docs/mcp.md Outdated
| `list_memories` | Chronological, paginated browsing | `POST /api/v2/memory/get` |
| `record_trajectory` | Records how a task was solved so EverOS can distill cases and skills | `POST /api/v2/memory/add` + `flush` |
| `recall_agent_experience` | Finds distilled cases and skills relevant to the task at hand | `POST /api/v2/memory/search` (agent owner) |
| `forget_session` | Deletes what this connection stored | `POST /api/v2/memory/delete` — see below |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This server has no /api/v2/memory/delete route; the API mounts add/flush/search/get plus the ome, knowledge and cascade routers. Anyone using this column as an API reference gets a 404. Suggest "not available on self-hosted (#483)" here instead of naming an endpoint.

Comment thread docs/mcp.md Outdated
- **`forget_session` is not available yet.** Self-hosted EverOS has no session-scoped delete
endpoint; the tool reports this instead of failing. Memories are Markdown files under the
memory root (`~/.everos/` by default) — delete them there.
- **New memories are searchable about a second after saving.** `add_memory` returns once

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same claim as EverMind-AI/EverOS-MCP#3, which I've suggested changing: either wait=true waits for indexing, or one conservative latency statement is used everywhere (search_memory currently says "the last minute"). Worth keeping this line in sync with whatever lands there, or phrasing it generically ("shortly after saving; list_memories shows new entries sooner").

Comment thread docs/mcp.md Outdated

## What the assistant gets

| Tool | What it does | EverOS endpoint |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional: this table and the self-hosted behaviour section mirror the everos-mcp README, but everos-mcp releases on its own schedule, so they'll go stale silently when a tool is added or renamed. Consider keeping only what's EverOS-specific (prerequisites, base URL, self-hosted gaps) and linking to the everos-mcp README for the tool list.

- The server start hint built EVEROS_BASE_URL from the bind address, so
  `--host 0.0.0.0` printed a URL no client can dial and `--host ::` an
  invalid one. `mcp_base_url()` maps wildcard binds to 127.0.0.1 and
  brackets IPv6 literals; the hint is worded "once up" because it is
  logged before uvicorn binds.
- Both CLI hints linked `docs/mcp.md` by relative path, which does not
  exist in a pip / uvx install (the wheel ships only src/everos). They
  now use the GitHub URL.
- docs/mcp.md no longer names `POST /api/v2/memory/delete`, which this
  server does not have; the tool table is replaced by a link to the
  everos-mcp README so it cannot go stale, and the latency note is
  phrased without a number.
- Tests cover the URL mapping, the logged hint and the init step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@gloryfromca

Copy link
Copy Markdown
Member Author

Thanks — all three must-fix items are in the latest commit, plus most of the smaller ones:

  1. Client URL: new mcp_base_url(host, port) maps wildcard binds (0.0.0.0, ::) to 127.0.0.1 and brackets IPv6 literals; the hint prints that instead of the bind address. Parametrized test covers the five cases from your comment.
  2. Guide path: both hints now use https://github.com/EverMind-AI/EverOS/blob/main/docs/mcp.md (shared MCP_GUIDE_URL).
  3. Nonexistent endpoint: the tool table is gone from docs/mcp.md; the page now lists the tool names, links the everos-mcp README for the tool list and protocol, and keeps only the self-hosted specifics. forget_session points at memory: add POST /api/v2/memory/delete so everos-mcp forget_session works on self-hosted servers #483 instead of naming a route.

Smaller ones:

  • Latency wording: now "shortly after saving", no number, matching the direction in EverOS-MCP#3.
  • Tests: added for the URL mapping, the logged hint (captured on the everos.cli.server logger), and the init step.
  • Hint before bind: kept it before uvicorn.run, reworded as "once up, …". uvicorn's lifespan startup also runs before the sockets bind, so moving it there would not change the ordering on "address already in use"; the only post-bind hook is uvicorn's own "running on" log.
  • README / use-cases duplication: left as is — every card in README mirrors docs/use-cases.md today, so a single source would be a separate change across all of them.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@dani1005

Copy link
Copy Markdown
Member

Thanks, all addressed. Agreed on the hint placement and on leaving the card duplication for a separate change. I pushed one small doc fix (5c598ca): the tool paragraph said all seven tools are backed by this server's endpoints, but forget_session isn't yet, so it now points at the section below.

@dani1005 dani1005 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@dani1005
dani1005 merged commit 2cc90a9 into main Oct 12, 2026
11 checks passed
@dani1005
dani1005 deleted the docs/mcp-client-guide branch October 12, 2026 03:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants