MCP server that makes a project's context (AGENTS.md), memory, and identity discoverable to any MCP client — via the Server Card _meta block and ai-catalog.json
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add mcp-context-card -- npx -y mcp-context-card{
"mcpServers": {
"mcp-context-card": {
"command": "npx",
"args": ["-y", "mcp-context-card"]
}
}
}MCP Servers overview
# mcp-context-card
[](https://www.npmjs.com/package/mcp-context-card)
[](https://github.com/Wolfe-Jam/mcp-context-card/actions/workflows/ci.yml)
[](./LICENSE)
[](https://glama.ai/mcp/servers/Wolfe-Jam/mcp-context-card)
**Get one. Or add it to yours.** The essential MCP server for a project's
context, memory, and identity — discoverable to any MCP client, and
rendered as one card you can read.
| Light | Dark |
|---|---|
|  |  |
**context** — the project's `AGENTS.md`, served whole or one section at a time.

**memory** — facts that persist across sessions, in a file.

**identity** — what this server is, from its own Server Card.

Discovery goes through two surfaces already in the ecosystem: the Server Card
`_meta` block and `ai-catalog.json` sibling entries.
## Pick one
| You want to… | |
|---|---|
| **Add an `AGENTS.md`** — you don't have one | `author_agents_md` drafts one from your repo's real facts |
| **Improve an `AGENTS.md`** — you have one, make it the best it can be | the same tool, automatically — drop in a `project.faf` and it upgrades to BEST: goal, who it's for, why |
| **Get a new MCP server base** — context, memory, identity, wired | stand this up as-is; a host has all three before you write a tool of your own |
| **Improve your MCP with context, memory, ID** — you already run one | run it alongside your existing server; nothing to migrate, it composes |
## A base MCP — or an extension for any other
Context, memory, and identity are essential — every MCP host needs an agent
that knows a project's instructions, remembers facts across sessions, and can
say what it is. `mcp-context-card` is those three, done once:
- **Stand it up as your base MCP.** Point a host at it and an agent already
has `AGENTS.md` served section‑by‑section, `remember` / `recall` / `forget`
memory that survives a restart, and a `whoami` identity — before a single
tool of your own is written.
- **Or extend any existing MCP with it.** Run it alongside a server you
already have — filesystem, git, a database, your own — and that agent
gains context, memory, and identity discovery it didn't have. Nothing to
migrate; it composes.
Nine tools, two discovery surfaces already in the ecosystem (Server Card
`_meta`, `ai-catalog.json`), and a rendered [card](#the-card). MIT, on npm.
It composes:
- **serve · discover · render** — this server
- **author BETTER, keep true** — [`agents-md-facts`](https://github.com/Wolfe-Jam/agents-md-facts) (`author_agents_md` wraps it for the facts layer; adds a BEST layer of its own from `project.faf` when one exists)
- **files · shell · git** — [`server-filesystem`](https://github.com/modelcontextprotocol/servers), [`server-git`](https://github.com/modelcontextprotocol/servers) / github‑mcp‑server, your test runner's MCP
Vendor-free — context is plain Markdown (`AGENTS.md`); the memory and
identity formats are swappable examples. It reads and writes only its own
three files (`AGENTS.md`, `project.fafm`, `.well-known/fafa`) — no general
file access, no shell, no search.
## The card
The screenshot at the top of this page is exactly this — the same three
sources rendered as one self‑contained HTML page: identity, `AGENTS.md`,
memory, and how a machine fetches it. The view for people: read it, screenshot
it, drop it in a PR, put it on a status page.
`AGENTS.md` sections are collapsed by default, so the card scans in one screen;
a sticky index jumps to any section, **Expand all** opens everything. Sections
toggle natively — the one small inline script only adds the bulk button and the
print handler. `--expanded` / `?expand=all` renders it fully open, script-free,
for a screenshot.
```
npx mcp-context-card card # at a terminal: writes context-card.html and opens it
npx mcp-context-card card --expanded # every section open
npx mcp-context-card card > x.html # piped/redirected: raw HTML to stdout
GET /card # live, on the HTTP transport
GET /card?expand=all&theme=light&accent=%230066cc
```
Light, dark, or auto; the accent defaults to the AAIF palette and takes any hex.
This repo's own card, live: [auto](https://wolfe-jam.github.io/mcp-context-card/) ·
[light](https://wolfe-jam.github.io/mcp-context-card/card-light.html) ·
[dark](https://wolfe-jam.github.io/mcp-context-card/card-dark.html)
(all in the AAIF accent shown here — pass any hex to change it).
## Add it to your setup
### No `AGENTS.md` yet?
The `author_agents_md` tool authors one — **BETTER** from your repo's real
facts (build/test commands, entry points, toolchain conventions, via
[`agents-md-facts`](https://github.com/Wolfe-Jam/agents-md-facts)), or
**BEST** when a `project.faf` exists: the same facts, plus its structured
goal, who it's for, and why, as a section ahead of them. Nothing to
configure — the tier follows what's actually there.
([The ladder this follows.](https://github.com/Wolfe-Jam/agents-md-facts/blob/main/docs/BETTER-BEST.md))
To author or keep the facts layer true outside a session:
```bash
npx agents-md-facts # author / refresh AGENTS.md
npx agents-md-facts --check # fail if missing or stale (CI, pre-commit)
```
### See the card
One command, no host, no config — from your project directory:
```bash
npx mcp-context-card card
```
At a terminal it writes `context-card.html` and opens it in your browser. Piped
or redirected (`> card.html`, a script, CI) it writes raw HTML to stdout instead;
`--stdout` forces that from a terminal too. `--expanded` opens every section.
### Wire it into a host
Claude Desktop, Cursor, or any stdio host:
```jsonc
{
"mcpServers": {
"context-card": {
"command": "npx",
"args": ["-y", "mcp-context-card"],
"env": { "MCP_CONTEXT_CARD_ROOT": "/abs/path/to/your/project" }
}
}
}
```
`MCP_CONTEXT_CARD_ROOT` points at the directory with your `AGENTS.md`. The
memory tools work with or without it; identity is optional. Over HTTP instead:
`PORT=8080 npx mcp-context-card`. Requires Node ≥20.
If `command: "npx"` fails to spawn (`spawn npx ENOENT` — seen on Cursor, whose
host process doesn't inherit a shell `PATH`), point `command` at `node` and
the installed `dist/bin.js` instead — see
[docs/WIRING.md](./docs/WIRING.md#1-running-it-in-a-host). Transport choice is
in [docs/TRANSPORT.md](./docs/TRANSPORT.md).
Extending an MCP you already run: most hosts accept more than one
`mcpServers` entry — add `context-card` alongside `server-filesystem`,
`server-git`, or your own, and every agent in that host gains context,
memory, and identity discovery without anything else changing.
## Why
`AGENTS.md` is the de-facto standard for telling a coding agent how to work in a
repo. But a client has to *know the file exists* and read the whole thing into
context. There is no standard way for a server to say "here is my AGENTS.md,
here is what I remember, here is who I am" — so every server that wants this
grows its own shape.
`mcp-context-card` answers all three through mechanisms that already exist:
1. **Server Card `_meta`** ([SEP‑2127](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127)) —
one reverse‑DNS‑namespaced key per concern, readable in‑band as an MCP
resource and at `GET /.well-known/mcp/server-card`.
2. **`ai-catalog.json`** — sibling entries keyed by media type, at
`GET /.well-known/ai-catalog.json`.
The context concern points at `AGENTS.md` (`text/markdown`). Memory and identity
have no de‑facto standard yet, so the examples here use
[`.fafm`](https://doi.org/10.5281/zenodo.20348942) and
[`.fafa`](https://doi.org/10.5281/zenodo.21951641) — one instantiation each,
swap in your own.
The wire‑level detail is in [docs/MECHANISMS.md](./docs/MECHANISMS.md).
## Tools
| Tool | What it's for |
|---|---|
| `author_agents_md` | draft an `AGENTS.md` — BETTER from the repo's facts (via `agents-md-facts`), BEST when a `project.faf` exists — ready to drop in |
| `read_agents_md` | return the project's `AGENTS.md` — whole, or one section by heading |
| `list_agents_md_sections` | the headings, so a client pulls one section instead of the whole file |
| `remember` | write a fact that will still be there next session |
| `recall` | read a fact stored in a previous session |
| `forget` | drop or correct a stale fact |
| `whoami` | this server's name, vendor, version, status, license |
| `list_context_sources` | what this project publishes, in what media types, via which surface |
| `render_context_card` | the whole card as one self‑contained HTML page (also `GET /card`) |
## The demo
`npm run demo` runs every tool over both transports:
1. **Context** — list the `AGENTS.md` sections, then pull just `## Test`.
2. **Memory** — `remember()` a fact, stop the server process, start a new one,
`recall()` the same fact. Only the file carries it across.
3. **Identity** — `whoami()`, and the Server Card `_meta` block read back from a
live client.
4. **Discovery** — `list_context_sources()`, then the same server over stateless
HTTP with its `.well-known` routes and `GET /card`.
104 tests on Linux, macOS, and Windows, coverage‑gated in CI. Two spawn a real
child process and check a remembered fact survives the restart — one against
an existing `project.fafm`, one starting from a project that has never had
one; aWhat people ask about mcp-context-card
What is Wolfe-Jam/mcp-context-card?
+
Wolfe-Jam/mcp-context-card is mcp servers for the Claude AI ecosystem. MCP server that makes a project's context (AGENTS.md), memory, and identity discoverable to any MCP client — via the Server Card _meta block and ai-catalog.json It has 2 GitHub stars and its last recorded update is dated 2026-09-08.
How do I install mcp-context-card?
+
You can install mcp-context-card by cloning the repository (https://github.com/Wolfe-Jam/mcp-context-card) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is Wolfe-Jam/mcp-context-card safe to use?
+
Our security agent has analyzed Wolfe-Jam/mcp-context-card and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains Wolfe-Jam/mcp-context-card?
+
Wolfe-Jam/mcp-context-card is maintained by Wolfe-Jam. The last recorded GitHub activity is dated 2026-09-08, with 0 open issues.
Are there alternatives to mcp-context-card?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy mcp-context-card to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/wolfe-jam-mcp-context-card)<a href="https://claudewave.com/repo/wolfe-jam-mcp-context-card"><img src="https://claudewave.com/api/badge/wolfe-jam-mcp-context-card" alt="Featured on ClaudeWave: Wolfe-Jam/mcp-context-card" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!