Skip to main content
Glama

AlgoKit-mcp

AI 에이전트와 함께하는 알고리즘 학습 MCP 툴킷 (백준, 프로그래머스 지원)

Landing Page | NPM | GitHub

AI 기반 힌트 생성, 문제 분석, 복습 템플릿 제공으로 효율적인 알고리즘 학습을 지원합니다.

주요 기능

  • 🔍 문제 검색: 난이도, 태그, 키워드로 문제 검색

  • 💡 단계별 힌트: Level 1~3 단계별 맞춤 힌트 생성

  • 📊 문제 분석: 알고리즘 분류, 난이도 분석, 학습 가이드

  • 📝 복습 템플릿: 자동 생성되는 마크다운 복습 문서

  • 🧪 코드 분석: 제출 코드의 시간/공간 복잡도 분석 및 개선 제안

Related MCP server: algo-coach-mcp

설치

플랫폼별로 설치 방법이 다릅니다. Claude Code 는 Plugin 마켓플레이스를 지원하고, Codex와 Gemini는 수동 설정이 필요합니다.

Claude Code (Plugin Marketplace)

마켓플레이스를 등록하고 플러그인을 설치하세요:

/plugin marketplace add itsme-shawn/AlgoKit-mcp
/plugin install algokit-mcp@algokit-plugin
/reload-plugins

이 명령으로 MCP 서버와 6개 Skills가 모두 설치됩니다.

자연어 설치

Claude Code에서 아래 문장을 그대로 입력해도 됩니다:

algokit-mcp 플러그인을 마켓플레이스에서 설치해줘

MCP만 별도 설치 (Skills 없이)

claude mcp add --scope user algokit -- npx -y algokit-mcp@latest

Codex

Codex에게 아래 문장을 입력하세요:

이 지시사항 대로 설치해줘 : https://raw.githubusercontent.com/itsme-shawn/AlgoKit-mcp/refs/heads/master/.codex/INSTALL.md

Gemini CLI

Gemini CLI에게 아래 문장을 입력하세요:

이 지시사항 대로 설치해줘 : https://raw.githubusercontent.com/itsme-shawn/AlgoKit-mcp/refs/heads/master/.gemini/INSTALL.md

수동 설치 (모든 플랫폼)

Claude Code (~/.claude.json):

{
  "mcpServers": {
    "algokit": {
      "command": "npx",
      "args": ["-y", "algokit-mcp@latest"]
    }
  }
}

Codex (~/.codex/config.toml):

[mcp.servers.algokit]
command = "npx"
args = ["-y", "algokit-mcp@latest"]

Gemini CLI (~/.gemini/settings.json):

{
  "mcpServers": {
    "algokit": {
      "command": "npx",
      "args": ["-y", "algokit-mcp@latest"]
    }
  }
}

Skills

Skill 이름: algo: (BOJ/프로그래머스 자동 선택)

Claude Code, Codex, Gemini CLI 모두 동일한 algo: Skills를 지원합니다. MCP 서버 첫 기동 시 감지된 에이전트에 자동으로 설치됩니다.

Skill

기능

사용 예시

algo:search

문제 검색

/algo:search 골드 DP 문제 추천해줘

algo:fetch

문제 본문 크롤링

/algo:fetch 11726

algo:hint

단계별 힌트

/algo:hint 11726

algo:code-review

코드 분석/피드백

/algo:code-review @11726.py

algo:blank

빈칸 연습 코드 생성

/algo:blank @11726.py

algo:review

복습 문서 생성

/algo:review 11726

자연어로 질문해도 AI가 맥락을 파악하여 Skill을 자동 호출합니다. Skill(/algo:*)을 사용하면 의도가 더 명확해져 정확한 응답을 받을 수 있습니다.

algo:search — 문제 검색

난이도, 태그, 키워드로 백준/프로그래머스 문제를 검색합니다. 플랫폼 키워드(백준, 프로그래머스)가 없으면 어떤 플랫폼인지 되묻습니다.

  • BOJ: 티어(브론즈~루비), 태그(dp, graph 등), 정렬 옵션 지원

  • 프로그래머스: 레벨(1~5), 인기순/최신순 정렬 지원

  • 검색 후 /algo:hint, /algo:review 등 후속 스킬 연계 제안

algo:fetch — 문제 본문 크롤링

문제 전문(설명, 입출력 형식, 예제, 제한 조건)을 가져옵니다. URL 입력 시 플랫폼 자동 판별, 숫자만 입력 시 플랫폼 확인 후 진행합니다.

  • BOJ: acmicpc.net 크롤링 (시간/메모리 제한 포함)

  • 프로그래머스: school.programmers.co.kr 크롤링 (제한사항 포함)

  • 캐시 30일, 재시도 최대 2회

algo:hint — 단계별 힌트

문제를 분석하고 사용자 상황에 맞는 1개 레벨의 힌트만 제공합니다. 한 번에 모든 힌트를 보여주지 않고, 대화를 통해 점진적으로 안내합니다.

Level

시점

내용

Level 1

처음 막혔을 때

알고리즘명 없이 구조적 특징만 암시

Level 2

"더 알려줘" 요청

알고리즘 유형 + 핵심 아이디어

Level 3

"정답 알려줘" 요청

단계별 전략 + 의사코드 수준 설명

algo:blank — 빈칸 연습 코드 생성

완성된 풀이 코드의 핵심 로직을 ____로 가린 연습 파일을 생성합니다. 원본 파일은 수정하지 않고 _blank 접미사 파일을 새로 만듭니다.

  • 빈칸 대상: 점화식, 자료구조 초기화, 핵심 조건문, 방문 처리 등

  • // TODO N: 설명 주석으로 무엇을 채워야 하는지 안내 (정답은 미제공)

  • import, 클래스 시그니처, main 블록은 그대로 유지

algo:code-review — 코드 분석/피드백

풀이 코드의 정확성, 시간/공간 복잡도를 분석하고 개선점을 제안합니다.

분석 타입

내용

full (기본)

정확성 + 복잡도 + 개선점 + 스타일

debug

에러 원인, 로직 오류, 엣지 케이스

hint

핵심 개념, 접근 방향

review

스타일, 가독성, 네이밍, 구조

algo:review — 복습 문서 생성

풀이를 마친 후 학습 내용을 정리하는 마크다운 복습 문서(_REVIEW.md)를 생성합니다. MCP 서버가 템플릿과 가이드 프롬프트를 제공하고, AI가 사용자와 대화하며 섹션별로 작성합니다.

  • 포함 내용: 문제 요약, 사고흐름, 핵심아이디어, 풀이 코드 + 로직 설명, 데이터 흐름 추적, 실수 포인트, 관련 문제

  • 사용자 코드 기반 맞춤형 분석


사용 시나리오

모든 결과는 AlgoKit MCP 서버를 실제 호출하여 얻은 데이터입니다.

하나의 문제에 대해 탐색부터 복습까지 전 과정을 지원합니다.

단계

기능

Skill

1

문제 검색

algo:search

2

문제 요약

algo:fetch

3

단계별 힌트

algo:hint

4

빈칸 힌트

algo:blank

5

코드 리뷰

algo:code-review

6

복습 정리

algo:review


1. 문제 검색

User:

BOJ에서 실버상위~골드 난이도 DP 문제 찾아줘

Skill 사용 시,

/algo:search BOJ에서 실버상위~골드 난이도 DP 문제 찾아줘

AI Agent:

⏺ Skill(algo:search)
  ⎿  Successfully loaded skill

⏺ BOJ에서 실버 상위~골드 난이도 DP 문제를 검색하겠습니다.

⏺ algokit - search_problems_boj (MCP)
  (tags: "dp", level_min: "8", level_max: "15", sort: "level", direction: "asc")

     **총 1909개 문제** (1페이지)

⏺ 총 1,909개의 DP 문제가 Silver III ~ Gold I 범위에 있습니다.

  Silver III (실버 3)

  ┌───────┬────────────────┬──────────┐
  │ 번호  │      제목      │  해결자  │
  ├───────┼────────────────┼──────────┤
  │ 1463  │ 1로 만들기     │ 87,355명 │
  ├───────┼────────────────┼──────────┤
  │ 9095  │ 1, 2, 3 더하기 │ 72,673명 │
  ├───────┼────────────────┼──────────┤
  │ 11726 │ 2×n 타일링     │ 65,411명 │
  ├───────┼────────────────┼──────────┤
  │ 2579  │ 계단 오르기    │ 64,700명 │
  ├───────┼────────────────┼──────────┤
  │ 14501 │ 퇴사           │ 42,532명 │
  └───────┴────────────────┴──────────┘

  다음 페이지에서 Silver II ~ Gold 난이도 문제도 볼까요?

2. 문제 내용 요약

User:

BOJ 11726 문제 내용 요약해줘

Skill 사용 시,

/algo:fetch 11726

AI Agent:

⏺ algokit - fetch_problem_content_boj (MCP)(problem_id: 11726)

⏺ BOJ 11726 - 2×n 타일링

  2×n 크기의 직사각형을 1×2, 2×1 타일로 빈틈없이 채우는 방법의 수를
  구하는 문제입니다.

  ┌─────────────┬──────────────────────────────────┐
  │    항목     │               내용               │
  ├─────────────┼──────────────────────────────────┤
  │ 입력        │ 정수 n (1 ≤ n ≤ 1,000)           │
  ├─────────────┼──────────────────────────────────┤
  │ 출력        │ 방법의 수를 10,007로 나눈 나머지 │
  ├─────────────┼──────────────────────────────────┤
  │ 시간/메모리 │ 1초 / 256MB                      │
  └─────────────┴──────────────────────────────────┘

  예제: n=2 → 2, n=9 → 55

3. 단계별 힌트

User:

이 문제, 접근에 대한 힌트를 줘

Skill 사용 시,

/algo:hint 11726

AI Agent:

⏺ algokit - analyze_problem_boj (MCP)(problem_id: 11726)

⏺ BOJ 11726 — 2×n 타일링 (Silver III)

  Level 1 힌트: 문제 분석

  작은 경우부터 직접 그려보세요. n=1, n=2, n=3, n=4일 때 2×n 직사각형을
  채우는 방법이 각각 몇 가지인지 손으로 나열해 보면, 이전 결과들이 다음
  결과를 만드는 데 재활용되는 패턴이 보일 겁니다.

  "n번째를 채우려면 직전에 어떤 상태에서 올 수 있는가?"를 생각해 보세요.

  ---
  더 구체적인 힌트가 필요하면 말씀해 주세요!

MCP 서버가 구조화된 데이터 + 가이드 프롬프트를 반환하면, Claude가 문제에 맞는 자연어 분석을 생성합니다.


힌트 더 받기

User:

잘 안 풀리네. 힌트를 좀 더 줘

AI Agent:

⏺ Level 2 힌트: 핵심 아이디어

  이 문제는 다이나믹 프로그래밍(DP) 문제입니다.

  핵심은 2×n 직사각형의 맨 오른쪽 열을 채우는 방법이 딱 두 가지뿐이라는
  점입니다:

  1. 세로 타일 1개 (2×1) → 나머지는 2×(n-1) 채우기
  2. 가로 타일 2개 (1×2 두 개) → 나머지는 2×(n-2) 채우기

  즉, f(n)을 구하려면 f(n-1)과 f(n-2)만 알면 됩니다.

  ---
  더 상세한 풀이 가이드가 필요하면 말씀해 주세요.

사용자 상황에 따라 한 번에 1개 레벨만 제공:

Level

시점

제공 내용

Level 1

처음 시도할 때

알고리즘명 없이 구조적 특징만 암시

Level 2

"더 알려줘" 요청 시

알고리즘 유형 명시 + 핵심 아이디어

Level 3

"정답 알려줘" 요청 시

단계별 전략 + 의사코드 수준 설명


4. 빈칸 힌트

User:

정답 코드에 빈 칸을 뚫어서 힌트를 줘
11726_blank.py 에 작성해줘

Skill 사용 시,

/algo:blank @11726.py

AI Agent:

⏺ algokit - fetch_problem_content_boj (MCP)(problem_id: 11726)

⏺ Write(11726_blank.py)
  ⎿  Wrote 26 lines to 11726_blank.py
       1 # BOJ 11726 - 2×n 타일링
       2 # https://www.acmicpc.net/problem/11726
       3 #
       4 # 점화식 힌트:
       5 #   - 맨 오른쪽에 세로 타일 1개 → f(n-1)
       6 #   - 맨 오른쪽에 가로 타일 2개 → f(n-2)
       7
       8 n = int(input())
       9
      10 # TODO 1: dp 배열 초기화 (크기: n+1, 초깃값: 0)
      11 dp = ____
      12
      13 # TODO 2: 기저 조건 설정
      14 dp[1] = ____
      15 dp[2] = ____
      16
      17 # TODO 3: 점화식을 이용해 dp[3] ~ dp[n] 채우기
      18 for i in range(3, n + 1):
      19     dp[i] = ____
      20
      21 # TODO 4: 결과 출력 (10007로 나눈 나머지)
      22 print(____)

⏺ 11726_blank.py에 빈칸 버전을 작성했습니다. 총 4개의 TODO가 있습니다:

  ┌──────┬─────────────────────────────────────────────────┐
  │ TODO │                      힌트                       │
  ├──────┼─────────────────────────────────────────────────┤
  │ 1    │ dp 배열을 어떤 크기로, 어떻게 초기화할지        │
  ├──────┼─────────────────────────────────────────────────┤
  │ 2    │ dp[1]과 dp[2]의 기저값 (직접 손으로 세어보세요) │
  ├──────┼─────────────────────────────────────────────────┤
  │ 3    │ dp[i] = ? — Level 2 힌트에서 알려드린 점화식!   │
  ├──────┼─────────────────────────────────────────────────┤
  │ 4    │ 최종 출력 시 모듈러 연산을 어디서 적용할지      │
  └──────┴─────────────────────────────────────────────────┘

  빈칸을 ____ 부분에 채워보세요. 막히면 말씀해 주세요!

5. 코드 리뷰

User:

@BOJ/10000~/11726/11726.py
내 풀이를 보고 리뷰해줘

Skill 사용 시,

/algo:code-review @11726.py

AI Agent:

⏺ Skill(algo:code-review)
  ⎿  Successfully loaded skill

⏺ algokit - analyze_code_submission_boj (MCP)
  (problem_id: 11726, language: "python", analysis_type: "review")

⏺ BOJ 11726 - 2×n 타일링 코드 리뷰

  ✅ 정확성

  피보나치 점화식 dp[i] = dp[i-1] + dp[i-2]를 정확히 적용했고,
  모듈러 연산도 올바르게 처리했습니다. 정답 코드입니다.

  ⏱️  복잡도

  - 시간: O(n) — 최적
  - 공간: O(n) (고정 1001 크기 배열)

  💡 개선 포인트

  1. 배열 크기 고정 (1001)
  n + 1 크기로 잡는 게 의도가 더 명확합니다.

  2. 공간 최적화 가능
  이전 두 값만 사용하므로 변수 두 개로 줄일 수 있습니다:
  a, b = 1, 2
  for _ in range(3, n + 1):
      a, b = b, (a + b) % 10007

  총평

  DP 기본 문제를 깔끔하게 풀었습니다. 점화식 도출, 모듈러 처리,
  입력 최적화 모두 잘 적용되어 수정할 부분이 거의 없는 코드입니다.

6. 복습 정리

User:

복습 문서 만들어줘

Skill 사용 시,

/algo:review 11726

AI Agent:

⏺ Skill(algo:review)
  ⎿  Successfully loaded skill

⏺ algokit - generate_review_template_boj (MCP)
  (problem_id: 11726, user_notes: "피보나치 점화식 dp[i] = dp[i-1] +
  dp[i-2] 활용, 모듈러 연산 10007, O(n) 시간/공간")

⏺ Write(BOJ/10000~/11726/11726_REVIEW.md)
  ⎿  Wrote 142 lines to BOJ/10000~/11726/11726_REVIEW.md
#### BOJ 11726 — 2×n 타일링

https://www.acmicpc.net/problem/11726

**문제 정보**

| 항목 | 내용 |
|------|------|
| 핵심 요구사항 | 2×n 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 10,007로 나눈 나머지 출력 |
| 입력 크기 | 1 ≤ n ≤ 1,000 |
| 시간/메모리 | 1초 / 256MB |
| 티어 | Silver III |
| 태그 | 다이나믹 프로그래밍 |
| 해결자 수 | 65,411명 (평균 시도 2.7회) |

**사고흐름**

- **첫 인상**: n이 작아질수록 경우의 수가 줄어드는 구조 → 작은 문제로 분할 가능
- **자료구조/알고리즘 선택**: DP (Bottom-Up)
- **선택 근거**: dp[n]을 구하기 위해 이전 상태(dp[n-1], dp[n-2])만 필요 → 점화식 도출 가능
- **특이 조건 처리**: 모듈러 연산을 매 단계 적용하여 오버플로우 방지
- **시간 복잡도 검증**: O(n) = O(1000) → 충분

**핵심아이디어**

2×n 타일링의 마지막 열 배치를 기준으로 경우를 나누면 피보나치 점화식이 도출된다. 마지막에 세로 타일(1×2) 1개를 놓으면 dp[n-1], 가로 타일(2×1) 2개를 놓으면 dp[n-2]가 되어 **dp[n] = dp[n-1] + dp[n-2]**.

**풀이 1 (내 코드)**

```python
import sys
read = sys.stdin.readline

n = int(read())
dp = [0] * (1001)

dp[1], dp[2] = 1, 2
for i in range(3, n + 1):
    dp[i] = (dp[i - 1] + dp[i - 2]) % 10007
print(dp[n])
```

핵심 포인트:
- 배열을 1001 크기로 고정하여 n=1일 때 dp[2] 초기화 시 IndexError 방지
- 매 단계에서 % 10007 적용하여 중간 값 오버플로우 방지

**데이터 흐름 추적** (n = 9):

```
dp[1] = 1
dp[2] = 2
dp[3] = dp[2] + dp[1] = 3
dp[4] = dp[3] + dp[2] = 5
dp[5] = dp[4] + dp[3] = 8
dp[6] = dp[5] + dp[4] = 13
dp[7] = dp[6] + dp[5] = 21
dp[8] = dp[7] + dp[6] = 34
dp[9] = dp[8] + dp[7] = 55  ← 출력
```

**풀이 2 (공간 최적화)**

```python
import sys
read = sys.stdin.readline

n = int(read())

if n == 1:
    print(1)
else:
    a, b = 1, 2
    for _ in range(3, n + 1):
        a, b = b, (a + b) % 10007
    print(b)
```

이전 두 값만 사용하므로 변수 2개로 O(1) 공간 달성.

**자주 하는 실수**

- n=1일 때 배열 크기 부족으로 IndexError
- 모듈러 연산을 마지막에만 적용 → 중간 값 오버플로우 (C++/Java)
- dp[0] 초기값 설정 혼동 (0 vs 1)

**관련 문제**

- 11727 — 2×n 타일링 2 (2×2 타일 추가)
- 1010 — 다리 놓기 (Silver V, 조합 + DP)
- 9625 — BABBA (Silver V, 피보나치 변형)

MCP 도구

백준 (BOJ)

도구

설명

search_problems_boj

문제 검색 (티어, 태그, 키워드)

get_problem_boj

문제 상세 조회

search_tags_boj

알고리즘 태그 검색

fetch_problem_content_boj

문제 본문 스크래핑

analyze_problem_boj

문제 분석 및 힌트 가이드

generate_hint_boj

3단계 힌트 생성

generate_review_template_boj

복습 템플릿 생성

analyze_code_submission_boj

코드 분석 및 피드백

프로그래머스 (Programmers)

도구

설명

search_problems_programmers

문제 검색 (난이도, 카테고리)

get_problem_programmers

문제 상세 조회

fetch_problem_content_programmers

문제 본문 스크래핑

analyze_problem_programmers

문제 분석

generate_hint_programmers

힌트 생성

generate_review_template_programmers

복습 템플릿

analyze_code_submission_programmers

코드 분석

Q&A

MCP(Model Context Protocol)는 AI 에이전트가 외부 도구를 호출할 수 있게 해주는 표준 프로토콜입니다. AlgoKit은 로컬 MCP 서버로 동작합니다. npx로 설치하면 사용자의 로컬 머신에서 실행되며, 별도의 원격 서버나 계정이 필요 없습니다.

사용자 → AI 에이전트 → AlgoKit MCP 서버 (로컬) → solved.ac API / 웹 스크래핑
                ↓
        자연어 응답 생성

사용자는 MCP를 직접 다룰 필요 없이, AI에게 자연어로 요청하면 됩니다.

아니요. AlgoKit은 사용 중인 AI 에이전트(Claude Code, Codex, Gemini 등)를 그대로 활용하는 MCP 서버이므로, 별도의 API 키나 로그인 없이 바로 사용할 수 있습니다.

에이전트

지원 방식

Claude Code

Plugin Marketplace (자동 설치)

Codex

설치 스크립트 제공

Gemini CLI

설치 스크립트 제공

기타 MCP 호환 에이전트

수동 설정 가능

  • MCP 도구: AlgoKit 서버가 제공하는 개별 기능 단위 (예: search_problems_boj, analyze_problem_boj)

  • Skill (/algo:*): 여러 MCP 도구를 조합해 하나의 워크플로우로 묶은 것 (예: /algo:hint는 내부적으로 analyze_problem + fetch_problem_content를 조합)

Skill을 사용하면 AI가 최적의 도구를 자동으로 선택하고 조합합니다. 자연어로 질문해도 동일한 결과를 얻을 수 있지만, Skill을 명시하면 의도가 더 정확하게 전달됩니다.

네. 프로그래머스도 지원합니다.

아니요. AlgoKit은 solved.ac API와 BOJ/프로그래머스 웹사이트에서 실시간으로 데이터를 가져오므로 인터넷 연결이 필요합니다.

AI에게 직접 알고리즘 문제를 질문하면 학습 데이터에 의존하기 때문에, 문제 정보가 부정확하거나 존재하지 않는 문제를 지어내는 경우가 있습니다. 웹 검색을 사용하더라도 공식 출처가 아닌 블로그 등에서 데이터를 가져오는 경우가 많아 정확도가 보장되지 않습니다.

AlgoKit은 공식 데이터 소스(solved.ac API, BOJ/프로그래머스 웹사이트)에서 직접 실시간 데이터를 가져와 AI에게 전달하므로, 항상 정확한 문제 정보를 기반으로 응답합니다.

AI에 직접 질문

AlgoKit 사용

데이터 소스

학습 데이터 또는 블로그 등 비공식 출처

solved.ac API, BOJ/프로그래머스 공식 사이트

문제 정보

부정확하거나 존재하지 않는 문제 생성 가능

실시간 크롤링 (항상 최신, 정확)

난이도/태그

부정확하거나 누락

solved.ac 기준 정확한 데이터

힌트 제공

한 번에 전체 풀이 노출 위험

Level 1→2→3 단계별 제공

복습 지원

매번 수동 요청

구조화된 복습 문서 자동 생성

학습 워크플로우

없음

검색→힌트→빈칸→리뷰→복습 일관된 흐름


개발

빌드 및 테스트

# 의존성 설치
npm install

# 빌드
npm run build

# 테스트
npm test

# 개발 모드
npm run dev

프로젝트 구조

src/
├── api/           # solved.ac API, BOJ/프로그래머스 scrapping
├── tools/         # MCP 도구 (15개)
├── services/      # 비즈니스 로직
├── prompts/       # 힌트 가이드 프롬프트
└── utils/         # 유틸리티 (캐싱, Rate Limiting)

기술 스택

  • Runtime: Node.js (>=18.0.0)

  • Language: TypeScript 5.9

  • MCP SDK: @modelcontextprotocol/sdk v1.26.0

  • Validation: Zod

  • Testing: Vitest

라이선스

MIT


Landing PageGitHubIssuesNPM

Available Tools

16 tools
analyze_code_submission_bojA

백준(BOJ) 문제에 대한 사용자 코드를 분석하여 피드백을 제공합니다.

문제 본문과 사용자 코드를 결합하여 LLM 분석용 프롬프트를 생성합니다.

분석 타입:

  • full: 전체 분석 (정확성, 복잡도, 개선점)

  • hint: 힌트 제공 (핵심 개념, 접근 방법)

  • debug: 디버깅 (에러 원인, 로직 오류)

  • review: 코드 리뷰 (스타일, 가독성)

응답 구조: problemInfo, codeMetadata, analysisPrompts, suggestedQuestions

사용 시나리오:

  • 문제 풀이 후 코드 개선점 확인

  • 틀린 코드 디버깅

  • 코드 리뷰 및 품질 개선

지원 언어: Python, C++, JavaScript, Java, Go

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes분석할 사용자 코드
languageYes프로그래밍 언어
problem_idYes백준 문제 번호
analysis_typeNo분석 타입 (기본값: full)full

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral burden. It discloses that the tool combines problem text and user code to generate an LLM analysis prompt, and it specifies the response structure (problemInfo, codeMetadata, analysisPrompts, suggestedQuestions). It does not mention side effects, auth requirements, or rate limits, but the LLM-prompt nature is transparent.

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

Conciseness5/5

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

The description is compact and well-structured, with short sections for analysis types, response structure, usage scenarios, supported languages, and a platform-verification warning. It front-loads the core purpose and every sentence contributes meaningful guidance, with no redundant filler.

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

Completeness5/5

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

The description fully compensates for the lack of an output schema by listing the response fields. It also covers analysis types, languages, and the critical platform-ambiguity rule. For a tool with 4 parameters, 2 enums, and no output schema, this description is remarkably complete for an agent to invoke correctly.

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 input schema covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds value by explaining each analysis_type in detail (full, hint, debug, review) and listing supported languages, which goes beyond the schema's enum labels. It does not add syntax details for problem_id or code, but those are straightforward.

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?

The description states a specific action: '백준(BOJ) 문제에 대한 사용자 코드를 분석하여 피드백을 제공합니다' (analyze user code for BOJ problems and provide feedback). It clearly distinguishes from sibling tools by naming BOJ and including a platform-verification note that separates it from the Programmers variant.

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 description provides a '사용 시나리오' section listing concrete use cases (code improvement, debugging, code review) and explicitly instructs the agent to confirm the platform with the user if only a problem number is given. It does not name alternative tools or explicitly state when not to use it, which prevents a 5.

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

analyze_code_submission_programmersA

프로그래머스 문제에 대한 사용자 코드를 분석하여 피드백을 제공합니다.

문제 본문과 사용자 코드를 결합하여 LLM 분석용 프롬프트를 생성합니다.

분석 타입:

  • full: 전체 분석 (정확성, 복잡도, 개선점)

  • hint: 힌트 제공 (핵심 개념, 접근 방법)

  • debug: 디버깅 (에러 원인, 로직 오류)

  • review: 코드 리뷰 (스타일, 가독성)

응답 구조: problemInfo, codeMetadata, analysisPrompts, suggestedQuestions

지원 언어: Python, C++, JavaScript, Java, Go

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes분석할 사용자 코드
languageYes프로그래밍 언어
problem_idYes프로그래머스 문제 ID 또는 URL
analysis_typeNo분석 타입 (기본값: full)full

TDQS

A4.3/5.0
Behavior4/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 discloses that the tool generates an LLM analysis prompt by combining problem text and user code, lists the response structure (problemInfo, codeMetadata, analysisPrompts, suggestedQuestions), and warns about the platform ambiguity requiring user confirmation. This goes beyond a simple 'analyzes code' statement, though it does not detail edge cases like input validation or rate limits.

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 description is well-structured with clear sections for analysis types, response structure, supported languages, and a platform note. It is somewhat longer than necessary but each sentence contributes useful information, and the front-loaded purpose statement helps agents quickly understand the tool's role.

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?

For a tool with 4 parameters, 3 required, and no output schema, the description is fairly complete. It provides the response structure, analysis type semantics, and platform resolution guidance. It does not provide an example invocation or specify the exact JSON shape of the generated prompt, but the given fields and the schema cover the essential needs for selecting and calling the tool correctly.

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?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the meaning of each analysis_type (full, hint, debug, review) with one-line definitions, and lists supported languages that align with the language enum. It also clarifies that 'problem_id' can be a Programmers problem ID or URL. This enhances the schema descriptions, which merely name the fields.

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?

The description clearly states the tool's function: '프로그래머스 문제에 대한 사용자 코드를 분석하여 피드백을 제공합니다' (analyzes user code for Programmers problems and provides feedback). It differentiates from siblings by specifying the Programmers platform and detailing distinct analysis types (full, hint, debug, review), which is unique to this tool.

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 description implies usage for Programmers problems and includes an explicit platform identification guideline: if only a problem number is given, the agent must determine the platform from context or ask the user whether it is BOJ or Programmers. It does not explicitly say 'use BOJ tool for BOJ problems', but the sibling list and the platform note make the intended usage clear.

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

analyze_problem_bojA

백준(BOJ) 문제를 분석하여 구조화된 힌트 데이터를 제공합니다. 알고리즘 패턴, 난이도 컨텍스트, 3단계 힌트 포인트, 유사 문제 추천을 포함합니다.

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes백준 문제 번호
include_similarNo유사 문제 추천 포함 여부

TDQS

A4.1/5.0
Behavior4/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 discloses a significant behavioral trait: the tool may prompt the user to confirm the platform if it cannot be inferred from context. It also describes the content of the returned hint data. It stops short of stating side effects (e.g., read-only nature) but for an analysis 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.

Conciseness4/5

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

The description is front-loaded with the primary purpose in the first sentence, followed by a necessary usage warning. The two sentences are dense with information and contain no filler. Slight verbosity in the warning is justified by the potential ambiguity.

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?

The description covers the tool's purpose, included hint components, and an important usage condition. Given there is no output schema and no annotations, it provides enough context for an agent to understand what this tool does and when to invoke it. It does not explain return format or error handling, but those are not essential for this tool's simplicity.

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 100% and both parameter descriptions in the schema are clear. The description's mention of '유사 문제 추천' aligns with the include_similar parameter but adds no additional semantics beyond what the schema already provides. Therefore, baseline 3 is appropriate.

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?

The description uses a specific verb '분석하여 제공합니다' (analyzes and provides), names the resource '백준(BOJ) 문제', and enumerates output components (알고리즘 패턴, 난이도 컨텍스트, 3단계 힌트 포인트, 유사 문제 추천). The BOJ prefix and platform warning clearly distinguish it from analyze_problem_programmers.

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 description gives an explicit conditional usage guideline: if only a problem number is given, determine the platform from context, or if context is missing, verify with the user before calling. However, it does not name specific alternative tools for similar tasks (e.g., generate_hint_boj), so it lacks explicit exclusions.

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

analyze_problem_programmersA

프로그래머스 문제를 분석하여 구조화된 힌트 데이터를 제공합니다. 난이도 컨텍스트, 3단계 힌트 가이드 프롬프트를 포함합니다.

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes프로그래머스 문제 ID 또는 URL
include_similarNo유사 문제 추천 포함 여부

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses what the tool returns (structured hint data with difficulty context and 3-step hint guide) and highlights a key behavioral caveat about platform ambiguity. It does not mention side effects or authorization, but for an analysis tool this is acceptable.

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

Conciseness5/5

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

The description is two sentences: one stating the tool's purpose and components, and one providing a critical usage warning. It is concise, front-loaded with the core purpose, and contains no redundant information.

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?

Given there is no output schema, the description adequately communicates the main return content (structured hint data, difficulty context, 3-step guide). It also addresses the key context of platform ambiguity. Minor omissions like error handling are not critical for this simple two-parameter tool.

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 input schema already provides descriptions for both parameters (problem_id as ID/URL, include_similar as boolean), giving a baseline of 3. The description adds valuable context for problem_id by warning that a bare number could be ambiguous between platforms, thereby enriching the meaning supplied by the schema.

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?

The description clearly states the tool analyzes Programmers problems and provides structured hint data, mentioning specific components like difficulty context and a 3-step hint guide. This distinguishes it from sibling tools such as analyze_problem_boj and generate_hint_programmers by explicitly naming the platform (Programmers) and the unique output format.

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

Usage Guidelines5/5

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

The description includes an explicit warning about platform determination: if only a problem number is provided, the agent must infer the platform from context or ask the user before invoking the tool. This effectively guides when to use this tool versus BOJ-specific siblings, even though no sibling is explicitly named.

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

fetch_problem_content_bojA

백준(BOJ) 문제 본문 스크래핑 (힌트 제외).

BOJ 페이지에서 문제 제목, 설명, 입출력 형식, 예제, 제한사항을 가져옵니다. 힌트는 포함되지 않습니다 - generate_hint_boj 도구를 사용하세요.

응답 구조: problemId, title, description, inputFormat, outputFormat, examples, limits, metadata

사용 시나리오:

  • 문제 풀이 전 문제 본문 확인

  • 문제 복습 시 문제 내용 참조

  • 코드 분석 시 문제 요구사항 비교

제한사항:

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes백준 문제 번호

TDQS

A4.5/5.0
Behavior4/5

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 important behaviors: scraping target URL, 10-second timeout, up to 2 retries, 30-day cache, and the fact that hints are excluded. It also reveals the response structure. While it doesn't explicitly state read-only semantics or auth requirements, the disclosed operational details are substantial and go well beyond minimal expectations.

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 description is well-structured with clear sections (purpose, response structure, usage scenarios, limitations, platform warning). While it is relatively lengthy, every section adds practical information. It is not redundant or bloated, though the phrase '힌트 제외' appears both in the opening and in the hint warning, which is a minor duplication.

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?

Given no output schema and no annotations, the description compensates well by listing the response fields and constraints. It covers usage context, technical limits, and platform ambiguity. It does not detail possible failure modes or error handling, but for a scraping tool of moderate complexity, the provided information is sufficient for an agent to invoke it correctly.

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 input schema already documents problem_id with type and description, giving 100% coverage. The description adds valuable context beyond the schema: the exact URL pattern (https://www.acmicpc.net/problem/{problem_id}) and the platform-disambiguation logic, which helps clarify how the parameter value should be interpreted and used.

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?

The description clearly states a specific verb and resource: it scrapes the BOJ problem statement (title, description, I/O format, examples, limits) and explicitly excludes hints. It distinguishes itself from the hint-generation sibling by directing users to generate_hint_boj when hints are needed.

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

Usage Guidelines5/5

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

The '사용 시나리오' section explicitly lists when to use the tool (before solving, during review, for code analysis). It also provides a critical platform-disambiguation warning, instructing the agent to confirm whether the platform is BOJ or Programmers when only a problem number is given. This is clear, actionable guidance.

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

fetch_problem_content_programmersA

프로그래머스 문제 본문 스크래핑.

프로그래머스 페이지에서 문제 제목, 설명, 제한사항, 입출력 예시를 가져옵니다.

응답 구조: problemId, title, description, inputFormat, outputFormat, examples, limits, metadata

사용 시나리오:

  • 문제 풀이 전 문제 본문 확인

  • 코드 분석 시 문제 요구사항 비교

제한사항:

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes프로그래머스 문제 ID 또는 URL

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does well: it discloses the target URL, timeout, retry limit, cache duration, and a critical platform-disambiguation warning. This is rich behavioral context beyond the tool name and 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 description is well-structured with clear sections and front-loaded main purpose. It includes useful details without excessive fluff, though a few lines could be trimmed without losing important guidance.

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

Completeness5/5

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

Despite having no output schema, the description lists the response structure and key behavioral constraints (timeout, retries, cache). The single parameter is adequately explained, and the platform ambiguity warning addresses a real contextual risk.

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?

Schema coverage is 100%, and the description adds that the parameter accepts either a problem ID or a URL. It also clarifies the meaning of the problem_id parameter in the context of the scraping target, going beyond the schema's generic type definition.

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?

The description clearly states it scrapes Programmers problem content including title, description, constraints, and examples. It identifies the specific resource and targets the Programmers platform, distinguishing it from sibling BOJ tools.

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?

It gives explicit use scenarios (before solving, during code analysis) and importantly instructs to verify the platform when only a problem ID is given. It doesn't explicitly name sibling alternatives, but the platform verification guidance effectively prevents misuse.

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

generate_hint_bojA

백준(BOJ) 문제 힌트 생성. 3단계 가이드 프롬프트 제공.

🎯 핵심: 한 번에 1개 레벨 힌트만 제공. 1,2,3 단계를 동시에 제시하지 마세요.

📋 응답에 포함된 정보:

  • hint_levels[0]: Level 1 - 문제 분석 (처음 시도)

  • hint_levels[1]: Level 2 - 핵심 아이디어 (부분 구현)

  • hint_levels[2]: Level 3 - 상세 풀이 (거의 완성)

🤖 사용자 상황 판단 → 적절한 1개 레벨만 제시:

1️⃣ Level 1 제시 (처음/막힐 때): "사용자가 코드 없거나 어디서부터 시작해야 할지 모를 때" → hint_levels[0].prompt로 문제 접근법 제시

2️⃣ Level 2 제시 (다시 요청하거나 부분 구현 언급): "사용자가 '더 필요해', '더 자세히' 요청하거나, 이미 코드를 시작했다고 언급" → hint_levels[1].prompt로 핵심 로직 제시

3️⃣ Level 3 제시 (상세 풀이 명시 요청): "사용자가 '정답', '풀이', '코드' 등 최종 답변 요청" → hint_levels[2].prompt로 상세 구현 가이드 제시

📖 [권장] 어려운 문제는 본문 먼저 확인:

  • 난이도 높은 문제(Gold 이상, level ≥ 11)는 메타데이터만으로 부족할 수 있음

  • fetch_problem_content로 실제 문제 본문 확인 후 힌트 생성 권장

  • 문제 본문을 보면 더 정확하고 맞춤형 힌트 제공 가능

  • 예: mcp-cli call algokit/fetch_problem_content '{"problem_id": 1234}'

  • 본문 확인은 권장사항이며 필수는 아님

정답 정책: 힌트만 기본 제공. 사용자가 "정답", "풀이", "코드" 명시 요청 시만 전체 풀이 제공.

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes백준 문제 번호

TDQS

A4.8/5.0
Behavior5/5

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

No annotations were provided, so the description carries full responsibility. It discloses key behavioral rules: only one hint level is provided at a time, the response structure contains hint_levels[0-2], and the answer policy (full solution only when explicitly requested). These details help the agent anticipate interactions.

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 description is well-structured with headings, emojis, and numbered lists, making it scannable despite length. Each section adds value, though some repetition occurs in usage versus policy sections. Still, every sentence earns its place.

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

Completeness5/5

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

Given the tool's complexity (multi-level hint selection, platform ambiguity, answer policy), the description is exceptionally complete. It covers all operational aspects, references a complementary tool for hard problems, and offers clear decision rules for the agent.

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 schema already fully describes problem_id (100% coverage), so baseline is 3. The description adds useful context about platform disambiguation and that the hint depends on problem_id, enhancing the schema but not contradicting it.

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?

The description clearly states the tool generates Baekjoon (BOJ) problem hints using a 3-stage guide prompt. It distinguishes this tool from siblings like get_problem_boj and fetch_problem_content_boj by focusing on hint generation rather than retrieval or analysis.

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

Usage Guidelines5/5

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

Provides explicit when-to-use conditions for each hint level based on user context, recommends fetch_problem_content for difficult problems, and instructs to verify platform ambiguity when only problem_id is given. This goes beyond simple guidance by including exclusions and alternatives.

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

generate_hint_programmersA

프로그래머스 문제 힌트 생성. 3단계 가이드 프롬프트 제공.

🎯 핵심: 한 번에 1개 레벨 힌트만 제공. 1,2,3 단계를 동시에 제시하지 마세요.

📋 응답에 포함된 정보:

  • hint_levels[0]: Level 1 - 문제 분석 (처음 시도)

  • hint_levels[1]: Level 2 - 핵심 아이디어 (부분 구현)

  • hint_levels[2]: Level 3 - 상세 풀이 (거의 완성)

🤖 사용자 상황 판단 → 적절한 1개 레벨만 제시:

1️⃣ Level 1 제시 (처음/막힐 때): "사용자가 코드 없거나 어디서부터 시작해야 할지 모를 때" → hint_levels[0].prompt로 문제 접근법 제시

2️⃣ Level 2 제시 (다시 요청하거나 부분 구현 언급): "사용자가 '더 필요해', '더 자세히' 요청하거나, 이미 코드를 시작했다고 언급" → hint_levels[1].prompt로 핵심 로직 제시

3️⃣ Level 3 제시 (상세 풀이 명시 요청): "사용자가 '정답', '풀이', '코드' 등 최종 답변 요청" → hint_levels[2].prompt로 상세 구현 가이드 제시

📖 [권장] 어려운 문제는 본문 먼저 확인:

  • 난이도 높은 문제(Lv. 3 이상)는 메타데이터만으로 부족할 수 있음

  • fetch_problem_content_programmers로 실제 문제 본문 확인 후 힌트 생성 권장

정답 정책: 힌트만 기본 제공. 사용자가 "정답", "풀이", "코드" 명시 요청 시만 전체 풀이 제공.

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes프로그래머스 문제 ID 또는 URL

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains the response structure (hint_levels array with prompts), enforces a strict 'one level at a time' policy, and states the answer policy ('정답 정책') that full solutions are only provided on explicit request. This goes well beyond typical descriptions.

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

Conciseness5/5

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

Though lengthy, the description is exceptionally well-structured with emojis, numbered lists, and clear sections. Every sentence provides operational guidance, and the key rule—'provide only one hint level at a time'—is front-loaded. There is no filler or redundancy.

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

Completeness5/5

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

Given the lack of output schema and annotations, the description fully specifies the response format (hint_levels[0..2].prompt), the situation-based selection algorithm, the answer policy, and integration with fetch_problem_content_programmers. It leaves no critical behavioral or usage aspect unexplained.

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 input schema already covers the single problem_id parameter at 100%, so the baseline is 3. The description adds meaningful extra context by warning that a bare problem number may be ambiguous between BOJ and Programmers, and instructs asking the user for platform if context is missing. It also advises fetching problem content for high-difficulty problems, enriching the parameter's usage semantics.

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?

The description clearly states '프로그래머스 문제 힌트 생성' (Programmers problem hint generation) and '3단계 가이드 프롬프트 제공' (provides a 3-step guide prompt). It specifies both the action (generating hints) and the resource (Programmers problems), distinguishing it from the sibling generate_hint_boj tool.

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

Usage Guidelines5/5

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

The description provides a detailed decision tree for when to present each of the three hint levels (Level 1 when stuck, Level 2 on re-request/partial implementation, Level 3 on explicit solution request). It also recommends using fetch_problem_content_programmers for difficult problems and includes platform disambiguation rules when only a bare number is provided.

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

generate_review_template_bojA

백준(BOJ) 문제에 대한 사용자의 제출 코드와 문제 본문을 분석해서 사용자 맞춤형 복기용 가이드를 제공합니다. 마크다운 템플릿, 문제 분석, 관련 문제, 작성 프롬프트를 포함합니다.

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes백준 문제 번호
user_notesNo사용자가 미리 작성한 메모 (선택)

TDQS

A4.2/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 discloses that the tool analyzes code and problem text, may require platform clarification, and includes specific output components. However, it does not explain how it obtains the user's code, side effects, failure modes, or whether it fetches external data, leaving behavioral ambiguity.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and followed by a necessary warning. Every sentence adds value; no redundant content or excessive detail.

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?

For a generation tool with no output schema, the description provides a solid overview of expected outputs (markdown template, analysis, related problems, prompt) and critical platform guidance. It lacks details on prerequisites like whether code submission is required, but is otherwise sufficiently complete for the tool's complexity.

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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by warning about platform ambiguity for problem_id and clarifying that user_notes is an optional memo. This helps the agent understand the practical implications of the parameters.

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?

The description clearly states the tool analyzes the user's submitted code and problem text to generate a personalized review guide for BOJ problems. It includes a specific verb ('제공합니다'), target resource ('백준(BOJ) 문제'), and output components, distinguishing it from platform-specific siblings like generate_review_template_programmers.

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?

Provides explicit platform-disambiguation guidance: if only a problem number is given, determine the platform from context or ask the user whether it is BOJ or Programmers. This helps the agent select the correct platform-specific tool, but it does not explicitly contrast with other BOJ tools like analyze_code_submission_boj or generate_hint_boj.

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

generate_review_template_programmersA

프로그래머스 문제에 대한 복기용 가이드를 제공합니다. 마크다운 템플릿, 문제 분석, 작성 프롬프트를 포함합니다.

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes프로그래머스 문제 ID 또는 URL
user_notesNo사용자가 미리 작성한 메모 (선택)

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses that the tool generates a guide with specific components and includes a critical behavioral caveat (checking platform before calling). However, it does not detail side effects, authentication needs, or what happens on invalid input, though for a generation tool this is less critical.

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

Conciseness5/5

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

Two compact sentences and a warning; the first sentence states purpose and deliverables, the second provides a crucial usage hint. No fluff, front-loaded, every sentence earns its place.

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

Completeness5/5

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

For a tool with 2 parameters and no output schema, the description sufficiently describes what the tool does, what it produces (template, analysis, prompt), and the key edge case (platform ambiguity). The agent has enough to invoke it correctly without additional missing context.

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?

Schema coverage is 100%, so baseline is 3. The description adds semantic value to the problem_id parameter by warning about ambiguity when only a number is supplied, implying the tool may need platform clarification. This goes beyond the schema's simple 'ID or URL' 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?

The description uses a specific verb ('제공합니다' - provides) and a clear resource ('프로그래머스 문제에 대한 복기용 가이드'), listing concrete deliverables (markdown template, problem analysis, writing prompts). It clearly distinguishes from the BOJ sibling by specifying the platform, and the warning about platform discrimination further clarifies its scope.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: for Programmers problems, and crucially instructs the agent to confirm the platform if only a problem number is given without context. This is direct, actionable usage guidance that prevents incorrect tool selection across the BOJ/Programmers sibling pair.

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

get_problem_bojA

특정 BOJ 문제의 상세 정보를 조회합니다. 문제 번호로 난이도, 태그, 통계 등을 확인할 수 있습니다.

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYesBOJ 문제 번호 (양의 정수)

TDQS

A4/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 behavioral disclosure burden. It discloses the platform ambiguity warning and the kind of data returned (difficulty, tags, stats), but it does not mention potential error cases, response format, or any side effects. For a simple getter, this is adequate but incomplete.

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

Conciseness5/5

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

The description is two sentences with the core action in the first sentence and a critical platform warning in the second. Every sentence earns its place, and the information is front-loaded.

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?

For a single-parameter getter with no output schema, the description covers the purpose, the key data returned (difficulty, tags, statistics), and a real usage caveat (platform ambiguity). It does not document edge cases or full return structure, but that is not critical for a tool of this simplicity.

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 100% and the schema already clearly describes problem_id as 'BOJ 문제 번호 (양의 정수)'. The description adds minimal parameter-level meaning beyond the schema; the platform-confirmation note relates to usage context rather than the parameter definition itself. Baseline 3 is appropriate.

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?

The description clearly states the tool 'retrieves detailed information about a specific BOJ problem' and lists the details (difficulty, tags, statistics). It distinguishes itself from siblings by explicitly targeting BOJ and by the platform-confirmation note, which differentiates it from get_problem_programmers.

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 description gives explicit guidance on when to use this tool versus other platform-specific tools: if only a problem number is provided, determine the platform from context or ask the user for confirmation. It does not explicitly name alternative tools or state when not to use this one, but it provides clear contextual guidance.

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

get_problem_programmersA

프로그래머스 문제 상세 정보 조회 (웹 스크래핑).

프로그래머스 페이지에서 문제 제목, 설명, 제한사항, 입출력 예제를 가져옵니다.

응답 구조: problemId, title, level, category, description, constraints, examples, tags

사용 시나리오:

  • 프로그래머스 문제 풀이 전 문제 본문 확인

  • 문제 복습 시 문제 내용 참조

  • 코드 분석 시 문제 요구사항 비교

제한사항:

참고:

  • BOJ와 다르게 프로그래머스는 fetch + cheerio 사용 (SSR 페이지)

  • 프로그래머스는 태그 정보가 없으므로 tags 필드는 빈 배열

⚠️ 플랫폼 판별: 문제 번호만 입력된 경우 대화 맥락에서 플랫폼을 파악하거나, 맥락이 없으면 반드시 BOJ/프로그래머스 중 어느 플랫폼인지 사용자에게 확인 후 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes문제 ID 또는 프로그래머스 URL. 예: 42748 또는 https://school.programmers.co.kr/learn/courses/30/lessons/42748

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description fully discloses operational behavior: web scraping via fetch + cheerio, target URL, 10-second timeout, max 2 retries, 1 request/second rate limit, and that tags field is empty for Programmers. This goes well beyond a simple getter and gives the agent critical expectations.

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 description is relatively long but well-organized with labeled sections (usage scenarios, limitations, notes). Every section contributes necessary operational detail for a scraping tool, although it could be tightened slightly without losing value.

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

Completeness5/5

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

Despite no output schema, the description lists the full response structure (problemId, title, level, category, description, constraints, examples, tags). It also covers rate limiting, retries, timeout, platform-specific behavior, and the platform disambiguation requirement, making it complete for an agent to invoke correctly.

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 schema already covers the single problem_id parameter with examples and 100% coverage. The description adds valuable disambiguation guidance: when only a problem number is given, the agent must determine the platform from context or ask the user. This extra semantic helps correct invocation.

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?

The description clearly states the tool's function: '프로그래머스 문제 상세 정보 조회 (웹 스크래핑)' and lists the returned fields (problemId, title, level, etc.), distinguishing it from BOJ tools. However, it does not explicitly differentiate from the sibling fetch_problem_content_programmers, which may overlap.

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?

Provides explicit usage scenarios (before solving, during review, code analysis) and clear guidance for platform disambiguation when only a problem number is given. It does not, however, list when not to use this tool or mention alternative siblings such as fetch_problem_content_programmers.

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

health_checkB

MCP 서버 상태 확인

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose side effects and return behavior. It only states 'check server status' without explaining whether it performs safe read-only operations, requires authentication, or what the output format looks like. This is a significant gap for a 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.

Conciseness5/5

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

The description is one short sentence, heavily front-loaded with the core action. It contains no unnecessary words or repeated information.

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 there is no output schema or annotations, the description should explain what a successful response contains. It only says 'check status' without specifying the return type, possible values, or any side effects. For a minimal health-check tool, this may be acceptable, but it leaves the agent guessing about the tool's behavior.

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 has zero parameters, and the schema is empty. The description doesn't add parameter details because none exist. Per the baseline for zero-parameter tools, a score of 4 is appropriate.

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?

The tool name and description clearly indicate it checks the MCP server status. This distinguishes it from sibling tools that focus on problem search/analysis. However, 'status' is somewhat generic and doesn't specify what aspect is checked.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus others. It neither mentions alternatives nor excludes scenarios. The context signals show it's a standalone health check, but that's not explicitly stated.

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

search_problems_bojA

BOJ 문제를 검색합니다. 키워드, 난이도 레벨, 알고리즘 태그로 필터링할 수 있습니다. ⚠️ 중요: 결과는 마크다운 테이블로 반환되며, 각 문제번호는 https://www.acmicpc.net/problem/{ID} 형태의 마크다운 링크로 제공됩니다. 사용자에게 보여줄 때는 이 링크들을 반드시 유지해야 합니다. 예: Gold 티어의 DP 문제 검색, Silver 이하 그리디 문제 검색 등

⚠️ 플랫폼 미지정 시 사용자에게 어느 플랫폼에서 검색할지 확인하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo페이지 번호 (기본: 1)
sortNo정렬 기준
tagsNo알고리즘 태그 (예: "dp" 또는 ["dp", "greedy", "bfs"])
queryNo검색 키워드 (제목, 번호, 태그 등)
directionNo정렬 방향
level_maxNo최대 난이도 (숫자 1-30 또는 "실버 3", "Gold I" 형식)
level_minNo최소 난이도 (숫자 1-30 또는 "실버 3", "Gold I" 형식)

TDQS

A3.7/5.0
Behavior4/5

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

Discloses a critical output behavior: results are returned as a markdown table with mandatory links to BOJ problem pages that must be preserved. Since no annotations exist, this is valuable beyond structured fields. It does not cover all behaviors (e.g., pagination), but the key user-facing behavior is transparent.

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 description is moderately concise and structured, with the main sentence, link warning, and example all earning their place. However, the final line about platform unspecified is confusing and redundant for a BOJ-specific tool, adding noise and reducing clarity.

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 description covers purpose, filter dimensions, output format, and examples, which is adequate for basic use. Given 7 optional parameters and no output schema, it could benefit from clarifying tag combination semantics (AND/OR) or result limits. The confusing platform line also detracts from completeness.

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?

The input schema already describes all 7 parameters with detailed descriptions and 100% coverage. The description summarizes the main filter dimensions and gives an example, but adds little beyond the schema. The baseline of 3 is appropriate.

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?

The description clearly states the tool searches BOJ problems with filters for keyword, difficulty level, and algorithm tags. It distinguishes from sibling tools by scope (get_problem for single problems, search_tags for tags) though not explicitly; the final line about unspecified platform introduces slight ambiguity.

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?

Concrete examples ('Gold tier DP problem search', 'Silver or lower greedy problem search') illustrate when to use the tool. The platform reminder, though oddly placed, suggests clarifying the platform when unspecified, which is relevant given the sibling search_problems_programmers tool. No explicit exclusions are provided, but the context is adequate.

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

search_problems_programmersA

프로그래머스 문제를 검색합니다. 난이도, 정렬 방식, 키워드로 필터링할 수 있습니다.

사용 예시:

  • 레벨 1 문제 검색: levels: [1]

  • 레벨 1-2 문제 검색: levels: [1, 2]

  • 최신 문제 검색: order: "recent"

  • 정확도순 정렬: order: "accuracy"

  • 키워드 검색: query: "동적계획법"

  • 페이지 이동: page: 2

제한사항:

  • Puppeteer 기반 스크래핑 (응답 시간 3-5초)

  • 페이지당 20개 문제 반환

  • 프로그래머스 레벨 체계: 0(입문), 1-5

응답 형식:

  • 마크다운 테이블 (번호, 제목, 레벨, 카테고리, 완료자, 정답률)

  • 문제 제목은 프로그래머스 링크로 제공

⚠️ 중요: 프로그래머스는 JavaScript 렌더링이 필요하여 BOJ보다 느립니다 (3-5초).

⚠️ 플랫폼 미지정 시 사용자에게 어느 플랫폼에서 검색할지 확인하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo페이지 번호 (기본값: 1, 페이지당 20개 문제)
limitNo반환할 문제 개수 (최대 20개, 기본값: 20)
orderNo정렬 방식. recent: 최신순, accuracy: 정확도순, popular: 인기순 (기본값: recent)
queryNo검색 키워드 (문제 제목으로 검색)
levelsNo난이도 레벨 배열 (0: 입문, 1-5: 레벨1-5). 예: [1, 2] - 레벨1, 2 문제

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does exceptionally well: it reveals Puppeteer-based scraping, response latency, page size, return format (markdown table with specific columns), and the reason for slowness (JavaScript rendering). This adds meaningful behavioral 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.

Conciseness4/5

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

The description is well-structured with clear sections (intro, examples, limitations, response format, warnings). It is slightly redundant as the '중요' warning repeats the 3-5 second latency already stated in limitations, but overall every section serves a purpose and the front-loaded intro is effective.

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

Completeness5/5

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

Given no output schema, the description compensates by detailing the response format (markdown table with columns). It also covers platform-specific behavior, constraints, and usage examples, making it complete for a moderately complex search tool with 5 optional parameters.

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?

Schema coverage is 100%, so baseline is 3. The description adds value by providing concrete usage examples for levels, order, query, and page, and by clarifying the levels range (0-5). This goes beyond the plain schema descriptions, though it doesn't detail every parameter's syntax.

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?

The description clearly states the tool's purpose: '프로그래머스 문제를 검색합니다' (searches Programmers problems) and mentions filtering by difficulty, sort, and keyword. It distinguishes from the BOJ sibling by explicitly referencing BOJ's speed and advising platform confirmation.

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

Usage Guidelines5/5

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

The description provides explicit usage examples for various parameter combinations (levels, order, query, page) and clearly states when to use this tool by instructing to confirm the platform when unspecified. It also mentions limitations like 3-5 second response time, helping users decide if this is appropriate.

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

search_tags_bojA

알고리즘 태그를 검색합니다. 한글 또는 영문 키워드로 관련 태그를 찾을 수 있습니다. 예: "다이나믹", "그래프", "이분 탐색" 등

⚠️ 플랫폼 미지정 시 사용자에게 어느 플랫폼에서 검색할지 확인하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes태그 검색 키워드 (최소 1글자)

TDQS

A4.2/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 adds behavioral context via examples and the platform-confirmation warning, but it does not disclose return format, empty-result behavior, or any access requirements. For a read-only search tool, this is adequate but not thorough.

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

Conciseness5/5

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

The description is compact and front-loaded: it states the purpose, gives examples, and adds a warning in just two sentences. Every sentence adds value with no redundancy.

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?

For a simple one-parameter search tool with no output schema, the description covers purpose, examples, parameter usage, and a platform-confirmation note. It could be more explicit about BOJ-specific scope, but the tool name and sibling list supply that context.

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 input schema already documents the single required query parameter with 100% coverage. The description goes beyond by specifying that both Korean and English keywords are supported and providing concrete examples, which enriches the parameter semantics.

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?

The description clearly states the tool searches algorithm tags using Korean or English keywords, with specific examples. This distinguishes it from sibling tools like search_problems_boj, which search problems rather than tags.

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 description provides clear context: use this tool when you need to find algorithm tags by keyword. It also gives a practical usage warning to confirm the platform if unspecified, but does not explicitly name alternative tools or exclusion scenarios.

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. 16 tool updatesv1.0.5
    • First observedanalyze_code_submission_boj
    • First observedanalyze_code_submission_programmers
    • First observedanalyze_problem_boj
    • First observedanalyze_problem_programmers
    • First observedfetch_problem_content_boj
    • First observedfetch_problem_content_programmers
    • First observedgenerate_hint_boj
    • First observedgenerate_hint_programmers
    • First observedgenerate_review_template_boj
    • First observedgenerate_review_template_programmers
    • First observedget_problem_boj
    • First observedget_problem_programmers
    • First observedhealth_check
    • First observedsearch_problems_boj
    • First observedsearch_problems_programmers
    • First observedsearch_tags_boj

TDQS

A3.9/5.0

Scored across 16 tools

Disambiguation4/5

Each tool has a clear platform suffix (_boj/_programmers) and a distinct verb (search, get, analyze, fetch, etc.). However, analyze_problem and generate_hint both provide hint-related data and could be confused, and get_problem vs fetch_problem_content have overlapping purposes (metadata vs full content), though descriptions help.

Naming Consistency4/5

The vast majority follow a consistent verb_noun_platform pattern (e.g., search_problems_boj, generate_hint_programmers). The sole outlier is health_check, which breaks the verb_noun pattern but is a standard utility and acceptable.

Tool Count4/5

16 tools is on the higher side but justified by covering two distinct platforms (BOJ and Programmers) with nearly parallel feature sets. Each tool serves a specific purpose, and the count is not excessive for the broader competitive-programming assistance domain.

Completeness5/5

The tool surface covers the full problem-solving lifecycle for both platforms: search, retrieve metadata/content, analyze with hints, generate review templates, and analyze code submissions. No obvious dead ends; the only minor gap is platform-specific extras like tag search only existing for BOJ, but that's a platform limitation.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers