์ฐ๋ / MODEL CONTEXT PROTOCOL
Milten MCP: AI ์ด์์คํดํธ์์ ์น์ฌ์ดํธ ๊ฐ์ฌ ํ์ธ
Codex, Cursor ๋๋ Claude Code๋ฅผ ์ ์ฅ๋ Milten ๊ฐ์ฌ ๊ฒฐ๊ณผ์ ์ฐ๊ฒฐํ์ธ์. Model Context Protocol(MCP)์ ํตํด ์ด์์คํดํธ๊ฐ ์น์ฌ์ดํธ ์ฑ๋ฅ ์งํ๋ฅผ ์ฝ๊ณ ๋ณด๊ณ ์ ๋ฐ์ดํฐ์ ๊ทผ๊ฑฐํ ์ต์ ํ ๊ถ์ฅ ์ฌํญ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
Milten MCP
HTTP์ด์์คํดํธ๊ฐ Milten ๊ฐ์ฌ๋ฅผ ํ์ฉํ๋ ๊ณผ์
๊ฐ์ฌ ์ฐพ๊ธฐ
list_audits์ธก์ ๊ฐ ์ฝ๊ธฐ
get_audit_report์ต์ ํ ๊ณํ ๊ฐ์ ธ์ค๊ธฐ
get_optimization_plan
์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค
์ ์ฅ๋ ๊ฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ต๋๋ค. ์ ์ค์บ์ ์์ํ๊ฑฐ๋ ํ๋ก์ ํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ Milten ํ ํฐ์ ์ฐจ๊ฐํ์ง ์์ต๋๋ค.
Milten MCP ์ฐ๊ฒฐ ๋ฐฉ๋ฒ
Milten MCP๋ ์๊ฒฉ ์๋ฒ์์ ์คํ๋ฉ๋๋ค. Streamable HTTP์ ์ฌ์ฉ์ ์ง์ Authorization ํค๋๋ฅผ ์ง์ํ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ URL๊ณผ ์ก์ธ์ค ํ ํฐ์ ์ถ๊ฐํ์ธ์. ๋ก์ปฌ์ Milten ํจํค์ง๋ฅผ ์ค์นํ ํ์๋ ์์ต๋๋ค.
- ์๋ฒ URL
https://milten.io/mcp- ์ธ์ฆ
Authorization: Bearer <PAT>
ํ์ํ ํญ๋ชฉ
Milten ๊ณ์ ๊ณผ ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ์ด ํ์ํฉ๋๋ค. ๋ณด๊ณ ์๋ฅผ ์ฝ์ผ๋ ค๋ฉด ํด๋น ๊ณ์ ์ด ์์ ํ ๊ธฐ์กด ๊ฐ์ฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ Milten ์น์ฌ์ดํธ์์ ์ ๊ฐ์ฌ๋ฅผ ์คํํ์ธ์.
Codex
<PAT>๋ฅผ ํ ํฐ ๋น๋ฐ ๊ฐ์ผ๋ก ๋ฐ๊พธ๊ณ ์ ์ฒด ๋ธ๋ก์ Bash ๋๋ Zsh์์ ์คํํ์ธ์. ์๋ฒ๋ฅผ ์ถ๊ฐํ๊ณ Codex ์ค์ ํ์ผ(๊ธฐ๋ณธ๊ฐ: ~/.codex/config.toml)์ http_headers์ Authorization์ ์ ์ฅํฉ๋๋ค. ๋ค์ ์คํํ๋ฉด milten ์ค์ ์ด ๋์ฒด๋ฉ๋๋ค. Codex๋ฅผ ๋ค์ ์์ํ์ธ์. ์ด ํ์ผ์๋ ๋น๋ฐ ๊ฐ์ด ํฌํจ๋๋ฏ๋ก ๊ณต๊ฐํ์ง ๋ง์ธ์.
codex mcp add milten --url https://milten.io/mcp &&
cat >> "${CODEX_HOME:-$HOME/.codex}/config.toml" <<'EOF'
[mcp_servers.milten.http_headers]
Authorization = "Bearer <PAT>"
EOFCursor
๋ชจ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ค๋ฉด ~/.cursor/mcp.json์ mcpServers์ milten ํญ๋ชฉ์ ์ถ๊ฐํ๊ณ , ํ ํ๋ก์ ํธ์์๋ง ์ฌ์ฉํ๋ ค๋ฉด .cursor/mcp.json์ ์ถ๊ฐํ์ธ์. ๊ธฐ์กด ์๋ฒ ํญ๋ชฉ์ ์ ์งํ์ธ์.
MILTEN_MCP_TOKEN์ ์ฌ์ฉํ๋ ์์ ์์๋ ํด๋ผ์ด์ธํธ๋ฅผ ์์ํ๊ธฐ ์ ์ ์ด ํ๊ฒฝ ๋ณ์์ ๊ฐ์ผ๋ก ํ ํฐ์ ์ค์ ํ์ธ์. ํ ํฐ์ ๋ณ๊ฒฝํ ๋ค์๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ์์ํ์ธ์. ํฐ๋ฏธ๋์์ ์ค์ ํ ๋ณ์๋ ๋ฐํ ํ๋ฉด์์ ์คํํ ์ฑ์ ์๋์ผ๋ก ์ ๋ฌ๋์ง ์์ต๋๋ค.
{
"mcpServers": {
"milten": {
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${env:MILTEN_MCP_TOKEN}"
}
}
}
}Claude Code
์ด ํญ๋ชฉ์ ํ๋ก์ ํธ์ .mcp.json์ ์ถ๊ฐํ์ธ์. Claude Code๋ ์์ํ ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฝ์ต๋๋ค. ์น์ธ ์์ฒญ์ด ํ์๋๋ฉด ํ๋ก์ ํธ ์๋ฒ ์ฐ๊ฒฐ์ ์น์ธํ์ธ์.
MILTEN_MCP_TOKEN์ ์ฌ์ฉํ๋ ์์ ์์๋ ํด๋ผ์ด์ธํธ๋ฅผ ์์ํ๊ธฐ ์ ์ ์ด ํ๊ฒฝ ๋ณ์์ ๊ฐ์ผ๋ก ํ ํฐ์ ์ค์ ํ์ธ์. ํ ํฐ์ ๋ณ๊ฒฝํ ๋ค์๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ์์ํ์ธ์. ํฐ๋ฏธ๋์์ ์ค์ ํ ๋ณ์๋ ๋ฐํ ํ๋ฉด์์ ์คํํ ์ฑ์ ์๋์ผ๋ก ์ ๋ฌ๋์ง ์์ต๋๋ค.
{
"mcpServers": {
"milten": {
"type": "http",
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${MILTEN_MCP_TOKEN}"
}
}
}
}๋๊ตฌ 6๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ์ธ
MCP ํด๋ผ์ด์ธํธ์์ milten์ ํ์ฑํํ์ธ์. list_audits, get_audit_report, get_optimization_plan, get_audit_section, compare_audits, get_monitoring_history๊ฐ ํ์๋์ด์ผ ํฉ๋๋ค. list_audits๋ถํฐ ํธ์ถํ๊ณ ์๋ต์ auditId๋ฅผ ์ฌ์ฉํ์ธ์. ๊ฐ์ฌ๊ฐ ์์ผ๋ฉด ๋น ๋ชฉ๋ก์ด ์ ์์ ๋๋ค.
Milten ์ก์ธ์ค ํ ํฐ ๋ฐ๊ธ ๋ฐฉ๋ฒ
Milten์ ๋ก๊ทธ์ธํ ํ ๊ณ์ ํ๋ฉด์ โํ๋กํ โ API ํคโ์์ ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ(Personal Access Token, PAT)์ ์์ฑํ๊ณ ์กฐํํ๊ฑฐ๋ ํ๊ธฐํ ์ ์์ต๋๋ค. MCP ํด๋ผ์ด์ธํธ๋ Authorization: Bearer ํค๋๋ก ํ ํฐ์ ๋ณด๋ ๋๋ค. MCP ์๋ฒ๋ ๋ธ๋ผ์ฐ์ ์ฟ ํค๋ OAuth ๋ก๊ทธ์ธ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์ก์ธ์ค ํ ํฐ ์์ฑ
Milten์ ๋ก๊ทธ์ธํ๊ณ ํ๋กํ์์ โAPI ํคโ๋ฅผ ์ฌ์ธ์. ์ด๋ฆ๊ณผ ๋ง๋ฃ์ผ์ ์ ๋ ฅํ ๋ค์ โํ ํฐ ์์ฑโ์ ๋๋ฅด์ธ์.
API ํค ์ด๊ธฐ๋น๋ฐ ๊ฐ์ ํ ๋ฒ๋ง ํ์๋๋ฏ๋ก ์ง๊ธ ๋ณต์ฌํ์ธ์. ์์ ํ๊ฒ ๋ณด๊ดํ๊ณ ์์ ์ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ์ธ์. ํ ํฐ id๋ ํ๊ธฐํ ์ ์๋๋ก ๋ชฉ๋ก์ ๋จ์ต๋๋ค.
ํ ํฐ์๋ ์์ ์ ๊ฐ์ฌ๋ง ์ฝ์ ์ ์๋ audits:read ๊ถํ์ด ๋ถ์ฌ๋ฉ๋๋ค. name์ ํ์์ด๋ฉฐ ์ต๋ 100๋ฐ์ดํธ์ ๋๋ค. expiresAt์ RFC 3339 ํ์์ ๋ฏธ๋ ์๊ฐ์ด์ด์ผ ํ๋ฉฐ ํ์ฌ๋ถํฐ ์ต๋ 366์ผ ์ด๋ด๋ก ์ค์ ํ ์ ์์ต๋๋ค.
ํ ํฐ ์กฐํ ๋ฐ ํ๊ธฐ
โAPI ํคโ ๋ชฉ๋ก์๋ ์ด๋ฆ, ๋ง๋ฃ์ผ, ์ํ๊ฐ ํ์๋ฉ๋๋ค. โํ๊ธฐโ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ํ ํฐ์ MCP ์ก์ธ์ค๊ฐ ์ค๋จ๋ฉ๋๋ค. ๋ก๊ทธ์ธ๋ ๋ธ๋ผ์ฐ์ ์ธ์ ์ผ๋ก ์๋ ๊ณ์ API ๊ฒฝ๋ก๋ฅผ ํธ์ถํ ์๋ ์์ต๋๋ค. GET์ ์ํฌ๋ฆฟ์ ์ ์ธํ ํ ํฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค. ํ๊ธฐํ ๋๋ {id}๋ฅผ ํ ํฐ ID๋ก ๋ฐ๊พธ์ธ์. DELETE๋ 204๋ฅผ ๋ฐํํ๋ฉฐ, ์ดํ ํด๋น ํ ํฐ์ ์ฌ์ฉํ๋ MCP ์์ฒญ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
GET /v1/personal-access-tokens/
DELETE /v1/personal-access-tokens/{id}MCP ๋๊ตฌ: ๊ฐ์ฌ, ๋ณด๊ณ ์, ์ต์ ํ ๊ณํ
MCP ํด๋ผ์ด์ธํธ๋ ์ด JSON ์ธ์๋ฅผ tools/call์ ์ ๋ฌํฉ๋๋ค. ๋ณด๊ณ ์๋ ๊ณํ์ ์์ฒญํ ๋๋ ์์ UUID๋ฅผ list_audits ์๋ต์ auditId๋ก ๋ฐ๊พธ์ธ์. ์น์ฌ์ดํธ URL์ด ์๋ ๊ฐ์ฌ ID๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
list_audits
์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์์ ํ ๊ฐ์ฌ๋ฅผ ์ฐพ์ต๋๋ค. ํ์ํ๋ฉด ํน์ ํ๋ก์ ํธ๋ก ๋ชฉ๋ก์ ์ขํ ์ ์์ต๋๋ค.
- ์ธ์
- ๋ชจ๋ ํ๋๋ ์ ํ ์ฌํญ์ ๋๋ค. projectId: ํ๋ก์ ํธ UUID; page: 1 ์ด์์ ์ ์(๊ธฐ๋ณธ๊ฐ 1); limit: 1โ50์ ์ ์(๊ธฐ๋ณธ๊ฐ 10).
- ์๋ต
- audits์๋ auditId, url, operation, status, createdAt์ด ํฌํจ๋๋ฉฐ, ๊ฐ์ด ์์ผ๋ฉด projectId์ error๋ ํฌํจ๋ฉ๋๋ค. count๋ ์ ์ฒด ๊ฐ์์ด๊ณ page์ limit๋ ํ์ด์ง ์ ๋ณด๋ฅผ ๋ํ๋ ๋๋ค. truncated๊ฐ true์ด๋ฉด limit๋ฅผ ์ค์ฌ ๋ค์ ์์ฒญํ์ธ์. ์ํ๋ running, completed ๋๋ failed์ ๋๋ค.
{
"page": 1,
"limit": 10
}get_audit_report
์ ์ฅ๋ ๋ณด๊ณ ์์ ๋ชจ๋ ์น์ ๊ณผ ๊ฐ๋จํ ์งํ ์์ฝ์ ์ฝ์ต๋๋ค.
- ์ธ์
- auditId: ํ์. list_audits์์ ๊ฐ์ ธ์จ ๊ฐ์ฌ UUID์ ๋๋ค.
- ์๋ต
- audit์๋ ๋ฉํ๋ฐ์ดํฐ๊ฐ, filling์๋ Lighthouse, HAR, CrUX, llmAdvice ๋ฑ์ ํฌํจํ ๋ชจ๋ ์ ์ฅ๋ ์น์ ์ด {type, data} ํ์์ผ๋ก ๋ค์ด ์์ต๋๋ค. analysis๋ ์งํ์ ๋ฌธ์ ์ ์์ฝ์ ๋๋ค. trustNote๋ ์ฌ์ดํธ ์ฝํ ์ธ ๊ฐ ์ ๋ขฐํ ์ ์๋ ๋ฐ์ดํฐ์์ ํ์ํฉ๋๋ค. ์๋ต ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ํ๋๋ 1 MiB์ด๋ฉฐ, ์ด๊ณผํ๋ฉด ๋ณด๊ณ ์๋ฅผ ์๋ผ๋ด๋ ๋์ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000"
}get_optimization_plan
๋ณด๊ณ ์์ ํ์๋๋ ์ ์ฅ๋ llmAdvice ๊ณํ์ ์ฝ์ต๋๋ค. MCP๋ ์ ๊ถ์ฅ ์ฌํญ์ ์์ฑํ๊ฑฐ๋ LLM์ ํธ์ถํ์ง ์์ต๋๋ค.
- ์ธ์
- auditId: ํ์ UUID; focus: all(๊ธฐ๋ณธ๊ฐ), lcp, inp, cls ๋๋ backend; limit: 1โ25์ ์ ์(๊ธฐ๋ณธ๊ฐ 10).
- ์๋ต
- plan์๋ source, summary, recommendations, truncated๊ฐ ๋ค์ด ์์ต๋๋ค. ๊ถ์ฅ ์ฌํญ์ ์์์ ํ๋๊ฐ ์ ์ง๋ฉ๋๋ค: priority(critical, medium, low), metrics, metricSavings, title, resources, evidence, action, effect, verification. focus๋ metrics๋ก ํํฐ๋งํ๋ฉฐ backend๋ TTFB์ ํด๋นํฉ๋๋ค. limit์ผ๋ก ๋ชฉ๋ก์ด ์ค์ด๋ค๋ฉด truncated๋ true์ ๋๋ค. ๊ธฐ์กด ํ ์คํธ ๊ณํ์ ํํฐ๋ง ์์ด output์ ๋ฐํ๋ฉ๋๋ค. ์ ์ฅ๋ ๊ณํ์ด ์์ผ๋ฉด diagnostic์ ํ์ธํ์ธ์.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"focus": "lcp",
"limit": 3
}get_audit_section
๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋ ๋ณด๊ณ ์ ์น์ ์ ์ฝ์ต๋๋ค. ํฐ ๋ฐฐ์ด์ ํ์ด์ง ๋จ์๋ก ์กฐํํ ์ ์์ต๋๋ค.
- ์ธ์
- auditId์ section์ ํ์์ ๋๋ค. section์ har ๊ฐ์ filling์ type์ ๋๋ค. ์ ํ ์ฌํญ์ธ path๋ /log/entries ๊ฐ์ JSON Pointer์ ๋๋ค. ๋ฐฐ์ด์ offset 0๋ถํฐ, limit 1โ200(๊ธฐ๋ณธ 50)์ ๋๋ค. ๋ค๋ฅธ ๋ฐ์ดํฐ์๋ ํ์ด์ง ๋งค๊ฐ๋ณ์๋ฅผ ์๋ตํ์ธ์.
- ์๋ต
- data๋ ์๋ ํ๋์ null์ ๋ณด์กดํฉ๋๋ค. ๋ฐฐ์ด์ total, nextOffset, truncated๋ฅผ ํฌํจํฉ๋๋ค. truncated๊ฐ false๊ฐ ๋ ๋๊น์ง nextOffset์ผ๋ก ๊ณ์ ์กฐํํ์ธ์. ์๋ต์ด ๋๋ฌด ํฌ๋ฉด path ๋ฒ์๋ฅผ ์ขํ๊ฑฐ๋ limit์ ์ค์ด์ธ์.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"section": "har",
"path": "/log/entries",
"limit": 20
}compare_audits
๊ฐ์ URL๊ณผ ๊ฒ์ฌ ์ ํ์ ๋ด ๊ฐ์ฌ ๋ ๊ฑด์ ๋น๊ตํ์ฌ ์ธก์ ๊ฐ, ์๊ณ๊ฐ์ ๋ฐ๋ฅธ ๋ฌธ์ , ์ ์ฅ๋ ๊ถ์ฅ ์ฌํญ์ ๋ณํ๋ฅผ ๋ฐํํฉ๋๋ค.
- ์ธ์
- baselineAuditId๋ ๊ธฐ์ค ๊ฐ์ฌ, candidateAuditId๋ ์ดํ ๊ฐ์ฌ์ ๋๋ค. ๋ UUID๋ list_audits์์ ๊ฐ์ ธ์ค์ธ์. ์คํ์ค ์งํ๋ basic, inp, ttfb๋ฅผ ์ง์ํฉ๋๋ค.
- ์๋ต
- delta = candidate โ baseline์ด๋ฉฐ ๋๋ฝ๋ ๊ฐ์ null์ ๋๋ค. comparable๊ณผ warnings๋ฅผ ํ์ธํ์ธ์. findings๋ added, resolved, persisting, uncompared๋ก ๋๋ฉ๋๋ค. ๊ถ์ฅ ์ฌํญ์ ์ ํํ ์ผ์นํ๋ title๋ก ์ฐ๊ฒฐ๋๋ฉฐ ์ ์ฅ๋ ๋ ๊ณํ๋ ํฌํจ๋ฉ๋๋ค.
{
"baselineAuditId": "123e4567-e89b-42d3-a456-426614174000",
"candidateAuditId": "e6723288-f28c-4b62-8a4e-7dc395958c0c"
}get_monitoring_history
๋ด ๋ชจ๋ํฐ๋ง ํ์ด์ง์ ์ ์ฅ๋ ์ธก์ ๊ฒฐ๊ณผ๋ฅผ ์ต์ ์์ผ๋ก ๋ฐํํฉ๋๋ค. ๊ฒ์ฌ๋ฅผ ์์ํ์ง ์์ต๋๋ค.
- ์ธ์
- monitoringUnitId๋ ํ์์ด๋ฉฐ ๋ชจ๋ํฐ๋ง ํ์ด์ง์ Core UUID(coreMonitoringUnitId)์ ๋๋ค. auditId๊ฐ ์๋๋๋ค. dateFrom๊ณผ dateTo๋ ์ ๋์ ํฌํจํ๋ RFC 3339 ๋ฒ์์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ ์ต๊ทผ 30์ผ์ ๋๋ค. page๋ 1๋ถํฐ, limit์ 1โ50(๊ธฐ๋ณธ 20)์ ๋๋ค.
- ์๋ต
- results์๋ ๋ ์ง, ์งํ, ๊ธฐ๊ธฐ, ์ง์ญ, affectedAlert๊ฐ ํฌํจ๋๋ฉฐ count์ hasMore๋ ๋ฐํ๋ฉ๋๋ค. ๋ค์ ํ์ด์ง์๋ ๋ฐํ๋ dateFrom๊ณผ dateTo๋ฅผ ๋ค์ ์ฌ์ฉํ์ธ์. ๊ณผ๊ฑฐ์ 0์ ๋ฐ์ดํฐ ๋๋ฝ์ผ ์ ์์ต๋๋ค. INP๋ ์คํ์ค ์ธก์ ๊ฐ์ด๋ฉฐ CrUX p75๊ฐ ์๋๋๋ค.
{
"monitoringUnitId": "e09aa948-a541-4404-bcdc-9e5621c11891",
"page": 1,
"limit": 20
}AI ์ด์์คํดํธ์ ๋ณด๋ผ ํ๋กฌํํธ ์์
์ฐ๊ฒฐ ํ ์ด์์คํดํธ ์ฑํ ์์ ๋ค์ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ์ธ์. ์ด์์คํดํธ๋ MCP ๋๊ตฌ๋ฅผ ํธ์ถํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํฉ๋๋ค. ์ด ๋ฉ์์ง๋ค์ ๋ณ๋์ ์๋ฒ ๋ช ๋ น์ด ์๋๋๋ค.
๋ด Milten ๊ฐ์ฌ ๋ชฉ๋ก์ ๋ณด์ฌ ์ฃผ๊ณ example.com์ ์๋ฃ๋ ๊ฐ์ฌ ์ค ๊ฐ์ฅ ์ต๊ทผ ํญ๋ชฉ์ ์ฐพ์ ์ค.
๊ทธ ๋ณด๊ณ ์๋ฅผ ์ฝ์ด ์ค. ์ด๋ค ์งํ๊ฐ ๋๋ฆฐ ๋ก๋ฉ์ ๋ํ๋ด๋์ง ๊ฐ๊ณผ ๋จ์๋ฅผ ํจ๊ป ์๋ ค ์ค.
LCP์ ์ด์ ์ ๋ง์ถ ์ต์ ํ ๊ณํ์ ๊ฐ์ ธ์ ์ค. ๋ณด๊ณ ์์ ๊ทผ๊ฑฐ๊ฐ ์๋ค๋ฉด ์ต๋ ์ธ ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ๊ณ ๊ฐ๊ฐ์ ํจ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํด ์ค.
์ฐ๊ฒฐ์ ํตํด ์ ๊ทผํ ์ ์๋ ๋ฐ์ดํฐ
ํ ํฐ์ผ๋ก ๊ณ์ ์ ์๋ณํ๋ฏ๋ก userId๋ ๋๊ตฌ ์ธ์์ ํฌํจ๋์ง ์์ต๋๋ค. ํ๋ก์ ํธ ํํฐ๋ ์์ ์ ๊ฐ์ฌ ๋ชฉ๋ก๋ง ์ขํ๋ฉฐ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ฐ์ฌ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ์ง ์์ต๋๋ค. MCP๋ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ค์บ์ ์์ํ ์๋ ์์ต๋๋ค. ๊ฐ์ฌ ๋์ ์น์ฌ์ดํธ์ ํ ์คํธ๋ ๋ณด๊ณ ์ ๋ฐ์ดํฐ๋ก ์ทจ๊ธํ๊ณ , ์์ด์ ํธ์ ๋ํ ์ง์๋ก ํด์ํ์ง ๋ง์ธ์.
๋ฌธ์ ํด๊ฒฐ
404 / JSON ๋์ HTML ๋ฐํ
ํ์ฌ ํ๊ฒฝ์์ MCP ์๋ํฌ์ธํธ๊ฐ ํ์ฑํ๋์ด ์๋์ง ํ์ธํ์ธ์. ๊ฒฝ๋ก๋ ๋์ ์ฌ๋์๋ ์ธ์ด ์ ๋์ฌ ์์ด /mcp๋ฅผ ์ ํํ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ฌธ์ ํ์ด์ง๋ ๋ค๋ฅธ URL์ ์ฌ์ฉํฉ๋๋ค.
401 unauthorized
Authorization: Bearer์ ํ ํฐ ๋น๋ฐ ๊ฐ์ ํ์ธํ์ธ์. Codex์ failed (0 tools)๊ฐ ํ์๋๋ฉด ์ ํจํ ํ ํฐ์ผ๋ก ์ค์ ์ ๋ค์ ์คํํ๊ณ Codex๋ฅผ ๋ค์ ์์ํ์ธ์. ๋ง๋ฃ๋๊ฑฐ๋ ํ๊ธฐ๋ ํ ํฐ์ ๊ต์ฒดํ์ธ์. OAuth ๋ก๊ทธ์ธ์ ์ง์ํ์ง ์์ต๋๋ค.
403 origin forbidden
๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ๋ MCP ์๋ฒ์์ ํด๋น origin์ ํ์ฉํด์ผ ํฉ๋๋ค. Milten์ ํด๋ผ์ด์ธํธ ์ด๋ฆ๊ณผ origin์ ์๋ ค ์ฃผ์ธ์. ํ ํฐ์ ๋ณด๋ด์ง ๋ง์ธ์.
429 rate limit exceeded
์์ฒญ ๋น๋๋ฅผ ๋ฎ์ถ๊ณ ๋์ค์ ๋ค์ ์๋ํ์ธ์. ๊ธฐ๋ณธ ์๋ฒ ์ ํ์ ํ ํฐ๋น ๋ถ๋น 60ํ ์์ฒญ์ด๋ฉฐ, ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ ํ์ด ์ค์ ๋ ์ ์์ต๋๋ค.
audit not found / invalid arguments
์์ ์ list_audits ์๋ต์ ์๋ ๊ฐ์ฌ UUID๋ฅผ ์ฌ์ฉํ์ธ์. ์กด์ฌํ์ง ์๋ ๊ฐ์ฌ์ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ฐ์ฌ๋ ๋ชจ๋ audit not found๋ฅผ ๋ฐํํฉ๋๋ค. ํ์ด์ง ์ค์ , focus, limit ๊ฐ์ ํ์ธํ์ธ์.
์งํ ๋๋ ๊ถ์ฅ ์ฌํญ์ด ๋น์ด ์์
audit.status์ diagnostic์ ํ์ธํ์ธ์. ์ง์๋๋ ์งํ๋ ์ ์ฅ๋ llmAdvice๊ฐ ์์ ์ ์์ต๋๋ค. focus์ ์ผ์นํ๋ ๊ถ์ฅ ์ฌํญ์ด ์์ ๋๋ ๋ชฉ๋ก์ด ๋น์ด ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ดํธ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๋ป์ ์๋๋๋ค.
503 / temporarily unavailable
์ธ์ฆ ์๋น์ค ๋๋ ๊ฐ์ฌ ์๋น์ค๋ฅผ ์ผ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํ๊ณ , ๋ฌธ์ ๊ฐ ๊ณ์๋๋ฉด ์ง์ํ์ ๋ฌธ์ํ์ธ์.