inspection-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@inspection-mcp검수 실행해줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
inspection-mcp
개발 서버 화면 검수 자동화 MCP 서버. 검수 시트(자연어)를 Playwright 스크립트로 변환하고, 이후 반복 검수는 스크립트만 실행합니다.
설치
cd /유저경로/inspection-mcp
# 의존성 설치
npm install
# Playwright 브라우저 설치
npx playwright install chromium
# 빌드
npm run buildNode.js 18 이상이 필요합니다.
Related MCP server: Limetest MCP Server
MCP 서버 등록
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json 파일을 편집합니다.
{
"mcpServers": {
"inspection-mcp": {
"command": "/노드설치경로/node",
"args": ["/유저경로/inspection-mcp/dist/index.js"]
}
}
}Cursor
프로젝트 루트 또는 글로벌 .cursor/mcp.json 파일을 편집합니다.
{
"mcpServers": {
"inspection-mcp": {
"command": "/노드설치경로/node",
"args": ["/유저경로/inspection-mcp/dist/index.js"]
}
}
}nvm 환경에서 node 경로 찾기
nvm을 사용하는 경우 심볼릭 링크가 아닌 절대 경로를 사용해야 합니다.
# 현재 node 절대 경로 확인
which node
# 예시 결과: /Users/유저이름/.nvm/versions/node/v20.11.0/bin/node환경 설정
.env 파일
프로젝트 루트에 .env 파일을 생성합니다. .env.example을 참고하세요.
cp .env.example .env사이트 등록
QA_SITE_{사이트키}_URL 패턴으로 자동 인식됩니다. 사이트키는 영문 대문자로 작성합니다.
# 사이트 URL (필수)
QA_SITE_MARKET_URL="https://dev-market.example.com"
QA_SITE_MARKET_NAME=마켓
QA_SITE_BACKOFFICE_URL="https://dev-backoffice.example.com"
QA_SITE_BACKOFFICE_NAME=백오피스
# 외부 SSO 로그인 URL (선택 - SSO 리다이렉트 방식일 때만)
QA_SITE_BACKOFFICE_LOGIN_URL="https://sso.example.com/#/login"계정 등록
QA_ACCOUNT_{계정키}_ID / _PW 패턴으로 자동 인식됩니다.
QA_ACCOUNT_USER_ID=your-username
QA_ACCOUNT_USER_PW=your-password
QA_ACCOUNT_MANAGER_ID=your-manager-id
QA_ACCOUNT_MANAGER_PW=your-manager-pw실행 옵션
QA_HEADLESS=true # true: 백그라운드 실행, false: 브라우저 표시
QA_TIMEOUT=30000 # 스크립트 타임아웃 (ms)
QA_SCREENSHOT_ON_PASS=false # 성공 항목도 스크린샷 저장 여부
QA_MAX_CONCURRENCY=5 # 최대 동시 실행 수config.json
사이트별 로그인 셀렉터, 규칙 필터, 뷰포트를 설정합니다.
{
"sites": {
"market": {
"login": {
"path": "/login",
"spaWait": 2000,
"selectors": {
"idInput": "#loginId",
"pwInput": "#loginPw",
"submitButton": "button[type=submit]"
},
"successIndicator": "/main"
}
}
},
"ruleFilter": {
"maxPageLoadTime": 10000,
"minPageHeight": 200,
"ignoreConsolePatterns": ["Warning:", "[HMR]", "Failed to load resource"],
"ignoreNetworkPatterns": ["google-analytics.com", "googletagmanager.com"]
},
"viewport": {
"width": 1440,
"height": 900
}
}.env의 사이트키와 config.json의 사이트키는 소문자로 일치해야 합니다.
(예: QA_SITE_MARKET_URL → config.json에서 "market")
사용법
1단계: 검수 시트 준비
먼저 템플릿을 받아 검수 항목을 작성합니다.
"검수 시트 템플릿 받아줘"
AI가 get_qa_template 도구를 호출하여 엑셀 템플릿 경로를 알려줍니다.
템플릿을 복사하여 검수 항목을 작성합니다.
엑셀 컬럼 구조
컬럼 | 필수 | 설명 | 예시 |
id | O | 숫자 고유 ID | 1, 2, 3 |
site | O |
| market, backoffice |
path | 조건부 | 시작 페이지 경로 | /market, /product/list |
group | - | 여정 그룹명 (같으면 순차 실행) | purchase_flow |
description | O | 자연어 검수 내용 | 상품 검색 시 결과가 정확한지 확인 |
account | 조건부 |
| user, manager |
type | - | full(기본) 또는 rule_only | full |
login | - | yes(기본) 또는 no | yes |
독립 항목 (group 없음):
path필수여정 그룹: 첫 항목만
path필수, 이후 항목은 이전 스크립트 실행 후 이어서 진행login=yes:
account필수rule_only: 스크립트 없이 HTTP 상태, 콘솔 에러, 페이지 높이 등만 검사
2단계: 검수 시트 등록
작성한 엑셀 파일을 data/sheets/ 폴더에 넣습니다.
/유저경로/inspection-mcp/data/sheets/검수시트.xlsx그 다음 AI에게 말합니다:
"검수 항목 조회해줘"
list_qa_items 도구가 data/sheets/ 폴더를 자동 스캔하여 새 파일을 등록하고 결과를 보여줍니다.
여러 엑셀 파일 관리
파일 여러 개를 넣어도 됩니다 — 각각 독립적으로 관리됩니다
파일 수정 시 자동으로 변경 감지 후 재등록됩니다
파일 삭제 시 해당 항목들도 자동으로 삭제됩니다
3단계: 스크립트 생성
"검수 스크립트 만들어줘"
AI가 각 항목에 대해:
prepare_qa_item— 대상 페이지의 DOM 구조를 수집DOM 정보를 기반으로 Playwright 스크립트 작성
save_qa_script— 스크립트 검증 후 저장
저장된 스크립트는 data/scripts/item-001.ts (+ 컴파일된 .js) 형태입니다.
4단계: 검수 실행
"검수 실행해줘"
전체 실행: run_qa
특정 항목만: run_qa (items: [1, 2])
특정 사이트만: run_qa (sites: ["market"])
단일 디버깅: run_qa_single (item_id: 1)실행 결과:
성공/실패/에러/스킵 상태
실패 항목의 스크린샷 (AI 응답에 이미지로 포함)
HTML/JSON 리포트:
data/reports/{실행ID}/
이후 반복 검수
스크립트가 한 번 생성되면, 이후에는 "검수 실행해줘"만으로 반복 실행 가능합니다. AI 토큰 소모 없이 스크립트만 실행됩니다.
탐지 가능한 이슈 유형
이 MCP 서버는 두 가지 방식으로 이슈를 탐지합니다.
자동 규칙 검사 (rule_only / full 모드 공통)
모든 검수 항목에 자동으로 적용되며, 별도 스크립트 작성 없이 탐지됩니다.
검사 항목 | 판정 기준 | 탐지 예시 |
HTTP 상태 코드 | 400 이상이면 실패 | 404 Not Found, 500 Internal Server Error |
콘솔 에러 |
| JavaScript 런타임 에러, API 호출 실패 로그 |
깨진 이미지 |
| 삭제된 상품 이미지, 잘못된 이미지 경로 |
페이지 높이 | 200px 미만이면 실패 | 빈 페이지 렌더링, 데이터 로딩 실패로 컨텐츠 없음 |
네트워크 에러 | Fetch/XHR 요청 실패 | API 서버 다운, CORS 에러, 타임아웃 |
페이지 로드 시간 | 10초 초과 시 실패 | 서버 응답 지연, 무거운 리소스 로딩 |
config.json의ruleFilter에서 기준값과 무시 패턴을 설정할 수 있습니다. 예: HMR 경고, Google Analytics 에러 등 개발 환경 노이즈는 기본 제외됩니다.
AI 스크립트 검사 (full 모드)
자연어 검수 내용을 기반으로 AI가 Playwright 스크립트를 생성하여 검증합니다. 사용자 관점의 UI/UX 이슈를 탐지할 수 있습니다.
클릭/입력 인터랙션
버튼 클릭 후 예상 동작 확인 (팝업 열림, 페이지 이동 등)
폼 입력 후 제출 결과 검증
탭/메뉴 전환 시 콘텐츠 변경 확인
예시: "상품명 클릭 시 상세보기 팝업이 열리는지 확인"
텍스트/콘텐츠 검증
특정 텍스트가 페이지에 노출되는지 확인
글자 깨짐, 인코딩 오류 탐지
데이터가 올바르게 표시되는지 검증
예시: "상품정보제공고시 화면에서 모든 속성값에 깨진 글자가 없는지 확인"
검색/필터 기능
검색 입력 후 결과 목록 노출 확인
필터 조건 적용 후 목록 갱신 검증
자동완성/최근 검색어 기능 동작 확인
예시: "검색어 입력 후 Like 검색 결과가 정확한지 확인"
상태별 노출 제어
특정 상태의 항목이 노출/미노출되는지 확인
권한에 따른 메뉴/버튼 표시 검증
예시: "판매중지/판매종료 상품이 목록에 미노출되는지 확인"
페이지 네비게이션
다음/이전 버튼으로 페이지 이동 확인
URL 변경 패턴 검증
뒤로가기 후 상태 유지 확인
예시: "하단 '다음' 버튼을 눌러 다음 단계로 이동하는지 확인"
요소 존재/가시성
필수 UI 요소가 페이지에 존재하는지 확인
로딩 후 요소가 정상적으로 보이는지 검증
예시: "로그인 후 메인 페이지에 사용자 이름이 표시되는지 확인"
검수 유형 선택 가이드
상황 | 권장 유형 | 설명 |
페이지가 정상 로딩되는지만 확인 |
| 스크립트 없이 HTTP/콘솔/이미지 자동 검사 |
UI 동작을 구체적으로 검증 |
| 자동 규칙 검사 + AI 스크립트 검사 모두 적용 |
배포 후 전체 페이지 헬스체크 |
| 빠르게 전 페이지 상태 확인 |
특정 기능의 정상 동작 확인 |
| 클릭/입력/검증 시나리오 스크립트 생성 |
도구 목록
도구 | 설명 |
| 검수 시트 등록 (data/sheets/ 자동 스캔 또는 파일 경로 지정) |
| 등록된 항목 조회 (조회 전 자동 동기화) |
| 엑셀 템플릿 경로 반환 |
| 항목 메타데이터 수정 (sheets 폴더 항목은 엑셀에서 수정 안내) |
| 항목 삭제 (sheets 폴더 항목은 엑셀에서 관리) |
| 대상 페이지 DOM 수집 |
| Playwright 스크립트 검증+저장 |
| 전체/필터 검수 실행 |
| 단일 항목 디버깅 실행 |
주의사항
검수 시트 관리
data/sheets/폴더에 넣은 엑셀 파일이 단일 진실 원천입니다항목을 삭제하려면 엑셀에서 해당 행을 지운 뒤 저장하세요.
delete_qa_item으로는 삭제되지 않습니다항목을 수정하려면 엑셀을 직접 편집하세요.
update_qa_item은 시트 관리 항목의 수정을 차단하고 엑셀 수정을 안내합니다항목을 추가하려면 엑셀에 행을 추가하면 됩니다. 다음 도구 호출 시 자동으로 반영됩니다
엑셀 파일을 열어둔 상태에서 생기는
~$임시 파일은 자동으로 무시됩니다
스크립트 규약
AI가 생성하는 스크립트는 이 프로젝트만의 규약을 따릅니다:
module.exports = async (page) => { ... }형태 (CommonJS)page객체 하나만 인자로 받음 —({ page, expect })구조분해 사용 불가{ pass: boolean, message: string }객체를 반드시 반환@playwright/test,require()등 외부 모듈 사용 불가첫 페이지 이동은 실행기가 처리하므로, 스크립트는 추가 조작만 작성
환경 설정
.env에 민감한 정보(계정 비밀번호 등)가 포함됩니다. git에 커밋하지 마세요 (gitignore 적용됨)config.json의 사이트키는.env의QA_SITE_{키}_URL에서{키}를 소문자로 변환한 값과 일치해야 합니다nvm 환경에서는 MCP 등록 시
which node로 확인한 절대 경로를 사용하세요.node만 쓰면 PATH 문제로 실행이 안 될 수 있습니다
세션 및 인증
로그인 세션은
data/auth-states/에 저장됩니다. 세션 만료 시 자동으로 재로그인합니다WEHAGO 팝업 로그인 시 팝업 URL이
wehago.com을 포함하는지 검증합니다data/auth-states/디렉토리는0700권한으로 생성됩니다
실행 관련
QA_HEADLESS=false로 설정하면 브라우저가 화면에 표시됩니다. 디버깅에 유용합니다scriptStatus가ready가 아닌 항목은 실행 시 자동으로 건너뜁니다 (skip)여정 그룹은 같은 브라우저 페이지에서 순차 실행됩니다. 중간 항목의 선행 스크립트가 모두
ready여야 합니다실행 결과 폴더명은
날짜_시분초형식으로 생성됩니다:run_qa→data/screenshots/run-20260306_143025/run_qa_single→data/screenshots/single-20260306_143025/리포트도 동일한 ID:
data/reports/run-20260306_143025/
run_qa결과에는 스크린샷 이미지가 포함되지 않습니다 (용량 초과 방지). 실패 항목의 스크린샷을 확인하려면run_qa_single로 해당 항목을 재실행하세요
폴더 구조
inspection-mcp/
├── .env # 사이트 URL, 계정 정보 (git 제외)
├── .env.example # 환경변수 템플릿
├── config.json # 사이트별 로그인 셀렉터 설정
├── package.json
├── tsconfig.json
├── src/ # 소스 코드
│ ├── index.ts # MCP 서버 진입점
│ ├── types/index.ts # 타입 정의
│ ├── core/ # 핵심 모듈
│ │ ├── config-loader.ts # 환경변수/설정 로딩
│ │ ├── excel-parser.ts # 엑셀 파싱
│ │ ├── script-generator.ts # 스크립트 생성/저장
│ │ ├── script-runner.ts # 스크립트 실행
│ │ ├── rule-filter.ts # 규칙 필터 (HTTP, 콘솔, 이미지 등)
│ │ ├── report-generator.ts # HTML/JSON 리포트
│ │ └── auth-manager.ts # 로그인/세션 관리
│ ├── store/ # 데이터 저장소
│ │ ├── qa-store.ts # qa-items.json CRUD
│ │ └── sheet-registry.ts # 엑셀↔항목 매핑 + 동기화
│ └── tools/ # MCP 도구 핸들러 (9개)
├── dist/ # 빌드 결과물 (git 제외)
└── data/ # 런타임 데이터 (git 제외, 자동 생성)
├── sheets/ # 검수 시트 엑셀 파일 배치 폴더
├── scripts/ # 생성된 Playwright 스크립트
├── reports/ # 실행 리포트
├── screenshots/ # 실패 스크린샷
└── auth-states/ # 로그인 세션 파일Available Tools
9 toolsdelete_qa_itemA
검수 항목과 관련 스크립트 파일을 삭제합니다. 단일(item_id) 또는 일괄(item_ids) 삭제를 지원합니다. data/sheets/ 폴더 엑셀에서 등록된 항목은 직접 삭제할 수 없으며, 엑셀에서 해당 행을 제거해야 합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | No | 삭제할 단일 항목 ID | |
| item_ids | No | 일괄 삭제할 항목 ID 목록 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that deletion also affects 'related script files', a significant side effect beyond just the QA item. It also reveals the constraint about Excel-registered items and the support for single/batch modes. However, it leaves out details like irreversibility, permissions, or return values, but the key behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the action and modes, the second states the important limitation. It is front-loaded and contains no redundant words, earning a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete tool with no output schema and only two parameters, the description is sufficiently complete: it covers scope, supported modes, and the critical Excel restriction. Given no annotations, it effectively carries the necessary context for an agent to use the tool safely, though it could mention prerequisites like item existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents item_id and item_ids with clear Korean descriptions (100% coverage). The description restates the single/batch distinction but adds no new information about parameter types, constraints, or mutual exclusivity beyond what the schema provides. Therefore, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes QA items and related script files, with specific verb '삭제' (delete) and resource '검수 항목' (QA item). It also distinguishes from siblings by covering both single and batch deletion, and complements other QA tools like list/update/run. This makes it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a when-not-to-use rule: items registered in data/sheets/ Excel cannot be deleted directly and must be removed via Excel. This exclusion guides the agent to choose an alternative workflow for Excel-registered items, and supports both single and batch cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qa_templateA
검수 시트 엑셀 템플릿 파일 경로를 반환합니다. 템플릿이 없으면 자동 생성합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly reveals the important side effect: if the template does not exist, it will be automatically created. This is a key behavioral trait beyond a simple read. It does not elaborate on permissions or return format, but for a simple tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action ('returns the file path') and then a conditional side effect. Every word adds value with no redundancy or irrelevant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and no annotations, the description fully covers the essential behavior: it returns a path and self-heals by creating the template if missing. This is complete for an AI agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is vacuously 100%. The description does not need to explain parameter semantics, and the baseline for 0 params is 4. It adds context by explaining the tool's fallback behavior, which is more than the empty schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it returns the file path of the QA sheet Excel template. It also notes that it auto-creates the template if missing, adding specific resource and behavior. This distinguishes it from sibling tools like 'create' or 'register' operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you need the QA template path, it provides it, and handles missing templates by creating them. While no explicit alternatives are mentioned, the tool's purpose is simple and there is no competing sibling for retrieving a template path. It provides adequate context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_qa_itemsA
등록된 검수 항목 목록을 조회합니다. site, account로 필터링할 수 있습니다. 조회 전 data/sheets/ 폴더를 자동 동기화합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | 특정 사이트 키로 필터 (생략 시 전체) | |
| account | No | 특정 계정 키로 필터 (생략 시 전체) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It notably discloses that the tool automatically syncs the 'data/sheets/' folder before retrieval ('조회 전 data/sheets/ 폴더를 자동 동기화합니다'), which is a significant side effect not evident from the schema. This goes beyond basic purpose and gives the agent awareness of pre-conditions. However, it does not mention the return format or potential read-only nature, but for a simple list tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly states the primary purpose first, then adds the key behavioral note about auto-sync. Every word is functional, with no fluff or repetition. It is appropriately front-loaded and compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 optional string params, no nested objects, no output schema), the description is complete: it explains the main action, the filters, and a notable pre-execution side effect. The absence of return-format details is acceptable since no output schema exists and the purpose is straightforward. It fully equips an AI agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both 'site' and 'account' have descriptions in the schema ('특정 사이트 키로 필터 (생략 시 전체)'). The description mentions filtering by site and account but adds no additional meaning beyond what the schema already provides. It does not explain formats, value constraints, or relationships between parameters, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: '등록된 검수 항목 목록을 조회합니다' (retrieves the list of registered QA items). It specifies the resource (검수 항목/QA items) and the action (조회/retrieve list), and mentions optional filters (site, account). This distinguishes it from sibling tools like register_qa_sheet, update_qa_item, and run_qa, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage: it is a list operation with optional site and account filters. It does not explicitly state when to use this vs alternatives, but the nature of the tool (listing) is self-evident and distinct from siblings. There are no exclusions or alternatives mentioned, so it falls just 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.
prepare_qa_itemA
특정 항목 1개의 대상 페이지에 접속하여 DOM 구조를 수집합니다. 에이전트에게 스크립트 생성용 데이터를 반환합니다. 여정 그룹의 중간 항목은 선행 스크립트가 모두 ready 상태여야 합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | 준비할 항목 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the main behavior (accessing a page, collecting DOM) and notes a dependency. However, it does not state potential side effects (e.g., whether it modifies item status), authorization requirements, or long-running behavior, leaving uncertainty about operational impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with clear structure. The first states the action, the second explains return value and a key prerequisite. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the main action, return purpose, and a critical precondition. It could be more complete by specifying what the returned data includes, but it is adequate for an agent to decide usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter is 100% with a clear description ('Item ID to prepare'). The description itself does not add parameter information, but the schema suffices, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('accesses target page', 'collects DOM structure') and names the resource ('specific item'). It clearly distinguishes from sibling tools like list_qa_items or save_qa_script by stating its role in script generation data collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is used before script generation and explicitly states a prerequisite (preceding scripts must be ready for intermediate items). However, it does not name alternative tools or specify when not to use it, so it falls short of 'explicit alternatives' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_qa_sheetA
검수 시트(Excel .xlsx)를 파싱하여 항목을 등록합니다. DOM 수집은 하지 않고 메타데이터만 저장합니다. 등록 후 groups/independent_items 분류 정보를 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_path | No | Excel(.xlsx) 파일의 절대 경로 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses key behavioral traits: it parses Excel, registers items, avoids DOM collection, stores only metadata, and returns groups/independent_items classification. However, it does not mention potential side effects like overwriting existing items, required permissions, or error/edge-case behavior, leaving some ambiguity for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, efficient and front-loaded. It states the core action first, then adds a meaningful constraint and return-value note without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter and no output schema, the description is reasonably complete. It covers what the tool does, what it does not do, and what it returns. The main gap is the lack of detail about error behavior or post-conditions, but this is acceptable for the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the only parameter (sheet_path) with a clear description ('Excel(.xlsx) 파일의 절대 경로'). The tool description adds minimal extra meaning beyond the schema, so the baseline of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the exact verb and resource: parsing an Excel .xlsx inspection sheet and registering its items. It clearly distinguishes from siblings by explicitly stating it does not perform DOM collection, and clarifies its scope as metadata-only storage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (register items from an inspection sheet) and an explicit exclusion: 'DOM 수집은 하지 않고' (does not perform DOM collection). It does not name alternative sibling tools, but the usage boundaries are reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_qaA
등록된 전체 또는 일부 스크립트를 실행하여 검수를 수행합니다. 결과는 텍스트 요약으로 반환되며, 실패 항목의 스크린샷은 data/screenshots/{runId}/ 에 파일로 저장됩니다. 개별 실패 항목의 스크린샷을 확인하려면 run_qa_single로 해당 항목을 재실행하세요.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | 실행할 항목 ID 목록 (생략 시 전체) | |
| sites | No | 실행할 사이트 키 목록 (생략 시 전체) | |
| accounts | No | 실행할 계정 키 목록 (생략 시 전체) | |
| headless | No | 헤드리스 모드 (기본: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the output format (text summary) and the side effect of saving failure screenshots to a specific directory. It doesn't mention other potential side effects like auth or data mutation, but for a QA run tool, the disclosed behavior is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: stating the main function, describing results and storage, and directing to an alternative. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks an output schema but mentions the return type. It explains the batch execution purpose, output format, and side effect location, which is reasonably complete for a batch tool. It doesn't detail failure interpretation or prerequisites, but sibling tools likely cover setup, so it is still adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of the parameters with descriptions, so the description adds little semantic value beyond the schema. It implies 'all or some' which aligns with the schema but doesn't elaborate on parameter details, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool executes all or some registered scripts for QA inspection, using a specific verb '실행' (execute) and a resource. It also explicitly distinguishes itself from the sibling tool run_qa_single by positioning itself as a batch runner, which helps with selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on when to use this tool (for batch execution of multiple scripts) and directs users to run_qa_single for individual failure screenshots, thus naming an alternative and giving a clear when-not scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_qa_singleA
특정 항목 1개만 실행합니다. 디버깅 및 확인 용도로, 기본적으로 브라우저를 표시합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | 실행할 항목 ID | |
| headless | No | 헤드리스 모드 (기본: false, 디버깅이므로 브라우저 표시) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that the browser is shown by default, but it does not explain side effects, output/return format, error behavior, permissions, or whether the run mutates state. This is minimal information for an execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that lead with the core action, then add purpose and a key behavioral note. Every sentence earns its place with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description fails to tell the agent what the tool returns (e.g., pass/fail, logs), what prerequisites exist (e.g., the item must be prepared), or whether the run has side effects. The simple parameters do not compensate for these critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for both item_id and headless, so the coverage baseline is 3. The description does not add significant parameter-level detail beyond restating the headless default, which is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Runs') and resource ('only one specific item'), clearly distinguishing this from the sibling tool run_qa which likely runs the full suite. The debugging/verification context further clarifies its niche.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames the tool for debugging and confirmation purposes, giving a clear context for when to use it. However, it does not explicitly name alternatives or state when not to use it (e.g., for batch runs, use run_qa instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_qa_scriptA
에이전트가 생성한 Playwright 스크립트를 구문 검증하고 저장합니다. 검증 실패 시 에러 메시지를 반환하므로 수정 후 재시도할 수 있습니다.
[스크립트 작성 규약]
export 형식: module.exports = async (page) => { ... } (CommonJS)
인자: page (Playwright Page 객체) 하나만 전달됨. ({ page, expect }) 구조분해 사용 금지
반환: { pass: boolean, message: string, details?: object } 객체를 반드시 return
import 금지: @playwright/test 등 외부 모듈 import/require 사용 금지. page 객체는 이미 제공됨
페이지 이동: 첫 페이지는 runner가 page.goto()로 이동 완료 후 스크립트 실행. 추가 이동만 작성
Playwright API: page.locator(), page.click(), page.waitForSelector() 등 자유롭게 사용 가능
검증: expect 대신 직접 조건 체크 후 pass/message로 결과 반환
[올바른 예시] module.exports = async (page) => { const title = await page.locator('h1').textContent(); if (!title) return { pass: false, message: '제목을 찾을 수 없습니다' }; return { pass: true, message: '제목 확인 완료: ' + title }; };
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | 대상 항목 ID | |
| script_code | Yes | 에이전트가 생성한 Playwright 스크립트 코드 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the tool's behavior: it performs syntax validation, returns error messages on failure, and enforces specific script constraints (CommonJS export, single page argument, no external imports, required return object). It also clarifies that the first page navigation is handled by the runner, adding important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured: it starts with a one-sentence purpose, then breaks conventions into bullet points, and includes a concrete example. Every section contributes necessary constraints and guidance, making the length justified rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (script validation with many rules) and lack of an output schema, the description is highly complete. It covers the full script contract, failure behavior, and provides a working example. Nothing critical is missing for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema describes both parameters, the description adds significant meaning to script_code by specifying the exact expected format, return shape, and forbidden patterns. This goes well beyond the schema's one-line description and is essential for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '에이전트가 생성한 Playwright 스크립트를 구문 검증하고 저장합니다' (validates and saves the agent-generated Playwright script), using a specific verb and resource. It is easily distinguished from sibling tools like register_qa_sheet or run_qa, as it focuses on saving and validating a script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit '스크립트 작성 규약' section with detailed rules on export format, arguments, return value, and prohibited imports. It also explains that on validation failure an error message is returned so the script can be fixed and retried, giving clear context for when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_qa_itemA
특정 검수 항목의 메타데이터를 수정합니다. description, path 변경 시 scriptStatus가 pending으로 리셋됩니다 (스크립트 재생성 필요).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | 변경할 시작 페이지 경로 | |
| type | No | 변경할 검수 타입 | |
| group | No | 변경할 여정 그룹명 | |
| login | No | 변경할 로그인 여부 | |
| account | No | 변경할 계정 키 | |
| item_id | Yes | 수정할 항목 ID | |
| description | No | 변경할 검수 내용 (자연어) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It reveals a significant side effect: changing description or path resets scriptStatus to pending, requiring script regeneration. This adds valuable context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that front-load the main action and then add a crucial side-effect note. No wasted words, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update tool with 7 parameters and no output schema, the description covers the core purpose and a key behavioral consequence. It does not explicitly state partial-update semantics, but the schema's optional fields imply that, and the description is sufficient for an agent to understand the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning for two parameters (description and path) by explaining their side effect on scriptStatus, going beyond the schema's simple field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states '특정 검수 항목의 메타데이터를 수정합니다' (modifies metadata of a specific QA item), providing a clear verb and resource. This distinguishes it from sibling tools like delete_qa_item or save_qa_script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating QA item metadata, giving clear context but no explicit when-to-use/when-not-to-use guidance or references to alternatives. It does not mention other tools for related operations.
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. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
delete_qa_item - First observed
get_qa_template - First observed
list_qa_items - First observed
prepare_qa_item - First observed
register_qa_sheet - First observed
run_qa - First observed
run_qa_single - First observed
save_qa_script - First observed
update_qa_item
TDQS
Each tool targets a distinct operation in the QA workflow: registration, preparation, script saving, listing, template retrieval, update, delete, bulk run, and single run. The only potential overlap is between run_qa and run_qa_single, but their descriptions clearly distinguish bulk vs. single execution.
All tool names follow a consistent verb_noun pattern in snake_case (register_, prepare_, save_, list_, get_, update_, delete_, run_). The shared 'run_qa' prefix for bulk and single execution is a minor but acceptable deviation.
Nine tools cover the full QA lifecycle without redundancy. Each tool addresses a distinct step, from Excel registration to script debugging, and none feel extraneous.
The toolset covers the complete workflow: import, prepare, script, run, update, and delete. Minor gaps include a dedicated 'get_qa_script' to retrieve saved script contents and no historical run result retrieval, but these can be worked around via existing tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Browser-based QA for AI-built software. Test pages with real browsers via agents.
Capture screenshots, detect visual regressions between page versions, and analyze with AI.
AI QA tester — real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.
Independent preview-URL QA for coding agents. Playwright heuristics, pass/fail pack.
Related MCP Servers
- FlicenseAqualityDmaintenanceA server that allows using natural language to automate test flows with Playwright, leveraging MidScene's AI agent capabilities to interact with web elements and perform assertions.12-
- AlicenseNot gradedqualityCmaintenanceEnables automated end-to-end testing powered by Playwright where test cases are defined in natural language and executed by AI. Uses lightweight snapshot analysis with vision mode fallback for sophisticated testing scenarios.3Apache 2.0
- FlicenseNot gradedqualityDmaintenanceA dual-track testing server that combines CLI test execution with Playwright-based browser testing and persistent SQLite logging. It enables automated test pipelines, Git integration, and evidence-based requirement generation to streamline the development lifecycle.-
- AlicenseNot gradedqualityDmaintenanceAutomates repository analysis, test planning, and generation of end-to-end tests with Playwright, acting as an intelligent quality assistant.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dolrea77/inspection-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server