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

HubSpot

โดย ohnebenรุ่น 2.0.1i★ –iรันบนเครื่อง
ชื่อใน registryio.github.ohneben/hubspot-mcp

ติดตั้ง

ภาพรวม

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

HubSpot API: 1,000+ endpoints as safety-categorized, hub- and plan-aware MCP tools, stdio or HTTP.

สามเสาของ PopNx MCP

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

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

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

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: การตลาดและโซเชียล
  • ต้องใส่ค่าเหล่านี้: MCP_TRANSPORT, HUBSPOT_ACCESS_TOKEN, MCP_AUTH_TOKEN

ติดตั้ง

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

ก่อนติดตั้ง

  • ผลตรวจเบื้องต้น: ผ่าน 1 จาก 1 ข้อ
  • รันในเครื่องคุณด้วยสิทธิ์ของผู้ใช้คุณ (ไฟล์ อินเทอร์เน็ต แอปต่าง ๆ)
  • ค่าที่คุณต้องใส่เอง: MCP_TRANSPORT, HUBSPOT_ACCESS_TOKEN, HUBSPOT_BASE_URL, HUBSPOT_TOOL_MODE, HUBSPOT_READ_ONLY, HUBSPOT_CAPABILITY_CHECK, MCP_AUTH_TOKEN

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

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

  • Dockerติดตั้ง Docker ในเครื่อง

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

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

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

{
  "mcpServers": {
    "hubspot": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "HUBSPOT_ACCESS_TOKEN",
        "-e",
        "HUBSPOT_BASE_URL",
        "-e",
        "HUBSPOT_TOOL_MODE",
        "-e",
        "HUBSPOT_READ_ONLY",
        "-e",
        "HUBSPOT_CAPABILITY_CHECK",
        "-e",
        "MCP_AUTH_TOKEN",
        "ghcr.io/ohneben/hubspot-mcp:2.0.1"
      ],
      "env": {
        "MCP_TRANSPORT": "ใส่ค่าของคุณ",
        "HUBSPOT_ACCESS_TOKEN": "ใส่ค่าของคุณ",
        "HUBSPOT_BASE_URL": "ใส่ค่าของคุณ",
        "HUBSPOT_TOOL_MODE": "ใส่ค่าของคุณ",
        "HUBSPOT_READ_ONLY": "ใส่ค่าของคุณ",
        "HUBSPOT_CAPABILITY_CHECK": "ใส่ค่าของคุณ",
        "MCP_AUTH_TOKEN": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

claude mcp add hubspot --env MCP_TRANSPORT='ใส่ค่าของคุณ' --env HUBSPOT_ACCESS_TOKEN='ใส่ค่าของคุณ' --env HUBSPOT_BASE_URL='ใส่ค่าของคุณ' --env HUBSPOT_TOOL_MODE='ใส่ค่าของคุณ' --env HUBSPOT_READ_ONLY='ใส่ค่าของคุณ' --env HUBSPOT_CAPABILITY_CHECK='ใส่ค่าของคุณ' --env MCP_AUTH_TOKEN='ใส่ค่าของคุณ' -- docker run -i --rm -e MCP_TRANSPORT -e HUBSPOT_ACCESS_TOKEN -e HUBSPOT_BASE_URL -e HUBSPOT_TOOL_MODE -e HUBSPOT_READ_ONLY -e HUBSPOT_CAPABILITY_CHECK -e MCP_AUTH_TOKEN ghcr.io/ohneben/hubspot-mcp:2.0.1

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

เปิดใน Cursor

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

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

{
  "mcpServers": {
    "hubspot": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "HUBSPOT_ACCESS_TOKEN",
        "-e",
        "HUBSPOT_BASE_URL",
        "-e",
        "HUBSPOT_TOOL_MODE",
        "-e",
        "HUBSPOT_READ_ONLY",
        "-e",
        "HUBSPOT_CAPABILITY_CHECK",
        "-e",
        "MCP_AUTH_TOKEN",
        "ghcr.io/ohneben/hubspot-mcp:2.0.1"
      ],
      "env": {
        "MCP_TRANSPORT": "ใส่ค่าของคุณ",
        "HUBSPOT_ACCESS_TOKEN": "ใส่ค่าของคุณ",
        "HUBSPOT_BASE_URL": "ใส่ค่าของคุณ",
        "HUBSPOT_TOOL_MODE": "ใส่ค่าของคุณ",
        "HUBSPOT_READ_ONLY": "ใส่ค่าของคุณ",
        "HUBSPOT_CAPABILITY_CHECK": "ใส่ค่าของคุณ",
        "MCP_AUTH_TOKEN": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

เปิดใน VS Code

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

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

{
  "servers": {
    "hubspot": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "HUBSPOT_ACCESS_TOKEN",
        "-e",
        "HUBSPOT_BASE_URL",
        "-e",
        "HUBSPOT_TOOL_MODE",
        "-e",
        "HUBSPOT_READ_ONLY",
        "-e",
        "HUBSPOT_CAPABILITY_CHECK",
        "-e",
        "MCP_AUTH_TOKEN",
        "ghcr.io/ohneben/hubspot-mcp:2.0.1"
      ],
      "env": {
        "MCP_TRANSPORT": "ใส่ค่าของคุณ",
        "HUBSPOT_ACCESS_TOKEN": "ใส่ค่าของคุณ",
        "HUBSPOT_BASE_URL": "ใส่ค่าของคุณ",
        "HUBSPOT_TOOL_MODE": "ใส่ค่าของคุณ",
        "HUBSPOT_READ_ONLY": "ใส่ค่าของคุณ",
        "HUBSPOT_CAPABILITY_CHECK": "ใส่ค่าของคุณ",
        "MCP_AUTH_TOKEN": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

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

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

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

  • MCP_TRANSPORT จำเป็น env
    Server transport. Set to 'stdio' for local MCP clients; the image otherwise starts the Streamable HTTP transport.
  • HUBSPOT_ACCESS_TOKEN ความลับ จำเป็น env
    HubSpot service key or legacy private app token (pat-...), from Settings -> Integrations. An OAuth access token also works.
  • HUBSPOT_BASE_URL env
    API host. Default https://api.hubapi.com; use https://api-eu1.hubapi.com for EU data residency portals.
  • HUBSPOT_TOOL_MODE env
    'discovery' (default) exposes 3 meta-tools that search, inspect and call all 1,076 endpoints; 'all' exposes the ~690 endpoint tools directly.
  • HUBSPOT_READ_ONLY env
    Set to 'true' to expose only read-only tools.
  • HUBSPOT_CAPABILITY_CHECK env
    Read the token's scopes and probe paid-tier or beta API groups at startup (read-only, up to about 30 API calls). Set to 'false' to skip.
  • MCP_AUTH_TOKEN ความลับ env
    Only for MCP_TRANSPORT=http: bearer token required on /mcp. Without it a non-loopback bind refuses to start.

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

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

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

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

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

  • ✓ ผ่าน

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

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

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

    ยังมีคนดูแล

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

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

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

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

  • – ไม่เกี่ยว

    endpoint ตอบ

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

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

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

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

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

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

เทียบกับตัวอื่นในหมวด การตลาดและโซเชียลi

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

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

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

HubSpot ปลอดภัยไหม?

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

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

ต้องใส่ค่าเหล่านี้: MCP_TRANSPORT, HUBSPOT_ACCESS_TOKEN, MCP_AUTH_TOKEN

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

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

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

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.0.1) เข้า registry 2 เดือนที่ผ่านมา

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

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

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

ในหมวดเดียวกันมี MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer

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

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

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

MCP YouTube Transcript

An MCP server retrieving transcripts of YouTube videos

โดย jkawamotoกำลังโต★ 495อัปเดต 11 วันที่ผ่านมา

รันบนเครื่อง

Google Analytics MCP

GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.

โดย surendranbกำลังโต↓ 1.1K/สัปดาห์★ 244อัปเดต 11 วันที่ผ่านมา

รันบนเครื่อง

BibiGPT YouTube Video Summarizer

AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.

โดย JimmyLvเริ่มต้น★ 137อัปเดต 11 วันที่ผ่านมา

รันบนคลาวด์✓ bibigpt.co

README จากผู้ทำ

เปิดอ่าน README

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

ohneben's HubSpot MCP


License & checks
MCP registries

The most complete HubSpot MCP server there is. Run your entire HubSpot account in plain language from Claude, Cursor, or any other MCP client.

This Model Context Protocol server exposes the whole public HubSpot API — all 1,076 endpoints across 102 APIs, in 687 tools — CRM, CMS, Marketing, Automation, Conversations, Commerce, Files, Settings, Webhooks and more, generated straight from HubSpot's own OpenAPI definitions. Endpoints HubSpot repeats per object type are one tool each (crm_objects_search with objectType: "deals" instead of 32 separate search tools), and every tool description says when to use it. Every tool is safety-categorized (🟢 read-only / 🟡 write / 🔴 destructive) and — unique to this server — hub & plan aware: HubSpot publishes which hub and tier every API needs (Free / Starter / Professional / Enterprise), and this server carries that straight into each tool plus a live capability report for *your* portal. It runs over stdio (Claude Desktop and other local launchers) or Streamable HTTP (hosted in Docker), and ships with retries, client-side rate limiting tuned to HubSpot's burst caps, and request timeouts so it holds up against a live account.

Why you'll want this

Some MCP servers just forward a slice of the API. This one is built to be safe to hand to an LLM, complete, and easy to run for real:

What you getWhy it matters
All 1,076 endpoints — the whole public APIContacts, companies, deals, tickets, every engagement type, associations v4, properties, pipelines, lists, imports/exports, marketing emails & events, campaigns, forms, transactional email, sequences, workflows/actions, conversations & custom channels, CMS pages/posts/HubDB/source code, files, commerce (invoices, orders, carts, payments, subscriptions), settings, webhooks — nothing hand-picked or left behind. Most servers stop at ~30 CRM tools.
687 tools, not 1,076 look-alikesHubSpot repeats the same endpoints for 32 CRM object types, for landing and site pages, and for blog posts, authors and tags. Those are one tool each with a selector argument (objectType, pageType, blogResource), so crm_objects_search covers contacts, deals, tickets and custom objects. Every call still goes to exactly the endpoint it went to before, with that endpoint's scopes and plan hints.
Descriptions that say when to use a toolEach description opens with what the tool does, then when to prefer a sibling (crm_objects_list points to crm_objects_search for filtering and crm_objects_batch_read for known IDs), what it changes, plan and scopes, and the endpoint it calls. Undocumented HubSpot parameters get a description.
Hub & plan awareness *(nobody else has this)*HubSpot gates APIs by hub and tier — HubDB needs Content/Marketing Hub Professional, custom-object schemas need Enterprise, sequences need Sales/Service Professional. Every tool states its requirement, straight from HubSpot's own API index.
Access check at startupWhen the server starts it reads the token's scopes and probes every paid-tier or beta API group with one cheap read. The model gets the result in the server instructions, search results say per tool whether this token can use it, and hubspot_get_capabilities explains each status with the scopes to add. No more walls of mystery 403s.
Curated safety categories 🟢 / 🟡 / 🔴Not naive "GET = safe": a POST …/search is a read-only query, merge is flagged irreversible, gdpr-delete is a permanent purge (vs. archive → recycle bin), list-membership calls are reversible links, POST /crm/v3/imports is a bulk import, and transactional email is sends messages.
Machine-readable MCP annotations (readOnlyHint, destructiveHint)Hosts that honor annotations (Claude included) can auto-trust reads and demand confirmation before anything destructive.
Actionable error hints403 with MISSING_SCOPES → the exact scopes to add and where; plain 403 on a gated API → the plan tier it needs; 401 → token type & expiry guidance; 429 → your limits. The model gets *how to fix it*, not just *what broke*.
Read-only mode & group filteringExpose only the 302 🟢 read-only tools (HUBSPOT_READ_ONLY=true), or narrow to the groups you use (HUBSPOT_INCLUDE_GROUPS=contacts,deals,cms:*). Area wildcards included.
Discovery mode by defaultOut of the box the model sees 6 tools (~2k tokens): search, inspect and invoke over all 687 endpoint tools, plus the capability, GraphQL and raw-request tools. HUBSPOT_TOOL_MODE=all exposes every endpoint tool directly. Read-only mode applies either way.
Real file uploadsThe multipart endpoints (Files, CRM imports, HubDB import, CMS source code) actually work — pass file content inline or as base64. Most generated servers can't do multipart at all.
Automatic retries with backoffTransient 429 / 5xx responses are retried with jittered exponential backoff, honoring HubSpot's Retry-After header.
Built-in rate limitingSelf-throttles under HubSpot's burst caps (default 100 req / 10 s) with a separate limiter for the `/search` endpoints (~5 req/s cap). A burst of tool calls won't trip a 429.
Response-size guardOptionally cap huge list responses (HUBSPOT_MAX_RESPONSE_CHARS) so one call can't blow the model's context window.
CRM GraphQL passthroughHubSpot's GraphQL endpoint is query-only, so it's a 🟢 tool here — fetch a contact, its company and that company's deals in one round-trip.
Raw-request escape hatchhubspot_api_request reaches brand-new or beta endpoints the moment HubSpot ships them — auth, throttling and retries still handled server-side.
**Two transports: stdio *and* Streamable HTTP**Use it locally in Claude Desktop, or run one always-on server that any number of MCP clients reach over HTTP.
Docker + docker-compose, health check, auto-restartProduction-style deployment out of the box: docker compose up and it stays up.
Optional bearer-token auth on the HTTP endpointPut the server behind a shared secret the moment it's reachable beyond localhost.
Your token never reaches the modelThe access token lives in the server's environment and is injected on every request — the assistant only ever sees tool inputs and API responses.
Drop-in spec updatesnpm run fetch-specs pulls HubSpot's latest OpenAPI definitions (and their hub/tier metadata) from HubSpot's public index — new endpoints become new tools on rebuild, no code changes.

How it compares

There are a few ways to reach HubSpot from an AI assistant today. Here's how this server stacks up against the alternatives:

This serverOfficial HubSpot MCPshinzo-labs hubspot-mcpmcp-hubspot (buryhuang)CData MCP
Approx. tools~690 (all 1,076 endpoints)~7 curated (remote)100+~73 (generic SQL)
Whole public API (CRM and CMS · Marketing · Automation · Commerce · Files · Settings · Webhooks)✅➖ CRM + some content reads➖ CRM-centric❌❌
Hub & plan-tier awareness per tool✅❌❌❌❌
Account capability report (scopes · usage · unlocks)✅❌❌❌❌
Reads and writes✅✅✅➖ partial❌ read-only
Curated 🟢 / 🟡 / 🔴 safety categories✅➖➖➖n/a
readOnlyHint / destructiveHint annotations✅➖➖➖➖
Read-only mode + group filtering✅❌❌❌always read-only
File uploads (multipart)✅❌❌❌❌
GraphQL passthrough✅❌❌❌❌
Rate limiting + auto-retry (429/5xx)✅➖➖❌❌
stdio transport✅✅ local package✅✅✅
Streamable-HTTP transport✅✅ hosted remote✅❌❌
Docker + compose + health check✅❌➖ Dockerfile➖ image only❌
Self-hosted on your own infra✅➖ vendor cloud✅✅✅
LanguageTypeScriptTypeScriptTypeScriptPythonJava
LicenseMIT—MITMITMIT

✅ = yes · ➖ = partial / not documented · ❌ = no. Compiled from each project's public documentation; this is an unofficial project, not affiliated with HubSpot or the projects listed. Tool counts are approximate and move as APIs evolve.

The short version: the official remote server is a great managed on-ramp but covers a handful of curated tools. The community servers are solid but CRM-centric, without plan awareness or safety guardrails. This one gives you the entire public API, hub/plan awareness no one else has, both transports, a production Docker deployment, and curated safety categories — self-hosted, on your token, MIT.

What you can do

Once it's connected, ask your assistant things like:

  • "Find jane@example.com, show her company, open deals and the last emails we exchanged."
  • "Create a $12,000 deal 'Acme expansion' in the Sales pipeline, stage Qualified, associated with Acme Corp."
  • "Search contacts created this month with lifecycle stage MQL and add them to the 'Q3 nurture' list."
  • "Which HubDB tables exist? Add a row to 'pricing' and publish the table."
  • "Clone last month's newsletter as a draft — don't publish."
  • "Upload this CSV and start a contact import mapped to email + first name."
  • "What can my token do? Check my API usage and which scopes are missing for HubDB." *(→ hubspot_get_capabilities)*
  • "Merge these two duplicate contacts — after showing me both records first."

Tools are generated automatically from HubSpot's specs and grouped into 🟢 read-only, 🟡 write and 🔴 destructive — so a well-behaved host can treat each group differently.

How it works

Claude / Cursor / any MCP client  ──MCP──►  this server  ──HTTPS──►  api.hubapi.com (your portal)

The server parses 104 bundled OpenAPI definitions (fetched from HubSpot's public API index, which also publishes per-API hub/tier requirements) into MCP tools — resolving $refs, guarding against recursive schemas, merging endpoints that only differ by object type into one tool, deriving clean names like crm_objects_search and hubdb_tables_create_table, and tagging each tool with a curated safety category, its plan requirement and its OAuth scopes. Your access token is injected server-side on every request; the model never sees or handles it.

Hub & plan awareness

HubSpot isn't one API — what you can call depends on which hubs (Marketing, Sales, Service, Content, Commerce, Operations) and which tier (Free, Starter, Professional, Enterprise) the portal has, plus the scopes gr

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

ถาม PopNx