ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Md Log MCP

โดย md-logรุ่น 1.3.1i★ 3iรันบนเครื่อง
ชื่อใน registrycom.md-log/md-log-mcp

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

md-log MCP: save/update/fetch markdown by path (stdio + remote HTTP, PAT auth).

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เอกสาร ตาราง และงานออฟฟิศ
  • ต้องใส่ค่าเหล่านี้: MDLOG_API_BASE_URL, MDLOG_PAT

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "md-log": {
      "command": "npx",
      "args": [
        "-y",
        "md-log-mcp"
      ],
      "env": {
        "MDLOG_API_BASE_URL": "ใส่ค่าของคุณ",
        "MDLOG_PAT": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add md-log --env MDLOG_API_BASE_URL='ใส่ค่าของคุณ' --env MDLOG_PAT='ใส่ค่าของคุณ' -- npx -y md-log-mcp

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "md-log": {
      "command": "npx",
      "args": [
        "-y",
        "md-log-mcp"
      ],
      "env": {
        "MDLOG_API_BASE_URL": "ใส่ค่าของคุณ",
        "MDLOG_PAT": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "md-log": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "md-log-mcp"
      ],
      "env": {
        "MDLOG_API_BASE_URL": "ใส่ค่าของคุณ",
        "MDLOG_PAT": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • MDLOG_API_BASE_URL จำเป็น env
    md-log backend API base URL (must include /api/v1)
  • MDLOG_PAT ความลับ จำเป็น env
    md-log Personal Access Token (mdlog_pat_...)

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ใช้กับโปรแกรมไหนได้

ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569

ติดตั้งบนเครื่องได้ใน

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

ดูโปรแกรมทั้งหมดพร้อมข้อดีข้อเสีย →

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 10 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันโดเมน md-log.com แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)

  • ✓ ผ่าน

    ยังมีคนดูแล

    มีการแก้โค้ดล่าสุด 3 วันที่ผ่านมา

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เอกสาร ตาราง และงานออฟฟิศi

  • ดาวมากกว่า 87% ของอีก 3691 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 88% ของอีก 3691 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 3691 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Md Log MCP ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: MDLOG_API_BASE_URL, MDLOG_PAT

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด 3 วันที่ผ่านมา และส่งรุ่นล่าสุด (1.3.1) เข้า registry 3 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Puter MCP, Agent-Native Slides, Agent-Native Forms

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Puter MCP

Puter MCP enables AI tools to interact with Puter: manage files, websites, workers, and more

โดย HeyPuterใช้กันมาก★ 44.1Kอัปเดต 5 เดือนที่ผ่านมา

รันบนคลาวด์✓ puter.com

Agent-Native Slides

Agent-Native Google Slides - generate and edit React presentations

โดย BuilderIOใช้กันมาก★ 7.7Kอัปเดต 2 เดือนที่ผ่านมา

รันบนคลาวด์

Agent-Native Forms

Agent-Native form builder - create, edit, and manage forms

โดย BuilderIOใช้กันมาก★ 7.7Kอัปเดต 2 เดือนที่ผ่านมา

รันบนคลาวด์

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

md-log-mcp

Review the report, not the diff. An MCP server that lets your AI coding agent — Claude Code, Claude Desktop, Codex, Cursor — save its work and analysis as immutable, versioned Markdown reports into md-log, a human-in-the-loop review & archive layer for "vibe coding." You then read and stylus-annotate (S-Pen / Apple Pencil) those reports on web, phone, and tablet — every save a new immutable version.

A Model Context Protocol server — two transports, one tool set — that lets Claude Code (and other agents) save .md files — text and embedded screenshots together — straight into md-log, a human-in-the-loop review & archive layer for vibe coding. The recommended way to connect is the hosted remote endpoint (https://mcp.md-log.com/mcp, a URL + your key — no install); a local stdio (npx -y md-log-mcp) transport is the alternative. The agent writes a report by path (my-project/2026-07-07-error-report.md); missing folders are auto-created, images are uploaded and their references rewritten to asset:// links, and every save becomes an immutable new version. The same report is then readable, editable, and stylus-annotatable (S-Pen / Apple Pencil where supported) on a phone or tablet, and on the web.

md-log is a hosted service at https://app.md-log.com — you don't run any server yourself. This package is just the connector: a thin authenticated HTTP client that validates POSIX paths, orchestrates asset uploads, maps errors to stable agent codes, and forwards everything to the hosted md-log service — the single authority for auth, storage, versioning and quota. All you need is a Personal Access Token from the web app.

Stack

  • @modelcontextprotocol/sdk (TypeScript) — one McpServer (17 tools), two transports.
  • stdio transport (md-log-mcp) — JSON-RPC over stdin/stdout; the default local mode (so stdout is reserved for the protocol; logs go to stderr). PAT from env.
  • Streamable HTTP transport (md-log-mcp-http) — the remote mode: agents connect by URL with no local install; the PAT is taken per request from the Authorization header. See Remote (Streamable HTTP) mode.
  • TypeScript, bundled with tsup to ESM dist/server.js (stdio) + dist/http.js (HTTP). Runtime deps: the MCP SDK and zod (input schemas). Node's built-in fetch/http are the only network layers — no web framework.
  • PAT auth — a md-log Personal Access Token sent to the backend as Authorization: Bearer.

Requirements

  • Node 22+
  • A Personal Access Token (PAT) minted in the md-log web app (Settings → Tokens; shown once)

That's it — the md-log service itself is hosted at https://app.md-log.com; there is nothing to install or self-host.

Tools (17)

Every tool returns dual output — a human-readable content[].text and a machine-readable structuredContent — and validates the POSIX path (NFC-normalize; reject ../., control chars, empty/whitespace segments, backslashes, reserved names; enforce 255-byte name / 1024-byte path limits; require .md for files) before any backend call. All requests hit the base URL in MDLOG_API_BASE_URL (which already includes /api/v1).

ToolWhat it does
`save_markdown` ⭐The headline tool. Create or overwrite a .md by path (force last-writer-wins); missing folders auto-created. Optionally uploads embedded images first (each given as data_base64 or a local file_path) and rewrites each placeholder in the content to an asset:// link. Accepts commit_message — a recommended 1-2 line change summary shown in the version history.
upload_assetUpload one image (reserve → presigned PUT → complete) and return an asset:// reference to embed as . Provide the image as either data_base64 (inline base64) or file_path (a local file the server reads) — exactly one; with file_path, filename defaults to the basename and content_type is inferred from the extension (png/jpg/jpeg/gif/webp/avif).
append_to_markdownAppend to an existing file with optimistic concurrency (GET current → concat → conditional PUT with base_version_no). Auto-retries once on conflict, then surfaces CONFLICT. Accepts commit_message — a recommended 1-2 line change summary shown in the version history.
`edit_markdown`Change PART of a file by exact literal replacement (read → apply → conditional PUT with base_version_no; auto-retries once on conflict, re-applying every edit). Pass several changes at once as `edits: [{old_string, new_string, replace_all?}, …]` (max 50, applied in order) — they land as one write = one version = one notification; for a single change the old_string/new_string shorthand still works (never both). Each old_string must match exactly once, counting overlapping positions too ("\n\n" inside "\n\n\n" is ambiguous → detail.overlapping: true) — 0 matches or an ambiguous >1 rejects the whole call with VALIDATION (detail.reason = NO_MATCH / AMBIGUOUS_MATCH, detail.edit_index = the failing edit) and nothing is written; set replace_all:true to change every occurrence on purpose. Other detail.reasons: input shape — MIXED_INPUT, MISSING_EDIT, EMPTY_EDITS, TOO_MANY_EDITS, EMPTY_OLD_STRING, IDENTICAL_STRINGS (rejected before any read); result — NO_CHANGE (edits cancel out), DOCUMENT_TOO_LARGE (a step would pass the 25 MiB cap), TOO_MANY_REPLACEMENTS (more occurrences replaced in one call than the document cap allows), BATCH_TOO_SLOW (edits after the first stopped once the call has run 2 s — split them across calls). A match failure on the conflict retry carries detail.after_concurrent_write: true. Never creates a file (missing path → NOT_FOUND) and has no force mode — prefer it over update_markdown for any partial change.
update_markdownReplace a file's ENTIRE content. Pass expected_version for optimistic concurrency (mismatch → CONFLICT); omit it to force LWW. Passing expected_version for a path that does not exist now returns CONFLICT (detail.server_version_no = 0), not a silent create. For a partial change use edit_markdown instead. Accepts commit_message — a recommended 1-2 line change summary shown in the version history.
restore_versionRoll a file back to an earlier version_no (from list_versions): that version's content becomes a NEW current version — history is immutable, so the rollback is itself undoable. Restoring the version the file is already on is an accepted no-op. Accepts commit_message.
get_markdownRead a file's content by path (materializes inline content or a presigned content URL for large docs). Pass version (a version_no from list_versions) to read an old immutable version.
list_versionsList a file's immutable version history, newest first (version_no, commit_message, author, registered_at, size).
delete_markdownSoft-delete a file. Requires confirm:true (otherwise VALIDATION); resolves the path to a document key first.
create_foldermkdir -p — create every missing segment; already-existing folders count as success.
list_foldersReturn the full folder tree.
list_filesList the documents and immediate subfolders inside a folder path.
search_markdownSearch by TITLE (substring) + BODY full-text (current versions; whole-word match, ranked, body hits include a snippet).
move_markdownMove and/or rename a .md by path (from_path → to_path); destination folders auto-created; the document KEEPS its key, so version history and reviewers' annotations survive.
move_folderMove a folder (whole subtree) under a new parent (new_parent_path empty/omitted = root); parent auto-created; cyclic moves rejected server-side.
rename_folderRename a folder in place (descendant paths rewritten server-side).
delete_folderDelete a folder. Requires confirm:true; by default only an EMPTY folder is deleted — pass cascade:true to soft-delete the whole subtree (rm -r).
Error codes surfaced to the agent

Backend failures return { isError: true, content:[{type:"text", ...}] } with a mapped code in structuredContent.error.code:

NOT_FOUND · CONFLICT (carries the server head {server_version_no, server_checksum, …} in detail) · UNAUTHORIZED · RATE_LIMITED · QUOTA_EXCEEDED · BACKEND_UNAVAILABLE · VALIDATION · FOLDER_EXISTS (swallowed as success by create_folder) · ERROR.

Authentication

The MCP/PC lane authenticates with a Personal Access Token (mdlog_pat_…) — minted once in the web app's Settings and supplied via env. The client attaches it as Authorization: Bearer (plus X-API-Token for compatibility) on every request. The backend is the single source of truth for auth and quota.

VariableRequiredExampleNotes
MDLOG_API_BASE_URLyeshttps://app.md-log.com/api/v1The hosted service base, including /api/v1. No version suffix is appended; a trailing slash is stripped.
MDLOG_PATyesmdlog_pat_xxxxxxxxxxxxxxxxxxxxxxxxBearer PAT. Store it securely (OS keychain) — never commit it.
MDLOG_MAX_DOCUMENT_BYTESno26214400 (25 MiB)Client-side pre-flight for the backend's per-document body cap, in UTF-8 bytes (Korean is 3 bytes/char). An over-cap save fails immediately with a VALIDATION error naming the actual size, instead of an opaque backend 400. Applies to both transports. Change only against a self-hosted backend with a different cap.

The server fails fast at startup with a clear message if either var is missing or the base URL is malformed.

Build

npm install

npm run build # tsup → dist/server.js (ESM, Node 22) npm run typecheck # tsc --noEmit (optional)

Smoke test

scripts/smoke.mjs spawns the built server over stdio (MCP SDK Client + StdioClientTransport), then runs initialize → tools/list → save_markdown (a small report embedding a tiny data: PNG) → get_markdown (reads it back, checks the marker) → search_markdown — printing PASS/FAIL per step and exiting non-zero on any failure. Run it against a live backend with a real PAT:

npm run build

MDLOG_API_BASE_URL="http://localhost:8080/api/v1" \ MDLOG_PAT="mdlog_pat_xxxx" \ node scripts/smoke.mjs # or: npm run smoke

Connect a client

Mint the PAT in the web app's Settings → Tokens, store it securely, then add md-log to your MCP client. Never commit a PAT.

📄 연결 가이드 (HTML) — md-log.com/guides/customer-guide.html: 웹 앱에서 발급받은 MCP 키(PAT) 로 URL 연결(권장) 또는 npx 로컬 연결 (Claude Code · Desktop · Codex · Cursor).

Recommended — remote (URL), no install

Point your client at the hosted endpoint and pass the PAT as a Bearer header. Nothing to install — no Node.js, no `npx`. (You don't even need this package for the hosted connection.)

# Claude Code

claude mcp add --transport http md-log https://mcp.md-log.com/mcp \ --header "Authorization: Bearer mdlog_pat_xxxxxxxxxxxxxxxxxxxxxxxx"

// Cursor / Claude Desktop / any client that takes JSON — the `type` field MUST be "http"

{ "mcpServers": { "md-log": { "type

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx