Skip to main content
Glama
hmkim

Centerfield Visitor MCP

by hmkim

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.

Related MCP server: Coordinalo MCP Server

Client setup

Client

How

Details

Kiro CLI

~/.kiro/settings/mcp.json

clients/kiro/mcp.json

Kiro IDE

.kiro/settings/mcp.json (workspace)

same file

KiroCrew

agent JSON mcpServers + tools

clients/kirocrew/agent-snippet.json

Claude Code

claude mcp add centerfield-visitor --scope user -- uvx centerfield-visitor-mcp

clients/claude-code/

Claude Desktop

claude_desktop_config.json

clients/claude-desktop/

Codex CLI

~/.codex/config.toml [mcp_servers.centerfield-visitor]

clients/codex/config.toml

Cursor

.cursor/mcp.json

clients/cursor/mcp.json

Strands Agents

MCPClient(stdio_client(...))

clients/strands/example.py

Amazon Quick

remote streamable HTTP + OAuth 2LO

clients/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

Tool

Side effect

Notes

validate_configuration()

none

Checks 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)

none

Parse + validate pasted CSV/TSV

register_visitor(..., dry_run)

creates a reservation

dry_run=true validates (input + site) without submitting

register_visitors_from_text(text, defaults…, participation, dry_run)

creates reservations

Sequential, one summary string returned

preview_visitors_from_file(file_path, defaults…, participation)

none

stdio deployments only (needs a shared filesystem)

register_visitors_from_file(file_path, defaults…, participation, dry_run)

creates reservations

stdio deployments only

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).

Input constraints

Field

Rule

visit_time

HH:MM, 30-minute intervals, 08:00–20:00 (HH:MM:SS from spreadsheets tolerated)

visit_date

YYYY-MM-DD, today or later

floor

12 or 18; if omitted, CF_DEFAULT_FLOOR (default 12)

visit_purpose

meeting (default), visit_business, interview, tour, construction, others

visitor_mobile

Korean mobile; 010-1234-5678, 010 1234 5678, +82 10-1234-5678 are normalized to 01012345678; empty or non-mobile values are rejected

visitor_email

valid email address

duplicates

rows 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

Variable

Description

Default

Required

CF_COMPANY_NAME

Tenant company name as registered in Centerfield

(empty)

✅

CF_PERSON_IN_CHARGE_MOBILE

Mobile number of the approval contact registered in Centerfield

(empty)

✅

CF_BUILDING / CF_BUILDING_KEY

Building code / display key

east / East

CF_DEFAULT_FLOOR

Floor when a row omits it (12 or 18)

12

CF_TRANSPORT

stdio or streamable-http

stdio

CF_HTTP_HOST / CF_HTTP_PORT / CF_HTTP_PATH

HTTP bind address and path

127.0.0.1 / 8000 / /mcp

CF_HTTP_STATELESS / CF_HTTP_JSON_RESPONSE

Streamable HTTP mode

true / true

CF_HTTP_ALLOWED_HOSTS

Host 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_TOOLS

Force file tools on/off

on for stdio, off for HTTP

CF_CENTERFIELD_BASE_URL

Centerfield base URL

https://www.centerfield.co.kr

CF_REQUEST_TIMEOUT

HTTP timeout (seconds)

30

CF_BULK_MAX_VISITORS

Max visitors per bulk request (use 10 for Amazon Quick's 60 s limit)

200

CF_REQUEST_DELAY

Delay between submissions (seconds)

0.5

CF_ENV_FILE

Extra .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.

MCP Registry

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

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

License

MIT

Available Tools

6 tools
preview_visitors_from_fileA

파일(.xlsx/.csv/.tsv)의 방문자 목록을 미리 확인합니다 (실제 등록하지 않음). Keywords: 센터필드, 방문자 미리보기, 파일 확인, preview visitors, 명단 확인, 등록 전 확인

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
default_floorNo
participationNo
default_purposeNo
default_visit_dateNo
default_visit_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose the single most important trait: this is a non-mutating preview. It says nothing about permissions/auth, file size limits, or how malformed rows are handled, and the only structured signal is an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core behavior and the dry-run qualifier are front-loaded in a single compact sentence. The trailing keyword list is largely SEO filler that adds little, but it is short enough not to obscure the main statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers what a preview returns, and the description covers the non-mutating nature of the call. What is missing is any explanation of how the five default_* parameters are applied to file rows lacking those fields, which is essential context for interpreting a preview result on a 6-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and none of the six parameters carry schema descriptions. The description only implies file_path semantics via the listed file extensions; the five optional defaults (default_floor, participation, default_purpose, default_visit_date, default_visit_time) — which materially change preview output — are completely unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (preview), resource (visitor list), and input source (file), plus the supported formats (.xlsx/.csv/.tsv). It also negates the sibling action ('does not actually register'), so an agent can separate it from register_visitors_from_file and preview_visitors_from_text without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(실제 등록하지 않음)' gives clear context for when to reach for this tool: a dry run before committing a registration. It does not, however, explicitly name the alternative siblings (preview_visitors_from_text, register_visitors_from_file) or state exclusions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_visitors_from_textA

텍스트(복사/붙여넣기)로 방문자 목록을 입력받아 등록 없이 파싱·검증 결과만 보여줍니다. 등록 전에 먼저 호출하세요. Keywords: 센터필드, 방문자 미리보기, 명단 확인, preview visitors, 텍스트 확인, 등록 전 확인

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
default_floorNo
participationNo
default_purposeNo
default_visit_dateNo
default_visit_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It does disclose the key trait of not registering ('등록 없이') and only returning parse/validation results, but it omits other behavioral details such as authentication, rate limits, or side effects beyond registration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is concise and front-loaded, with the main action and usage in two sentences. The appended keyword list adds noise without helping an agent invoke the tool, keeping it from a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no annotations, and 0% schema description coverage, the description is incomplete. It covers purpose and pre-registration usage, but leaves optional parameter semantics unexplained and does not clarify text format or relation to file-based preview tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 6 parameters, so the description should compensate heavily. It only indicates that 'text' is the visitor list input; the five optional parameters (default_floor, participation, default_purpose, default_visit_date, default_visit_time) are not described at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (parse/validate) and resource (visitor list from text), and explicitly scopes it as a preview without registration. This clearly distinguishes it from sibling registration tools like register_visitors_from_text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to call this before registration ('등록 전에 먼저 호출하세요'), giving clear context. It does not name when-not-to-use or explicitly contrast with preview_visitors_from_file, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_visitorB

센터필드 빌딩 방문자 1명을 예약 등록합니다. dry_run=true면 사이트 검증까지만 하고 제출하지 않습니다. Keywords: 센터필드, 방문자 등록, 방문 예약, 방문 신청, visitor registration, centerfield reservation, register visitor, book visitor

ParametersJSON Schema
NameRequiredDescriptionDefault
floorNo
dry_runNo
visit_dateYes
visit_timeYes
visitor_nameYes
visit_purposeNomeeting
visitor_emailYes
visitor_mobileYes
visitor_company_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose one important behavioral trait — dry_run performs validation only and does not submit — but says nothing about permissions/auth, duplicate handling, whether the booking is idempotent, or what happens on failure. Partial coverage for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Core behavior is front-loaded in the first sentence, with the dry_run caveat second. The trailing keyword block is redundant noise for an agent but may aid retrieval; overall still compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be documented, but with 9 parameters (6 required) at 0% schema coverage and only dry_run explained, an agent lacks enough information to populate the remaining required fields correctly. Incomplete for a multi-param mutation tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% — all 9 parameters have only titles, no descriptions. The description explains only dry_run, leaving visitor_mobile format, visit_date/visit_time format, floor, and the visit_purpose default ('meeting') completely unspecified in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: registering exactly one visitor reservation at the Centerfield building. The '1명' (one person) implicitly distinguishes it from the bulk siblings (register_visitors_from_text/file), though it never names them. Clear, but sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the dry_run=true branch (validate only, do not submit), which is genuine usage guidance. However, it gives no guidance on when to use this single-visitor tool versus register_visitors_from_text/file, nor any prerequisites such as who may file the reservation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_visitors_from_fileB

Excel/CSV/TSV 파일에서 방문자 목록을 읽어 일괄 등록합니다. 날짜/시간 컬럼이 없으면 default_visit_date/default_visit_time 지정. dry_run=true면 미제출. Keywords: 센터필드, 방문자 일괄 등록, 대량 등록, bulk registration, 엑셀 등록, CSV 등록, 파일로 등록, batch visitor, 방문자 명단

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
file_pathYes
default_floorNo
participationNo
default_purposeNo
default_visit_dateNo
default_visit_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose the important mutation-control trait (dry_run=true means nothing is submitted) and the column-fallback rule, which is genuinely beyond the schema. It is silent on permissions, row-level validation/error behavior, duplicate handling, and whether partial failures roll back.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Core behavior is front-loaded in the first sentence, with the date/time fallback and dry_run clause following in tight order. The trailing keyword block is long but functional for retrieval; little is wasted otherwise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. For a 7-parameter bulk mutation tool with zero annotation coverage, though, the description should say more about expected file columns and what happens to invalid rows; three parameters and the failure model remain undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains default_visit_date/default_visit_time (and dry_run), roughly half the parameters, but leaves default_floor, default_purpose, and participation entirely undefined in both description and schema, so the agent cannot tell what values those accept or what they default to semantically.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (bulk-register visitors read from a file) and enumerates the accepted formats (Excel/CSV/TSV), which cleanly separates it from the single-visitor sibling register_visitor and from the text-based register_visitors_from_text. It never names the preview counterpart preview_visitors_from_file, so sibling routing is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete usage conditions: supply default_visit_date/default_visit_time when the file lacks date/time columns, and dry_run=true to avoid submission. However it never states when to prefer this over preview_visitors_from_file or register_visitors_from_text, and no prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_visitors_from_textB

텍스트(복사/붙여넣기)로 방문자 목록을 입력받아 일괄 등록합니다. 날짜/시간 컬럼이 없는 참석자 명단은 default_visit_date/default_visit_time을 함께 지정하세요. dry_run=true면 제출하지 않습니다. Keywords: 센터필드, 방문자 등록, 텍스트 입력, 복사 붙여넣기, paste visitors, text registration, 일괄 등록, 방문자 목록

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
dry_runNo
default_floorNo
participationNo
default_purposeNo
default_visit_dateNo
default_visit_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses that dry_run=true suppresses submission and that this is a bulk mutation, but says nothing about auth requirements, duplicate handling, parse-failure behavior, or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operative content is front-loaded and clear in the first three sentences, but the trailing 'Keywords:' block is search-optimization padding that adds little selection value for an agent and inflates the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be described, but for a 7-parameter, no-annotation mutation tool the description omits the critical pasted-text format (expected columns/delimiters) and any pointer to the preview sibling. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and it only partially does: it explains text, dry_run, default_visit_date and default_visit_time, leaving default_floor, participation, default_purpose and the expected text column format undocumented. The date/time-column constraint is a genuinely useful semantic addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: bulk-registering visitors from pasted text ('텍스트... 방문자 목록을 입력받아 일괄 등록합니다'). This is distinguishable from the singular register_visitor and the file-based register_visitors_from_file, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives one conditional: when the attendee list lacks date/time columns, set default_visit_date/default_visit_time. It also explains dry_run, but there is no guidance on when to prefer preview_visitors_from_text first or register_visitors_from_file instead. Usage is implied rather than framed against alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_configurationA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool queries the live site and does not mutate state ('실제 사이트에 조회', '예약을 생성하지 않습니다'), effectively a read-only dry run. However it omits auth/permission requirements, whether it can fail on misconfiguration, and any side effects — gaps that matter for a validation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two core sentences are front-loaded with the action and the non-mutation guarantee, with zero waste. The trailing 'Keywords:' line is somewhat redundant with the body text, mildly diluting the otherwise tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and a zero-parameter validation tool with a clear no-side-effect statement is largely self-contained. The remaining omission is what failure looks like when the queried site settings do not match local config, which would help an agent interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so per the scoring baseline this is a 4. The description correctly does not pad with parameter talk, though the enumerated settings fields are informational rather than inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource in Korean (조회해 확인합니다 = query and verify the Centerfield MCP settings), enumerates exactly what is validated (tenant company name, approval manager, floor list), and explicitly contrasts with siblings via '예약을 생성하지 않습니다' (does not create a reservation). An agent can distinguish this read/validation tool from the register_* siblings without consulting any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'dry run' and '연결 테스트' (connection test) signal the intended context clearly, and the explicit note that no reservation is created implicitly routes write intent to the sibling tools. It stops short of stating a prerequisite relationship (e.g. run this before register_visitor), so it is clear but not fully prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.2.1
    • First observedpreview_visitors_from_file
    • First observedpreview_visitors_from_text
    • First observedregister_visitor
    • First observedregister_visitors_from_file
    • First observedregister_visitors_from_text
    • First observedvalidate_configuration

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a distinct input/action focus: config validation, single registration, text preview, text bulk registration, file preview, and file bulk registration. The main ambiguity is around validation: validate_configuration, preview_* tools, and dry_run modes in register tools all validate without submitting, though descriptions clarify the differences.

Naming Consistency4/5

Mostly consistent snake_case with a verb_noun pattern: validate_configuration, register_visitor, preview_visitors_from_text, register_visitors_from_text, etc. The minor inconsistency is singular register_visitor versus plural register_visitors_* for bulk operations.

Tool Count5/5

Six tools is well-scoped for visitor registration: one config validator, one single-visitor registration, and preview/register pairs for text and file bulk input. No obvious bloat, and each tool earns its place by input type or operation.

Completeness3/5

The surface covers configuration validation, single registration, bulk registration, and dry-run previews for text and file inputs. However, it lacks lifecycle operations such as listing, retrieving, updating, canceling, or deleting visitor reservations, which are common needs in a visitor registration domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers