
Md Log Mcp
com.md-log由 md-log.com 發布v1.3.1更新於 Nov 7, 2026
md-log MCP: save/update/fetch markdown by path (stdio + remote HTTP, PAT auth).
概覽
讓 AI 程式助理連接 md-log 託管服務,依路徑儲存、編輯、搜尋並版本化 Markdown 報告,供人工審閱。
- 可以做什麼
- 依路徑儲存與讀取 Markdown,自動建立缺少的資料夾,每次儲存都成為不可變版本。
- 以精確文字取代局部修改檔案、附加內容,或整份內容替換並做衝突檢查。
- 上傳圖片並把佔位符改寫為資源連結,也可單獨上傳資源。
- 瀏覽與檢索:列出資料夾和檔案、依標題與內文全文搜尋、查看檔案的版本歷史。
- 還原舊版本,移動或重新命名檔案與資料夾,並在確認後軟刪除檔案或資料夾。
- 適用情境
- 適合讓 AI 程式助理把工作成果與分析以可讀的 Markdown 報告交付,供人審閱、註記和歸檔,並保留完整版本歷史。也適合希望把助理產生的文件存放在可搜尋的託管位置而非本機檔案的團隊。
- 執行需求
- 需要 md-log 託管帳號,以及在網頁應用程式設定中產生、僅顯示一次的 Personal Access Token,透過環境變數 MDLOG_PAT 提供;還需在 MDLOG_API_BASE_URL 填入含 /api/v1 的 API 基礎位址。本機套件需要 Node.js 22 或更新版本;使用託管遠端端點則無需安裝。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Md Log Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
md-log-mcp
[npm version] [MCP Registry] [License: MIT] [Node]
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 theAuthorizationheader. 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-infetch/httpare 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).
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 <PAT>
(plus X-API-Token for compatibility) on every request. The backend is the single source of truth
for auth and quota.
The server fails fast at startup with a clear message if either var is missing or the base URL is malformed.
Build
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:
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.)
Over the remote endpoint, embed images inline (base64); uploading a local image by path
(file_path) works only with the local method below.
Alternative — local (stdio via npx)
Runs this connector as a local subprocess (needs Node 22+; npx fetches the published package, nothing
to build). Use it if you prefer a local process, need local-file (file_path) image uploads, or
self-host md-log without a hosted MCP endpoint.
Mint & secure the PAT. Create it in the web Settings → Tokens (it is shown only once) and keep it out of version control — prefer the OS keychain. On macOS, for example:
If a PAT leaks, revoke it in the web app and mint a new one.
Remote (Streamable HTTP) mode
The second bin, md-log-mcp-http, serves the same 17 tools over MCP's
Streamable HTTP transport — a single
POST /mcp endpoint — so agents connect by URL with no local install. Use it when you want to
host the connector centrally (a container / small VM behind a TLS reverse proxy) instead of every
user running npx.
How it differs from stdio:
- PAT per request. The token is not read from env; each request carries its own
Authorization: Bearer <mdlog_pat_…>header, so one endpoint serves many users — each with their own md-log token. (MDLOG_PATis ignored in this mode.) - Stateless. A fresh client + server per request; no session store (replica / autoscale friendly).
- No local files. The
file_pathimage source is refused (it would read the server's disk); send images inline asdata_base64. Everything else is identical.
Run it
Configuration (env)
Security posture (per the MCP spec): binds to 127.0.0.1 by default, requires a Bearer token on
every MCP request, validates Origin against the allowlist to defeat DNS-rebinding, and caps the body
size. A GET /health liveness probe (no auth) returns {"status":"ok"}. GET/DELETE on the MCP
endpoint return 405 (stateless: no standalone SSE stream, no session to terminate).
Connect an agent by URL
Client config shape varies (Claude Code / Cursor / etc.) — the essentials are the endpoint URL and an
Authorization: Bearer <PAT>header. Always terminate TLS in front of a public deployment; the PAT rides on every request.
Scripts
npm run build— bundle todist/server.js(stdio) +dist/http.js(Streamable HTTP) (tsup, ESM, Node 22).npm run dev— rebuild on change (tsup --watch).npm run typecheck—tsc --noEmit.npm run smoke— stdio smoke test against a live backend (needs env + a build).npm run smoke:http— backend-free HTTP-transport smoke test (handshake + auth/origin/file_path guards).npm start— run the built stdio server (node dist/server.js).npm run start:http— run the built HTTP server (node dist/http.js).
來源:README.md,提交 579b5e0
工具
0版本歷史
4- v1.3.1最新Nov 7, 2026
- v1.3.0Oct 4, 2026
- v1.2.0Oct 2, 2026
- v1.1.4Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分