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

Centerfield Visitor MCP

โดย hmkimรุ่น 0.3.0i★ –iรันบนเครื่อง
ชื่อใน registryio.github.hmkim/centerfield-visitor-mcp

ติดตั้ง

ภาพรวม

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

Centerfield building (Seoul) visitor pre-registration: validate, preview and register visitors.

สามเสาของ PopNx MCP

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

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

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

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: อื่น ๆ
  • ต้องใส่ค่าเหล่านี้: CF_PERSON_IN_CHARGE_MOBILE

ติดตั้ง

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

ก่อนติดตั้ง

  • ผลตรวจเบื้องต้น: ผ่าน 1 จาก 1 ข้อ
  • รันในเครื่องคุณด้วยสิทธิ์ของผู้ใช้คุณ (ไฟล์ อินเทอร์เน็ต แอปต่าง ๆ)
  • ค่าที่คุณต้องใส่เอง: CF_ENV_FILE, CF_COMPANY_NAME, CF_PERSON_IN_CHARGE_MOBILE, CF_DEFAULT_FLOOR, CF_EXPOSE_WRITE_TOOLS

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

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

  • PyPIติดตั้ง uv ของ Python (มีคำสั่ง uvx) ในเครื่อง

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

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

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

{
  "mcpServers": {
    "centerfield-visitor": {
      "command": "uvx",
      "args": [
        "centerfield-visitor-mcp"
      ],
      "env": {
        "CF_ENV_FILE": "ใส่ค่าของคุณ",
        "CF_COMPANY_NAME": "ใส่ค่าของคุณ",
        "CF_PERSON_IN_CHARGE_MOBILE": "ใส่ค่าของคุณ",
        "CF_DEFAULT_FLOOR": "ใส่ค่าของคุณ",
        "CF_EXPOSE_WRITE_TOOLS": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

claude mcp add centerfield-visitor --env CF_ENV_FILE='ใส่ค่าของคุณ' --env CF_COMPANY_NAME='ใส่ค่าของคุณ' --env CF_PERSON_IN_CHARGE_MOBILE='ใส่ค่าของคุณ' --env CF_DEFAULT_FLOOR='ใส่ค่าของคุณ' --env CF_EXPOSE_WRITE_TOOLS='ใส่ค่าของคุณ' -- uvx centerfield-visitor-mcp

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

เปิดใน Cursor

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

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

{
  "mcpServers": {
    "centerfield-visitor": {
      "command": "uvx",
      "args": [
        "centerfield-visitor-mcp"
      ],
      "env": {
        "CF_ENV_FILE": "ใส่ค่าของคุณ",
        "CF_COMPANY_NAME": "ใส่ค่าของคุณ",
        "CF_PERSON_IN_CHARGE_MOBILE": "ใส่ค่าของคุณ",
        "CF_DEFAULT_FLOOR": "ใส่ค่าของคุณ",
        "CF_EXPOSE_WRITE_TOOLS": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

เปิดใน VS Code

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

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

{
  "servers": {
    "centerfield-visitor": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "centerfield-visitor-mcp"
      ],
      "env": {
        "CF_ENV_FILE": "ใส่ค่าของคุณ",
        "CF_COMPANY_NAME": "ใส่ค่าของคุณ",
        "CF_PERSON_IN_CHARGE_MOBILE": "ใส่ค่าของคุณ",
        "CF_DEFAULT_FLOOR": "ใส่ค่าของคุณ",
        "CF_EXPOSE_WRITE_TOOLS": "ใส่ค่าของคุณ"
      }
    }
  }
}

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

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

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

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

  • CF_ENV_FILE env
    Absolute path to a .env holding CF_COMPANY_NAME and CF_PERSON_IN_CHARGE_MOBILE (optional if ~/.config/centerfield-visitor-mcp/.env exists)
  • CF_COMPANY_NAME env
    Tenant company name exactly as registered in Centerfield
  • CF_PERSON_IN_CHARGE_MOBILE ความลับ env
    Mobile number of the approval contact registered in Centerfield
  • CF_DEFAULT_FLOOR env
    Floor used when a row omits it (12 or 18)
  • CF_EXPOSE_WRITE_TOOLS env
    Set false for a preview-only server that does not register reservation-creating tools

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

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

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

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

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

  • ✓ ผ่าน

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

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

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

    ยังมีคนดูแล

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

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

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

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

  • – ไม่เกี่ยว

    endpoint ตอบ

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

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

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

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

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

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

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

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

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

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

Centerfield Visitor MCP ปลอดภัยไหม?

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

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

ต้องใส่ค่าเหล่านี้: CF_PERSON_IN_CHARGE_MOBILE

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

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

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

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

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

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

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

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

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

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

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

Spec Driven Development

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

โดย formulahendryเริ่มต้น↓ 66/สัปดาห์★ 440อัปเดต 14 เดือนที่ผ่านมา

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

Remote Desktop Commander

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

โดย desktop-commanderกำลังโต★ 211อัปเดต 4 วันที่ผ่านมา

รันบนคลาวด์✓ desktopcommander.app

awardlanes

USDA award lanes for freight brokers

โดย awardlanes.comเริ่มต้นอัปเดต วันนี้

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

README จากผู้ทำ

เปิดอ่าน README

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

Centerfield Visitor MCP

An MCP (Model Context Protocol) server that automates visitor reservations for the Centerfield building (www.centerfield.co.kr). Use it from any MCP-compatible agent — Kiro CLI / Kiro IDE / KiroCrew, Claude Code, Claude Desktop, Codex CLI, Cursor, Strands Agents (local stdio) and Amazon Quick or any remote client (streamable HTTP) — to register visitors with natural language: single entries, pasted text, survey exports, or Excel/CSV files.

센터필드 빌딩 방문예약을 자동화하는 MCP 서버입니다. 로컬 에이전트(Kiro, Claude Code, Codex, Cursor …)는

stdio로, Amazon Quick 같은 원격 에이전트는 streamable HTTP로 같은 서버를 씁니다.

The stdio server runs entirely locally — uvx downloads and runs it on your machine, and it talks directly to www.centerfield.co.kr. No backend service is required for local agents.

Quick start

mkdir -p ~/.config/centerfield-visitor-mcp

cp .env.example ~/.config/centerfield-visitor-mcp/.env # fill CF_COMPANY_NAME, CF_PERSON_IN_CHARGE_MOBILE uvx centerfield-visitor-mcp # stdio; every client below can launch this

~/.config/centerfield-visitor-mcp/.env is read automatically, so client configs need no secrets.

Client setup

ClientHowDetails
Kiro CLI~/.kiro/settings/mcp.jsonclients/kiro/mcp.json
Kiro IDE.kiro/settings/mcp.json (workspace)same file
KiroCrewagent JSON mcpServers + toolsclients/kirocrew/agent-snippet.json
Claude Codeclaude mcp add centerfield-visitor --scope user -- uvx centerfield-visitor-mcpclients/claude-code/
Claude Desktopclaude_desktop_config.jsonclients/claude-desktop/
Codex CLI~/.codex/config.toml [mcp_servers.centerfield-visitor]clients/codex/config.toml
Cursor.cursor/mcp.jsonclients/cursor/mcp.json
Strands AgentsMCPClient(stdio_client(...))clients/strands/example.py
Amazon Quickremote streamable HTTP + OAuth 2LOclients/remote/README.md

Agent skill (Agent Skills spec, works in Claude Code / Kiro / KiroCrew): SKILL.md — also shipped as the project skill .claude/skills/centerfield-visitor/SKILL.md.

Tools

ToolSide effectNotes
validate_configuration()noneChecks company, approval contact and floor list against the live site
preview_visitors_from_text(text, default_visit_date, default_visit_time, default_floor, default_purpose, participation)noneParse + validate pasted CSV/TSV
register_visitor(..., dry_run)creates a reservationdry_run=true validates (input + site) without submitting
register_visitors_from_text(text, defaults…, participation, dry_run)creates reservationsSequential, one summary string returned
preview_visitors_from_file(file_path, defaults…, participation)nonestdio deployments only (needs a shared filesystem)
register_visitors_from_file(file_path, defaults…, participation, dry_run)creates reservationsstdio deployments only

register_* tools exist only while CF_EXPOSE_WRITE_TOOLS is true (default).

Recommended flow: validate_configuration once → preview_* → human confirms → register_*. The default_* arguments fill columns that attendee lists usually lack (visit date/time/floor). participation keeps only rows whose attendance-type column contains the given text (see below). Previews mask mobile numbers and emails (010******78, h***@example.com); pass the original values to register_*.

With CF_EXPOSE_WRITE_TOOLS=false the three register_* tools are not registered at all, so the server is preview-only regardless of what a client sends.

Reservation outcomes

Every visitor gets one status (ReservationResult.status; success is kept for compatibility and is true only for SUCCEEDED):

StatusMeaningWhat to do
SUCCEEDEDCenterfield answered success: true (dry run: validated, nothing submitted). No reservation id is returned by the sitedone
FAILEDDefinitely not created: explicit success: false, HTTP 4xx except 408/429, validation/setup error, or the connection was never establishedfix the cause, run a new preview, get approval, retry that row only
UNKNOWNThe request may have been processed but the outcome is unconfirmed: HTTP 408/429/5xx, read/write timeout, read/write error, remote protocol error, non-JSON or unrecognised responsedo not retry; check the Centerfield app/site first
NOT_SUBMITTEDNot sent because an earlier row in the same bulk call was UNKNOWNresolve the UNKNOWN row, then preview + approve again

Bulk calls stop at the first UNKNOWN. The summary always reads 총 N명 중 A명 성공, B명 실패, C명 결과 불명(UNKNOWN), D명 미제출(NOT_SUBMITTED); BulkReservationOut carries succeeded, failed, unknown, not_submitted (they add up to total) and stopped_on_unknown. failed now counts only definite failures (it used to be total - succeeded).

Logs record only the error class and HTTP status, never the site's response text or visitor data.

Input constraints

FieldRule
visit_timeHH:MM, 30-minute intervals, 08:00–20:00 (HH:MM:SS from spreadsheets tolerated)
visit_dateYYYY-MM-DD, today or later in Asia/Seoul, whatever the host time zone; date + time already passed in Seoul is rejected
floor12 or 18; if omitted, CF_DEFAULT_FLOOR (default 12)
visit_purposemeeting (default), visit_business, interview, tour, construction, others
visitor_mobileKorean mobile only (a site requirement); 010-1234-5678, 010 1234 5678, +82 10-1234-5678 are normalized to 01012345678; empty or non-Korean numbers are rejected. Visitors without a Korean mobile need Centerfield's manual process
visitor_emailvalid email address
duplicatesrows with the same mobile + date + time inside one request are skipped and reported

File / text format

Header row in Korean or English; survey-export headers are recognized too (Full Name, Email, 연락처(…), 소속/회사 (…)). Unknown columns are ignored.

이름,회사,전화번호,이메일,방문일,방문시간,층

홍길동,ABC주식회사,01012345678,hong@abc.com,2026-11-15,10:00,12

Lists without date/time columns: pass default_visit_date="2026-11-15", default_visit_time="10:00".

Attendance type (survey exports): a column such as 참석 형태 / 어떤 형태로 참석하시나요? / Participation is detected and summarised in the preview (참석 형태 컬럼 감지: 온라인 7, 오프라인 3). Pass participation="오프라인" to process only rows whose value contains that text (case/space-insensitive; rows with an empty value are dropped and counted). If a filter is requested but the input has no such column, register_* refuses instead of registering everyone, and preview_* shows the unfiltered rows under a warning.

Configuration

VariableDescriptionDefaultRequired
CF_COMPANY_NAMETenant company name as registered in Centerfield_(empty)_✅
CF_PERSON_IN_CHARGE_MOBILEMobile number of the approval contact registered in Centerfield_(empty)_✅
CF_BUILDING / CF_BUILDING_KEYBuilding code / display keyeast / East
CF_DEFAULT_FLOORFloor when a row omits it (12 or 18)12
CF_TRANSPORTstdio or streamable-httpstdio
CF_HTTP_HOST / CF_HTTP_PORT / CF_HTTP_PATHHTTP bind address and path127.0.0.1 / 8000 / /mcp
CF_HTTP_STATELESS / CF_HTTP_JSON_RESPONSEStreamable HTTP modetrue / true
CF_HTTP_ALLOWED_HOSTSHost allow-list for DNS-rebinding protection (host:* = any port). Empty: loopback binds use a built-in localhost list; other binds run with protection off and log a warning_(empty)_
CF_EXPOSE_FILE_TOOLSForce file tools on/offon for stdio, off for HTTP
CF_EXPOSE_WRITE_TOOLSRegister the reservation-creating register_* tools. false = preview-only server (tools absent from the tool list). Remote deployments should set it explicitly per endpointtrue
CF_CENTERFIELD_BASE_URLCenterfield base URLhttps://www.centerfield.co.kr
CF_REQUEST_TIMEOUTHTTP timeout (seconds)30
CF_BULK_MAX_VISITORSMax visitors per bulk request (default 20; use 10 as a conservative Amazon Quick cap)20
CF_REQUEST_DELAYDelay between submissions (seconds)0.5
CF_ENV_FILEExtra .env to load_(unset)_

.env load order (later overrides earlier): ~/.config/centerfield-visitor-mcp/.env → ./.env → $CF_ENV_FILE; process environment variables always win. Startup logs (stderr) list the files read and any problems.

CF_PERSON_IN_CHARGE_MOBILE must be the mobile number registered as the tenant's approval contact.

Run validate_configuration after setup — it checks both values live without creating a reservation.

Remote mode (Amazon Quick, hosted deployments)

CF_TRANSPORT=streamable-http CF_HTTP_HOST=0.0.0.0 uvx centerfield-visitor-mcp    # http://host:8000/mcp

docker build --platform linux/arm64 -t centerfield-visitor-mcp . # or the container image

See clients/remote/README.md for the AgentCore Runtime + Cognito recipe and the Amazon Quick connector steps. Works with mcp SDK 1.x and 2.x.

Development & testing

uv sync --group dev

uv run pytest # offline unit tests (mocked HTTP) uv run --with "mcp<2" pytest # same suite on mcp SDK 1.x uv run python scripts/smoke_http.py # streamable-http transport smoke test uv run pytest -m live # read-only checks against the live site (needs a real .env) CF_LIVE_REGISTER=1 CF_TEST_VISITOR_NAME=... CF_TEST_VISITOR_MOBILE=... CF_TEST_VISITOR_EMAIL=... uv run pytest -m live

The last command creates one real reservation; confirm it in the Centerfield mobile app and cancel it there (there is no cancel API).

How it works

The server holds a single session against the Centerfield site, manages CSRF tokens, verifies the tenant company and approval contact, resolves the floor key, then submits the reservation form. Bulk requests are processed sequentially with a configurable delay and stop at the first UNKNOWN outcome.

Known limitations

  • No server-enforced preview → approval → write binding. The server does not issue a preview token that register_* must present, so "a human approved exactly this list" is enforced by the agent skill and the client's tool-approval prompt, not by the server. A token scheme was deliberately left out until a stateless design is settled (the HTTP transport is stateless, so the token must be verifiable without server-side storage, bound to the exact normalized input, short-lived, and replay-safe). Until then, keep per-call approval on for register_* in your client (do not "always allow"), and use CF_EXPOSE_WRITE_TOOLS=false for endpoints that should only preview.
  • No reservation id. The site's success response carries no identifier the server can return; SUCCEEDED means "the site answered success: true". Check the Centerfield app for the booking itself.
  • No cancel API. Cancel wrong bookings in the Centerfield app/site.

MCP Registry

Listed as io.github.hmkim/centerfield-visitor-mcp (see server.json).

mcp-name: io.github.hmkim/centerfield-visitor-mcp

License

MIT

ถาม PopNx