validate_configuration
센터필드 MCP 설정(입주사명, 승인 담당자, 층 목록)을 실제 사이트에 조회해 확인합니다. 예약을 생성하지 않습니다. Keywords: 센터필드 설정 확인, validate configuration, 담당자 확인, dry run, 연결 테스트
Takes no parameters.

io.github.hmkimPublished by GitHub account hmkimv0.3.0Updated Nov 11, 2026
Centerfield building (Seoul) visitor pre-registration: validate, preview and register visitors.
Registers visitors for the Centerfield building in Seoul: validates tenant settings, previews attendee lists, and submits reservations.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
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.
~/.config/centerfield-visitor-mcp/.env is read automatically, so client configs need no secrets.
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.
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.
Every visitor gets one status (ReservationResult.status; success is kept for compatibility
and is true only for SUCCEEDED):
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.
Header row in Korean or English; survey-export headers are recognized too
(Full Name, Email, 연락처(…), 소속/회사 (…)). Unknown columns are ignored.
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.
.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_MOBILEmust be the mobile number registered as the tenant's approval contact. Runvalidate_configurationafter setup — it checks both values live without creating a reservation.
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.
The last command creates one real reservation; confirm it in the Centerfield mobile app and cancel it there (there is no cancel API).
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.
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.SUCCEEDED
means "the site answered success: true". Check the Centerfield app for the booking itself.Listed as io.github.hmkim/centerfield-visitor-mcp (see server.json).
mcp-name: io.github.hmkim/centerfield-visitor-mcp
Source: README.md at commit c7d20dc
센터필드 MCP 설정(입주사명, 승인 담당자, 층 목록)을 실제 사이트에 조회해 확인합니다. 예약을 생성하지 않습니다. Keywords: 센터필드 설정 확인, validate configuration, 담당자 확인, dry run, 연결 테스트
Takes no parameters.
텍스트(복사/붙여넣기)로 방문자 목록을 입력받아 등록 없이 파싱·검증 결과만 보여줍니다. 등록 전에 먼저 호출하세요. Keywords: 센터필드, 방문자 미리보기, 명단 확인, preview visitors, 텍스트 확인, 등록 전 확인
textrequireddefault_floorparticipationdefault_purposedefault_visit_datedefault_visit_time센터필드 빌딩 방문자 1명을 예약 등록합니다. dry_run=true면 사이트 검증까지만 하고 제출하지 않습니다. 결과 status: SUCCEEDED(센터필드 success=true 응답) / FAILED(명시적 실패) / UNKNOWN(결과 불명, 재시도 금지) / NOT_SUBMITTED(미제출). Keywords: 센터필드, 방문자 등록, 방문 예약, 방문 신청, visitor registration, centerfield reservation, register visitor, book visitor
floordry_runvisit_daterequiredvisit_timerequiredvisitor_namerequiredvisit_purposevisitor_emailrequiredvisitor_mobilerequiredvisitor_company_namerequired텍스트(복사/붙여넣기)로 방문자 목록을 입력받아 일괄 등록합니다. 날짜/시간 컬럼이 없는 참석자 명단은 default_visit_date/default_visit_time을 함께 지정하세요. dry_run=true면 제출하지 않습니다. 첫 결과 불명 행에서 중단합니다. 결과 status: SUCCEEDED(센터필드 success=true 응답) / FAILED(명시적 실패) / UNKNOWN(결과 불명, 재시도 금지) / NOT_SUBMITTED(미제출). Keywords: 센터필드, 방문자 등록, 텍스트 입력, 복사 붙여넣기, paste visitors, text registration, 일괄 등록, 방문자 목록
textrequireddry_rundefault_floorparticipationdefault_purposedefault_visit_datedefault_visit_time파일(.xlsx/.csv/.tsv)의 방문자 목록을 미리 확인합니다 (실제 등록하지 않음). Keywords: 센터필드, 방문자 미리보기, 파일 확인, preview visitors, 명단 확인, 등록 전 확인
file_pathrequireddefault_floorparticipationdefault_purposedefault_visit_datedefault_visit_timeExcel/CSV/TSV 파일에서 방문자 목록을 읽어 일괄 등록합니다. 날짜/시간 컬럼이 없으면 default_visit_date/default_visit_time 지정. dry_run=true면 미제출. 첫 결과 불명 행에서 중단합니다. 결과 status: SUCCEEDED(센터필드 success=true 응답) / FAILED(명시적 실패) / UNKNOWN(결과 불명, 재시도 금지) / NOT_SUBMITTED(미제출). Keywords: 센터필드, 방문자 일괄 등록, 대량 등록, bulk registration, 엑셀 등록, CSV 등록, 파일로 등록, batch visitor, 방문자 명단
dry_runfile_pathrequireddefault_floorparticipationdefault_purposedefault_visit_datedefault_visit_time90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
mkdir -p ~/.config/centerfield-visitor-mcpcp .env.example ~/.config/centerfield-visitor-mcp/.env # fill CF_COMPANY_NAME, CF_PERSON_IN_CHARGE_MOBILEuvx centerfield-visitor-mcp # stdio; every client below can launch this이름,회사,전화번호,이메일,방문일,방문시간,층홍길동,ABC주식회사,01012345678,[email protected],2026-11-15,10:00,12CF_TRANSPORT=streamable-http CF_HTTP_HOST=0.0.0.0 uvx centerfield-visitor-mcp # http://host:8000/mcpdocker build --platform linux/arm64 -t centerfield-visitor-mcp . # or the container imageuv sync --group devuv run pytest # offline unit tests (mocked HTTP)uv run --with "mcp<2" pytest # same suite on mcp SDK 1.xuv run python scripts/smoke_http.py # streamable-http transport smoke testuv 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