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

Ntfy MCP Server

โดย cyanheadsรุ่น 2.4.0i★ –iรันบนเครื่อง
ชื่อใน registryio.github.cyanheads/ntfy-mcp-server

ติดตั้ง

ภาพรวม

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

Send, manage, and replay ntfy push notifications via MCP.

สามเสาของ PopNx MCP

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

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

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

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio, Streamable HTTP
  • หมวด: อื่น ๆ

ติดตั้ง

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

ก่อนติดตั้ง

  • ผลตรวจเบื้องต้น: ผ่าน 1 จาก 1 ข้อ
  • รันในเครื่องคุณด้วยสิทธิ์ของผู้ใช้คุณ (ไฟล์ อินเทอร์เน็ต แอปต่าง ๆ)
  • ค่าที่คุณต้องใส่เอง: NTFY_SERVERS, NTFY_BASE_URL, NTFY_DEFAULT_TOPIC, NTFY_AUTH_TOKEN, NTFY_AUTH_USERNAME, NTFY_AUTH_PASSWORD, NTFY_REQUEST_TIMEOUT_MS, NTFY_MAX_RETRIES, NTFY_BLOCK_PRIVATE_HOSTS, NTFY_ENABLE_EMOJI_TAGS, MCP_LOG_LEVEL, LOGS_DIR, OTEL_ENABLED

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

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

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

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

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

{
  "mcpServers": {
    "ntfy": {
      "command": "npx",
      "args": [
        "-y",
        "ntfy-mcp-server"
      ],
      "env": {
        "NTFY_SERVERS": "ใส่ค่าของคุณ",
        "NTFY_BASE_URL": "ใส่ค่าของคุณ",
        "NTFY_DEFAULT_TOPIC": "ใส่ค่าของคุณ",
        "NTFY_AUTH_TOKEN": "ใส่ค่าของคุณ",
        "NTFY_AUTH_USERNAME": "ใส่ค่าของคุณ",
        "NTFY_AUTH_PASSWORD": "ใส่ค่าของคุณ",
        "NTFY_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
        "NTFY_MAX_RETRIES": "ใส่ค่าของคุณ",
        "NTFY_BLOCK_PRIVATE_HOSTS": "ใส่ค่าของคุณ",
        "NTFY_ENABLE_EMOJI_TAGS": "ใส่ค่าของคุณ",
        "MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
        "LOGS_DIR": "ใส่ค่าของคุณ",
        "OTEL_ENABLED": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

claude mcp add ntfy --env NTFY_SERVERS='ใส่ค่าของคุณ' --env NTFY_BASE_URL='ใส่ค่าของคุณ' --env NTFY_DEFAULT_TOPIC='ใส่ค่าของคุณ' --env NTFY_AUTH_TOKEN='ใส่ค่าของคุณ' --env NTFY_AUTH_USERNAME='ใส่ค่าของคุณ' --env NTFY_AUTH_PASSWORD='ใส่ค่าของคุณ' --env NTFY_REQUEST_TIMEOUT_MS='ใส่ค่าของคุณ' --env NTFY_MAX_RETRIES='ใส่ค่าของคุณ' --env NTFY_BLOCK_PRIVATE_HOSTS='ใส่ค่าของคุณ' --env NTFY_ENABLE_EMOJI_TAGS='ใส่ค่าของคุณ' --env MCP_LOG_LEVEL='ใส่ค่าของคุณ' --env LOGS_DIR='ใส่ค่าของคุณ' --env OTEL_ENABLED='ใส่ค่าของคุณ' -- npx -y ntfy-mcp-server

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

เปิดใน Cursor

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

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

{
  "mcpServers": {
    "ntfy": {
      "command": "npx",
      "args": [
        "-y",
        "ntfy-mcp-server"
      ],
      "env": {
        "NTFY_SERVERS": "ใส่ค่าของคุณ",
        "NTFY_BASE_URL": "ใส่ค่าของคุณ",
        "NTFY_DEFAULT_TOPIC": "ใส่ค่าของคุณ",
        "NTFY_AUTH_TOKEN": "ใส่ค่าของคุณ",
        "NTFY_AUTH_USERNAME": "ใส่ค่าของคุณ",
        "NTFY_AUTH_PASSWORD": "ใส่ค่าของคุณ",
        "NTFY_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
        "NTFY_MAX_RETRIES": "ใส่ค่าของคุณ",
        "NTFY_BLOCK_PRIVATE_HOSTS": "ใส่ค่าของคุณ",
        "NTFY_ENABLE_EMOJI_TAGS": "ใส่ค่าของคุณ",
        "MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
        "LOGS_DIR": "ใส่ค่าของคุณ",
        "OTEL_ENABLED": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

เปิดใน VS Code

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

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

{
  "servers": {
    "ntfy": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "ntfy-mcp-server"
      ],
      "env": {
        "NTFY_SERVERS": "ใส่ค่าของคุณ",
        "NTFY_BASE_URL": "ใส่ค่าของคุณ",
        "NTFY_DEFAULT_TOPIC": "ใส่ค่าของคุณ",
        "NTFY_AUTH_TOKEN": "ใส่ค่าของคุณ",
        "NTFY_AUTH_USERNAME": "ใส่ค่าของคุณ",
        "NTFY_AUTH_PASSWORD": "ใส่ค่าของคุณ",
        "NTFY_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
        "NTFY_MAX_RETRIES": "ใส่ค่าของคุณ",
        "NTFY_BLOCK_PRIVATE_HOSTS": "ใส่ค่าของคุณ",
        "NTFY_ENABLE_EMOJI_TAGS": "ใส่ค่าของคุณ",
        "MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
        "LOGS_DIR": "ใส่ค่าของคุณ",
        "OTEL_ENABLED": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

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

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

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

  • NTFY_SERVERS env
    JSON array of `{ baseUrl, authToken? | authUsername?+authPassword? }` entries — one per ntfy server. First entry is the default base. Auth is scoped to the entry's `baseUrl`; per-call `base_url` over…
  • NTFY_BASE_URL env
    Single-server shorthand — base URL of the ntfy server (no trailing slash). Used when NTFY_SERVERS is unset.
  • NTFY_DEFAULT_TOPIC env
    Topic used when a tool call omits `topic`. Treat the topic name as a secret — anyone who knows it can publish or subscribe.
  • NTFY_AUTH_TOKEN env
    Bearer access token (`tk_…`) for the single-server shorthand. Mutually exclusive with NTFY_AUTH_USERNAME / NTFY_AUTH_PASSWORD.
  • NTFY_AUTH_USERNAME env
    Basic-auth username for the single-server shorthand — must be set together with NTFY_AUTH_PASSWORD.
  • NTFY_AUTH_PASSWORD env
    Basic-auth password for the single-server shorthand — must be set together with NTFY_AUTH_USERNAME.
  • NTFY_REQUEST_TIMEOUT_MS env
    Per-attempt HTTP timeout in milliseconds, covering the response body. Each call is also capped at 50 s across all attempts.
  • NTFY_MAX_RETRIES env
    Max retry attempts for transient upstream failures (5xx, network, 429).
  • NTFY_BLOCK_PRIVATE_HOSTS env
    When true, a per-call `base_url` override must resolve to a public address and its redirects are not followed. Servers registered under NTFY_SERVERS / NTFY_BASE_URL are exempt. Turn it on where calle…
  • NTFY_ENABLE_EMOJI_TAGS env
    Set to false to disable the ntfy_search_emoji_tags tool: it leaves tools/list, and the server instructions and ntfy_publish_message stop pointing at it.
  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').
  • LOGS_DIR env
    Directory for file-based logs (Node only; ignored on Workers).
  • OTEL_ENABLED env
    Enable OpenTelemetry instrumentation (spans, metrics, completion logs).

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

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

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

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

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

  • ✓ ผ่าน

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

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub cyanheads ซึ่งเป็นเจ้าของ repo

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

    ยังมีคนดูแล

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

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

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

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

  • – ไม่เกี่ยว

    endpoint ตอบ

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

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

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

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

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

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

เทียบกับตัวอื่นในหมวด อื่น ๆi

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

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

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

Ntfy MCP Server ปลอดภัยไหม?

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

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

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

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

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

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

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

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

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

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

ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, arr-mcp

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

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

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

Spec Driven Development

โดย formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

รันบนเครื่อง★ 440MITอัปเดต 14 เดือนที่ผ่านมา
ติดตั้ง

Remote Desktop Commander

โดย desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

รันบนคลาวด์★ 211อัปเดต เมื่อวานซืน
ติดตั้ง

arr-mcp

โดย bardesss

One server, 40 tools, the whole media stack: *arrs, Jellyfin, Plex, Seerr, Cleanuparr, downloaders

รันบนเครื่องอัปเดต วันนี้
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

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

ntfy-mcp-server Send, manage, and replay ntfy push notifications via MCP. STDIO or Streamable HTTP. 4 Tools • 1 Resource • 1 Skill


Overview

Push notifications to your phone or desktop through ntfy. Publish, update, and manage notifications, poll a topic's recent history, and look up emoji short codes for tags.

Tools
ToolDescription
ntfy_publish_messageSend or update a push notification on an ntfy topic.
ntfy_manage_messageClear or delete a previously-sent notification by sequence_id.
ntfy_fetch_messagesPoll cached messages from one or more topics with optional filters.
ntfy_search_emoji_tagsLook up ntfy emoji tag short codes for use in tags.
Resources
ResourceDescription
ntfy://{topic}Snapshot of a topic — latest 20 messages from the past hour, plus the topic's browser URL.

ntfy_fetch_messages covers the same topic data with custom windows and filters when the resource's fixed defaults aren't enough.

Skills
SkillDescription
ntfy-guideUsing the ntfy_* tools: choosing the topic, carrying one sequence id through a notification's updates, clear, and delete, scheduling and cancelling reminders, and reading fetched history without miscounting

Plugin, npm, Docker, and MCPB installs ship it from skills/; MCP clients that support the Skills extension read it as skill://ntfy-guide/SKILL.md.

Capability reference

ntfy_publish_message tool
  • Topics are created on first publish — treat the topic name as a secret; anyone who knows it can publish or subscribe
  • Takes title, priority (1–5), tags, click, attach, icon, filename, markdown, delay, email, call, cache, firebase, and up to three action buttons (view, broadcast, http, copy); body capped at 4096 bytes, empty body defaults to triggered; pass the original sequence_id to update a sent message
  • Publishes with email, call, or a broadcast/http button ask the user to confirm the target before sending; declining fails with consent_declined
  • A per-call base_url gets credentials only if it matches a registered server (NTFY_BASE_URL or an NTFY_SERVERS entry); otherwise the request is unauthenticated
  • Failures carry typed reasons: payload_too_large (body, attachment, title, or combined tags over ntfy's limits), invalid_delay, invalid_attachment (malformed attach URL), and unverified_contact (email/call without a verified address or number, or without auth), alongside the shared reasons under Features

ntfy_manage_message tool
  • operation: clear marks the notification read and dismisses it (subscribers see message_clear); delete removes it from the drawer (subscribers see message_delete)
  • Every call asks the user to confirm the topic, sequence_id, and operation first; declining fails with consent_declined
  • The original message stays in cache, and repeating an operation is safe; ntfy.sh accepts an unknown sequence_id, stricter deployments return not_found

ntfy_fetch_messages tool
  • Returns a snapshot, not a live stream; accepts comma-separated topics (e.g. alerts,backups, each 1–64 characters) and filters since (duration / timestamp / message ID / all / latest), priority, tags, id, title, message, plus scheduled to include delayed messages
  • Default window 10m, default limit 20, at most 100 per call; a larger window returns the newest limit messages with totalCount and a nextCursor to pass back as cursor. Bodies truncate at ~500 chars (messageTruncated gives the dropped count); refetch with id for the full text. upstreamTruncated flags a replay ntfy capped
  • Failures carry typed reasons: invalid_since (malformed since value), cursor_not_found (the cursor's message expired, or came from a call with different topics, since, or filters), and upstream_malformed (the response wasn't an ntfy message stream), alongside the shared reasons under Features

ntfy_search_emoji_tags tool
  • Case-insensitive substring match on tag names; omit query to list the reference in order
  • limit default 25, at most 200 per call; page with offset using totalCount
  • Returned tag strings go straight into ntfy_publish_message's tags
  • On by default; set NTFY_ENABLE_EMOJI_TAGS=false to remove it from tools/list

ntfy://{topic} resource
  • Fixed snapshot: latest 20 messages from the past hour plus the topic's browser URL, in the same shape as ntfy_fetch_messages (including upstreamTruncated)
  • For custom windows or filters, use ntfy_fetch_messages

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

ntfy-specific:

  • Retrying ntfy client with a per-attempt timeout, and each call capped at 50 s so it settles before an MCP client's 60 s default
  • Per-server auth: credentials bind to each registered base URL (NTFY_BASE_URL or an NTFY_SERVERS entry), with bearer-token and basic-auth modes mutually exclusive
  • User confirmation before a clear/delete, or a publish with email, call, or a broadcast/http button, on both stdio and Streamable HTTP
  • Optional SSRF guard on base_url overrides (NTFY_BLOCK_PRIVATE_HOSTS); registered servers are exempt
  • Bundled emoji-tag reference, regenerated from upstream docs/ntfy/emojis.md via scripts/build-emoji-tags.ts

Agent-friendly output:

  • Publish and manage echo the resolved topic, ID, and timestamp; fetch also echoes the resolved since and applied filters
  • Typed reason codes let callers branch on failure mode. Shared across the tools and the resource: forbidden_topic (ntfy refused the topic with 401/403: missing or insufficient credentials), rate_limited (429 after retries), upstream_unreachable (network failure, a 5xx that outlasted retries or whose Retry-After the call can't wait out, or no complete answer within the 50 s call deadline; carries retryAfter when ntfy sent one), upstream_malformed (a reply that isn't ntfy's message format or couldn't be read in full; publish and manage don't retry it, since the event may already be out). consent_declined, not_found, and the rest are listed per entry
  • Fetch and emoji search report truncated, totalCount, and a notice naming the next step (pass nextCursor as cursor, advance offset)

Getting started

Add it to Claude Code:

claude mcp add ntfy-mcp-server -- npx -y ntfy-mcp-server

For other clients, add this to the MCP config file:

{

"mcpServers": { "ntfy-mcp-server": { "command": "npx", "args": ["-y", "ntfy-mcp-server"] } } }

Public ntfy.sh works without an account. Set NTFY_DEFAULT_TOPIC so calls can omit topic; for protected topics, add NTFY_AUTH_TOKEN (generate one at https://ntfy.sh/account). With claude mcp add, pass each as -e NAME=value after the server name; in JSON, put them under env. For Docker, a source build, or Streamable HTTP, see Running the server.

Configuration

VariableDescriptionDefault
NTFY_SERVERSJSON array of `{ baseUrl, authToken? \authUsername?+authPassword? }` entries, one per ntfy server; the first is the default. Takes precedence over the single-server vars below.—
NTFY_BASE_URLSingle-server shorthand — base URL of the ntfy server (no trailing slash). Used when NTFY_SERVERS is unset.https://ntfy.sh
NTFY_DEFAULT_TOPICTopic used when a tool call omits topic.—
NTFY_AUTH_TOKENBearer access token (tk_…) for the single-server shorthand. Mutually exclusive with NTFY_AUTH_USERNAME / NTFY_AUTH_PASSWORD.—
NTFY_AUTH_USERNAMEBasic-auth username for the single-server shorthand — required together with NTFY_AUTH_PASSWORD.—
NTFY_AUTH_PASSWORDBasic-auth password for the single-server shorthand — required together with NTFY_AUTH_USERNAME.—
NTFY_REQUEST_TIMEOUT_MSPer-attempt HTTP timeout in milliseconds. Each call is also capped at 50 s across all attempts.15000
NTFY_MAX_RETRIESMax retry attempts for transient upstream failures (5xx, network, 429).3
NTFY_BLOCK_PRIVATE_HOSTSWhen true, a per-call base_url override must resolve to a public address and redirects are not followed. Registered servers are exempt. Turn it on where callers you don't control can reach the server.false
NTFY_ENABLE_EMOJI_TAGSSet to false to disable ntfy_search_emoji_tags. An unrecognized value fails startup.true
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_SESSION_MODEHTTP session model: auto, stateful, or stateless. Over HTTP this server requires stateful (auto resolves to it); stateless is refused at start. Ignored on stdio.stateful
MCP_HTTP_HOSTHTTP host.127.0.0.1
MCP_HTTP_PORTHTTP port.3010
MCP_HTTP_ENDPOINT_PATHHTTP endpoint path./mcp
MCP_AUTH_MODEAuth mode: none, jwt, or oauth.none
MCP_REQUEST_STATE_KEYRecommended for HTTP. Key (≥ 32 bytes, e.g. openssl rand -base64 32, the same on every instance) that seals the consent requestState for 900 s; an invalid or expired state is rejected with -32602 invalid_request_state.—
STORAGE_PROVIDER_TYPEWhere consent records live (600 s TTL). Multi-instance HTTP needs shared storage: filesystem (shared volume), supabase, or cloudflare-d1, not cloudflare-kv.in-memory
MCP_LOG_LEVELLog level (RFC 5424).info

| LOGS_DIR | Directory for file-based logs (

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

ถาม PopNx