Files
web-inspector/mcp/dist/tools/get-issues.js
jungwoo choi 69e0f80282 feat: MCP 서버 추가 — AI 에이전트용 웹 검사 도구
Node.js + TypeScript MCP 서버 구현:
- 5개 도구: inspect_page, inspect_site, get_inspection, get_issues, get_history
- 듀얼 트랜스포트: stdio (Claude Desktop) + Streamable HTTP (Docker/원격)
- i18n 지원 (영어/한국어)
- Docker 통합 (port 3100) + Nginx /mcp 프록시
- Smithery 레지스트리 배포 설정

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 15:44:35 +09:00

53 lines
2.2 KiB
JavaScript

import { t } from "../i18n/index.js";
export async function getIssues(client, id, lang, category, severity) {
const result = await client.getIssues(id, category, severity);
const lines = [];
lines.push(`# ${t("get_issues.title", lang)}`);
lines.push(`**Inspection ID**: ${result.inspection_id}`);
lines.push(`**${t("get_issues.total", lang)}**: ${result.total}`);
// Show applied filters
const activeFilters = Object.entries(result.filters)
.filter(([, v]) => v)
.map(([k, v]) => `${k}: ${v}`)
.join(", ");
if (activeFilters) {
lines.push(`**${t("get_issues.filters", lang)}**: ${activeFilters}`);
}
lines.push("");
if (result.issues.length === 0) {
lines.push("No issues found.");
return lines.join("\n");
}
// Issue table
lines.push(`| # | ${t("result.severity", lang)} | Code | ${t("result.category", lang)} | ${t("result.message", lang)} |`);
lines.push("|---|---|---|---|---|");
for (let i = 0; i < result.issues.length; i++) {
const issue = result.issues[i];
const msg = issue.message.length > 80
? issue.message.slice(0, 77) + "..."
: issue.message;
lines.push(`| ${i + 1} | ${issue.severity} | ${issue.code} | ${issue.category} | ${msg} |`);
}
lines.push("");
// Detailed view for first 10
const detailCount = Math.min(result.issues.length, 10);
lines.push("## Details");
for (let i = 0; i < detailCount; i++) {
const issue = result.issues[i];
lines.push(`### ${i + 1}. [${issue.severity.toUpperCase()}] ${issue.code}`);
lines.push(`- **${t("result.message", lang)}**: ${issue.message}`);
if (issue.element) {
lines.push(`- **${t("result.element", lang)}**: \`${issue.element}\``);
}
lines.push(`- **${t("result.suggestion", lang)}**: ${issue.suggestion}`);
if (issue.kwcag_criterion) {
lines.push(`- **KWCAG**: ${issue.kwcag_criterion} ${issue.kwcag_name || ""}`);
}
else if (issue.wcag_criterion) {
lines.push(`- **WCAG**: ${issue.wcag_criterion}`);
}
lines.push("");
}
return lines.join("\n");
}
//# sourceMappingURL=get-issues.js.map