KryMark
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KryMarkPull and fix my new KryMark feedback, then resolve the notes."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
โ KryMark
Feedback on vibecoded websites that becomes an AI prompt โ or gets pulled straight into your AI editor via MCP.
๐ Live showcase ยท Docs ยท Self-hosting
You built a site with Lovable, Bolt, v0 or Cursor. Now the review round is chat screenshots and "make it pop". KryMark gives non-coders a way to click the exact element and say what they want โ and gives you (or your AI agent) a DOM-rich, paste-ready fix prompt.
[reviewer on your site] [you / your AI]
click element โ type feedback โ dashboard ยท fix prompt ยท MCP tools
(one script tag, no login) screenshot + DOM + styles includedFeatures
Embed widget โ one
<script>tag, ~6KB gzip, Shadow DOM, no SDK. Reviewers click (or drag-select) an element, type in any language, hit send. Screenshot preview with a remove button; a "My notes" trail so they know what they've sent.Frozen snapshots โ every note stores the element's
outerHTML, computed styles, position, page meta and a screenshot at report time. Selectors drift after rebuilds; snapshots don't.AI fix prompts โ one note or a batch ("fix session") compiled into a single numbered prompt engineered for Cursor / Lovable / Claude: match by text & structure, smallest change, reconcile duplicates, flag what you can't find.
MCP server built in โ point Claude Code / Cursor at
/api/mcpwith an API key and the AI pulls feedback, fixes it, and resolves notes end-to-end. Six tools:list_projects,list_notes,get_fix_prompt,resolve_notes,set_status,add_comment.Dashboard โ dense dark UI: list / cards / kanban board (drag to change status), auto-tagging (layout / copy / style / bug / missing), filters, page grouping, duplicate clustering, bulk actions, team comments.
Closed loop โ resolving emails the reporter (one consolidated email per person) with "Fixed the way you wanted?" links; a "not quite" reply reopens the note.
Multi-tenant โ orgs, projects, invites, roles, per-org API keys. PocketBase API rules enforce isolation.
Anti-spam by default โ IP-hash rate limiting + per-project daily caps on the public report endpoint. Origin allow-list per project as a UX layer.
Quickstart (Docker)
git clone https://github.com/kryphan/krymark && cd krymark
cp .env.example .env # fill in NEXT_PUBLIC_APP_ORIGIN + IP_HASH_SALT
docker compose up -d --build
# 1) create the PocketBase superuser
docker exec krymark-pb /pb/pocketbase superuser upsert admin@example.com YOUR_PASSWORD --dir /pb/pb_data
# 2) create collections + multi-tenant rules (idempotent โ rerun after upgrades)
PB_URL=http://127.0.0.1:8091 PB_ADMIN_EMAIL=admin@example.com PB_ADMIN_PASS=YOUR_PASSWORD npm run setup
# 3) generate the app's superuser token โ put it in .env as PB_SUPERUSER_TOKEN
PB_URL=http://127.0.0.1:8091 PB_ADMIN_EMAIL=admin@example.com PB_ADMIN_PASS=YOUR_PASSWORD node pb/gen-superuser-token.mjs
docker compose up -d app # restart app with the tokenOpen http://localhost:3000 โ sign up (your org is created automatically) โ create a project โ paste the snippet on any site:
<script src="https://your-krymark.example.com/w.js" data-key="YOUR_WIDGET_KEY" defer></script>AI access (MCP)
Dashboard โ Team โ AI access โ copy the config block into .mcp.json (Claude Code) or your editor's MCP settings:
{
"mcpServers": {
"krymark": {
"type": "http",
"url": "https://your-krymark.example.com/api/mcp",
"headers": { "Authorization": "Bearer km_live_YOUR_KEY" }
}
}
}Then just ask: "Pull my new KryMark feedback and fix all of it, then resolve the notes."
Docs
Self-hosting guide โ install, reverse proxy, backups, upgrades, troubleshooting
The widget โ behavior, captures, screenshots, per-platform install, CSP
HTTP API โ
/api/reportcontract, health, re-review linksMCP โ AI editor setup, tools, raw JSON-RPC usage
Webhooks โ outbound note events โ any URL (n8n / Slack / ClickUp)
Architecture โ components, data model, multi-tenancy, design decisions
Configuration
Everything optional degrades gracefully โ see .env.example for the full reference.
Block | Needed for | Without it |
| core | required |
| screenshots on public URLs (embedded in AI prompts) | screenshots stored in PocketBase, proxied by the app |
| resolve/reset emails + the reporter re-review loop | emails silently skipped |
| Telegram ping on new notes | no pings |
Architecture
Next.js 16 โ dashboard, public APIs (
/api/report,/api/mcp,/api/rr), serves the widget (/w.js) and the self-hosted capture library (/vendor/snapdom.mjs).PocketBase โ auth, SQLite storage, multi-tenant API rules. Internal-only: the widget never talks to it directly; the admin UI binds to localhost.
Widget โ vanilla TS IIFE. Screenshots via snapdom (self-hosted, CDN fallback, 2-stage retry + re-compression).
Ops extras: /api/health (app + PocketBase, returns 503 when the DB is down), ops/backup-pb.sh (daily PocketBase backup via API, keeps 7), deploy.sh (optional git-push deploy โ see deploy.env.example).
Development
npm install
# run PocketBase locally: download from pocketbase.io, then
./pocketbase serve --dir ./pb_data --hooksDir ./pb/pb_hooks
npm run setup # against http://127.0.0.1:8090
npm run devnpm run build bundles the widget (esbuild) and builds Next. npm run typecheck before PRs.
License
MIT ยฉ KryPhan
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kryphan/krymark'
If you have feedback or need assistance with the MCP directory API, please join our Discord server