{"slug": "context-over-mcp-part-vi-context-you-can-see", "title": "Context Over MCP, Part VI: Context You Can See", "summary": "A developer released mcp-context-card, an MIT-licensed MCP server that renders a project's agent context — AGENTS.md sections, memory facts and their file locations — as a visible HTML \"context card\" so developers can inspect what a coding agent reads before it acts. The server ships 10 tools and 134 tests, is published on npm and the official MCP Registry, and works in any MCP host by resolving the project through the host's MCP roots request or a configurable root path.", "body_md": "Part I asked: *Invisible AGENTS.md?* Here's the fix.\n\nYour coding agent works from context: the project's `AGENTS.md`, the facts\n\nit remembered last week, what it thinks this project is. It reads all of\n\nthat before it writes a line. You don't see any of it. When the agent does\n\nsomething odd, you go digging: open the repo, find the file, scroll, guess\n\nwhich part it took to heart.\n\nContext is vital. But context you can't see is context you can't check.\n\nCards are better when they're visible.\n\n**TL;DR — see what your AI sees. Nothing to configure.**\n\n**Talk to it (goose):** add the `mcp-context-card` extension, open your\nproject, and say *\"Show me my context card.\"*\n**Terminal:** in your project, run `npx mcp-context-card card`.\nEither way the full card opens in your browser. The rest of this post is\n\nthe deeper dive.\n\n**The repo:** [mcp-context-card](https://github.com/Wolfe-Jam/mcp-context-card): one MIT server for a project's context, memory and identity. 10 tools, 134 tests, on npm and the official MCP Registry, tested in goose.\n\nThis is the easy route. You talk to goose; goose shows you the card.\n\n```\n   npx -y mcp-context-card\n```\n\nNothing else. No path, no environment variable.\n\nShow me my context card.\n\nThe server's reply leads with what it did, as a plain fact: **New file:**\n\n(or **Updated:**) `context-card.html` in your project, and the path. The\n\nmodel may put that in its own words; in the screenshot below it says the\n\ncard was \"saved to the project and opened in your browser.\"\n\nThen comes the card as text: the project's name and description, its\n\n`AGENTS.md` sections, the first sentence of each memory fact word for word,\n\nand where each one lives. At the same moment the full card opens in your\n\nbrowser.\n\nHow did it know which project? The server asks the host which folder\n\nyou're working in, through the standard MCP *roots* request, and reads\n\nthat folder. In goose, that's the folder chip. Switch it, and the next card\n\nfollows.\n\nThe file it saved is yours to keep. It's a snapshot of what your agent\n\nreads, next to the code it describes.\n\nNo AI, no host. In your project folder:\n\n```\nnpx mcp-context-card card\n```\n\nIt writes `context-card.html` and opens it in your browser. Add\n\n`--expanded` to open every section, for a screenshot or a review with\n\nsomeone else.\n\nOne page, four parts:\n\n`AGENTS.md`, every section, collapsed so the card\nscans in one screen. Open any section, or all of them.\nThat's the same material your agent reads. Seen as a page, it does three\n\nthings the files alone don't:\n\nA thirty-second review before a big task:\n\nWhatever's wrong on the card is wrong in what the agent reads. Fix the\n\nfile, ask again, and the card follows. It's generated from your files every\n\ntime, so it can't drift from them.\n\nTry it on a project with no `AGENTS.md` and the card doesn't stop at\n\n\"nothing here\". Each empty section says what to do next:\n\n`author_agents_md` tool builds one from the repo's real build and test\ncommands, with nothing invented. Outside a chat, `npx agents-md-facts`\nwrites the same facts.\nSo the first card shows you the gap and the next step in the same place.\n\nThe same server works in any MCP host. For hosts that take a JSON entry\n\n(Claude Desktop, Cursor, and others):\n\n```\n{\n  \"mcpServers\": {\n    \"context-card\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-context-card\"]\n    }\n  }\n}\n```\n\nIn Claude Code, from your project folder:\n\n```\nclaude mcp add context-card -- npx -y mcp-context-card\n```\n\nThe server finds your project the same way everywhere: the host's MCP\n\nroots first, then the folder it was started in, if that has an\n\n`AGENTS.md`. Ask *\"Which project are you reading?\"* and it tells you the\n\npath and how it found it. To pin one project regardless, set\n\n`MCP_CONTEXT_CARD_ROOT` to its path.\n\nWhat you see depends on the host:\n\n**Hosts that support MCP Apps** (the MCP extension for interactive UI) show\n\nthe full card inline, in the chat. When the host says so as it connects,\n\nthe model gets a one-line summary instead of a page of HTML.\n\nThat's the MCP Apps reference host drawing the card. It renders apps but\n\ndoesn't announce that when it connects, so its Tool Result panel still\n\nshows the full HTML: the server can only shorten what it knows the host\n\nwill draw.\n\n**Every other host** gets the text card in the chat, as in the goose example\n\nabove, and the full card in the browser. The reply also carries a link to\n\nthe file, and its address in a code block you can copy, for hosts that won't\n\nopen a local file link.\n\nBefore this, asking for the card put about 16,500 characters of raw HTML\n\ninto the chat. Now the reply is about 1,700, and it's something you can\n\nread. Ask for the full detail if you want every memory fact in full; the\n\nsaved page always has everything.\n\nA card you can see changes how you work with memory.\n\nRemember that the API tests need `DATABASE_URL` set.\n\n`remember` and `forget` are marked as tools that change your project, so a\n\nhost that respects that asks you first. In goose, that's the approval\n\nsetting: in a mode that asks before tools that change files, you'll see\n\nthe request and approve it. Then ask for the card again, and there's the\n\nfact, on the page.\n\nWhen a fact goes stale, you'll notice it on the card before the agent acts\n\non it. Ask it to forget or correct it. Memory is a plain file in your repo,\n\nso it goes through code review like everything else.\n\nThat's the loop: the agent reads context, you see the same context, and\n\neither of you can fix it.\n\nIf you run your own MCP server, the pattern is small, and it needs nothing\n\nbeyond the standard SDK.\n\n`file://` root, and listen\nfor the roots-changed notification. No config for the user to get wrong.`ui://` resource with the MIME type\n`text/html;profile=mcp-app`, serving the card as one self-contained HTML\npage: inline CSS, no external requests.`_meta.ui.resourceUri` pointing at that resource. Hosts that support MCP\nApps fetch it and draw it.\nThe code is MIT: [mcp-context-card](https://github.com/Wolfe-Jam/mcp-context-card).\n\nTo build an MCP App of your own and try it in goose, the goose docs walk\n\nthrough it: [Building MCP Apps for goose](https://goose-docs.ai/docs/tutorials/building-mcp-apps).\n\n`npx -y mcp-context-card`, open a\nproject, and ask `npx mcp-context-card card`. Its sections match your file's headings.\nChange a line in (Checked 27–30 September 2026: mcp-context-card 1.3.0, installed from npm,\n\nin goose Desktop 1.52.0 and in the MCP Apps reference host.)\n\nContext was always there. Now you can see it, and so can everyone\n\nreviewing the work with you.\n\nThanks for reading, and to everyone who's followed Context Over MCP since Part I.\n\nTried it? Tell me in the comments what your card showed you, and what it got wrong. That's what shapes the next version.\n\nNo time right now? ★ bookmark [the repo](https://github.com/Wolfe-Jam/mcp-context-card) and come back before your next big task. One command, and you'll see what your agent sees.\n\n**The series, Context Over MCP:**", "url": "https://wpnews.pro/news/context-over-mcp-part-vi-context-you-can-see", "canonical_source": "https://dev.to/wolfejam/context-over-mcp-part-vi-context-you-can-see-1daa", "published_at": "2026-10-01 13:09:12+00:00", "updated_at": "2026-10-01 13:14:27.892870+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "developer-tools", "ai-tools"], "entities": ["mcp-context-card", "Model Context Protocol", "goose", "Claude Desktop", "Cursor", "Claude Code", "npm", "MCP Registry"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/context-over-mcp-part-vi-context-you-can-see", "markdown": "https://wpnews.pro/news/context-over-mcp-part-vi-context-you-can-see.md", "text": "https://wpnews.pro/news/context-over-mcp-part-vi-context-you-can-see.txt", "jsonld": "https://wpnews.pro/news/context-over-mcp-part-vi-context-you-can-see.jsonld"}}