Skip to main content
Glama

BOJ-MCP

npm version License: MIT Release to NPM

백준에 있는 문제를 검색하는 기능을 제공하는 비공식 MCP입니다.

BOJ-MCP지만, solved.ac의 비공식 API를 사용합니다.

한창 개발 중입니다.

설치 방법

1) npm 사용 (권장)

컴퓨터에 node.js가 설치되어 있어야 합니다.

Claude Desktop

Windows: %APPDATA%\Claude\claude_desktop_config.json

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

해당 위치에 파일이 없으면 생성합니다.

{
  "mcpServers": {
    "boj-mcp": {
      "command": "npx",
      "args": ["-y", "boj-mcp", "--handle=your-handle"]
    }
  }
}

위 내용을 추가하고 Claude Desktop을 종료 후 다시 시작합니다.

정상적으로 설치가 되었다면 위와 같이 표시됩니다.

Claude Code
claude mcp add boj-mcp -- npx -y boj-mcp
# OR
claude mcp add boj-mcp -- npx -y boj-mcp --handle=your-handle
Codex
codex mcp add boj-mcp -- npx -y boj-mcp
# OR
codex mcp add boj-mcp -- npx -y boj-mcp --handle=your-handle
Gemini Cli
gemini mcp add boj-mcp npx -y boj-mcp
# OR
gemini mcp add boj-mcp npx -y boj-mcp --handle=your-handle
Cursor

Ctrl + Shift + P를 누르고 Open MCP Settings를 찾아 들어갑니다. New MCP Server를 클릭하고 다음 내용을 붙여넣습니다.

{
  "mcpServers": {
    "boj-mcp": {
      "command": "npx",
      "args": ["-y", "boj-mcp", "--handle=your-handle"]
    }
  }
}

2) 로컬 빌드 후 실행

git clone https://github.com/csh1668/boj-mcp
cd boj-mcp
pnpm i
pnpm start

그리고 Cursor 설정에 다음처럼 추가합니다.

{
  "mcpServers": {
    "boj-mcp": {
      "command": "node",
      "args": ["dist/index.js"]
    }
  }
}

사용 방법

설치가 완료되면 AI에게 다음과 같이 질문하여 백준 문제를 검색하거나 추천받을 수 있습니다.

1. 문제 검색

  • "골드 5 난이도의 DP 문제 찾아줘"

  • "다익스트라 문제 중 푼 사람이 10명 이하인 문제 찾아줘"

2. 문제 추천

  • "코딩 테스트 준비를 위해 실버 난이도의 구현 문제 5개 추천해줘"

  • "ICPC 예선 대비를 위한 문제 세트 추천해줘"

3. 대회 및 태그 정보

  • "UCPC 2023 대회의 출제 경향을 분석해줘"

  • "비트마스킹 태그가 붙은 문제들은 어떤 게 있어?"


개발자 가이드

프로젝트에 기여하거나 새로운 도구를 추가하고 싶다면 Developer Guide를 참조하세요.

  • 프로젝트 구조 및 아키텍처

  • 새로운 도구 추가 방법

  • 코드 스타일 가이드

  • 빌드 및 배포 방법

Available Tools

10 tools
analyze-contestAnalyze Contest TrendB

특정 대회(들)의 출제 경향을 분석하는 방법을 안내합니다. 문제 난이도 분포, 자주 출제되는 알고리즘 태그, 대회 준비를 위한 학습 방향을 제시하는 가이드를 제공합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
compareYearsNotrue로 설정하면 연도별 출제 경향 변화를 비교 분석합니다. (기본값: false)
contestSlugsYes분석할 대회 슬러그(들). 쉼표로 구분하여 여러 대회를 비교 분석할 수 있습니다. (예: 'ucpc2022' 또는 'ucpc2022,ucpc2023')

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains that the tool provides a guide containing difficulty distribution, algorithmic tags, and study direction, which is helpful. However, it does not disclose whether the tool is read-only, whether it fetches live data, rate limits, or any other side effects. No annotation contradictions exist.

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 concise sentences that front-load the purpose and enumerate the expected output content. Every sentence adds value with no wasted words or redundancy.

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?

The description lacks clarity on the exact output format—it says 'provides a guide' without specifying whether the result is text, structured data, or something else. It also omits any mention of the compareYears parameter and how it affects the returned analysis, leaving significant gaps for an agent with no output schema to infer behavior.

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 provides detailed descriptions for both contestSlugs and compareYears, covering 100% of the parameters. The tool description adds minimal parameter-specific context beyond that, so the baseline score of 3 applies—the schema does the heavy lifting.

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 it analyzes problem-setting trends for specific contests and lists expected outputs like difficulty distribution, algorithm tags, and study direction. However, the phrasing '방법을 안내합니다' (guides the method) introduces slight ambiguity about whether the tool actually performs the analysis or merely provides instructions.

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 explicit guidance on when to use this tool versus its siblings (e.g., list-contest, search-contest, recommend-contest-problems). It does not mention alternatives, exclusions, or any prerequisites, leaving the agent to infer usage context on its own.

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

list-contestList ContestA

BOJ에 존재하는 대회 목록을 조회합니다. 주의: 2025년에 열린 충남대학교 대회가 있음에도 contest 목록에는 cnu2025가 없을 수도 있습니다. 그럴 때는 cnu와 같이 상위 대회 슬러그를 사용하여 전체 충남대학교 대회를 조회할 수 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description must carry the burden. It transparently discloses a notable quirk: some contests (e.g., cnu2025) may not appear in the list, and suggests a workaround. Yet it omits details about the response format or other limitations.

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 concise: two sentences, front-loaded with the core function, followed by a relevant caveat. No unnecessary information is included.

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?

For a simple tool with no parameters and no output schema, the description covers the basic purpose and an edge case. However, the advice to use a higher-level slug is ambiguous given the tool has no parameters, and the response structure is not described.

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 fully covered (empty object). The description adds no parameter semantics because there are none to explain, aligning with the baseline expectation.

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 that the tool retrieves the list of contests on BOJ, using the specific verb '조회' and resource '대회 목록'. It distinguishes itself from siblings like list-tag by its object, but doesn't explicitly contrast with search-contest.

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

Usage Guidelines3/5

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

The description implies this tool is for listing contests, with a specific note about handling missing entries like cnu2025 by using a parent slug. However, it lacks explicit guidance on when to use this versus search-contest or analyze-contest.

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

list-tagAlgorithm Tags ListA

BOJ의 알고리즘 태그 목록을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It uses the read verb '조회합니다' implying a safe read operation, but it does not describe the response structure, ordering, or any other behavioral nuances.

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?

A single, concise sentence that immediately states the tool's purpose. No filler or repetition.

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 zero-parameter list tool, the description adequately conveys that it retrieves the list of BOJ algorithm tags. However, without an output schema, it would benefit from mentioning the response format (e.g., list of tag names), but this is a minor gap.

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 covers 100% (vacuously). The description does not need to explain parameters, so the baseline of 4 applies.

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 states a specific verb ('조회합니다' = retrieves) and a specific resource ('BOJ의 알고리즘 태그 목록' = BOJ's algorithm tag list). It implies listing all tags, distinguishing it from sibling search-tag, though it does not explicitly contrast them.

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?

No guidance is provided on when to use this tool versus search-tag or other siblings. The description simply states the function without context, alternatives, or exclusions.

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

recommend-contest-problemsRecommend Contest ProblemsA

목적에 맞는 대회 문제를 추천하는 방법을 안내합니다. 학교 대회, ICPC, 특정 대회 준비 등 목적에 따라 맞춤형 문제 세트를 찾는 가이드를 제공합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
purposeYes준비 목적: - 'school': 학교 대회 준비 - 'icpc': ICPC 준비 (ICPC, IOI, BAPC, NWERC 등 국제 대회) - 'specific_contest': 특정 대회 준비 (해당 대회의 과거 기출) - 'general': 일반적인 실력 향상
focusTagsNo집중하고 싶은 알고리즘 태그들 (쉼표로 구분, 예: 'dp,그리디,그래프')
currentTierNo현재 티어 또는 목표 난이도 (예: 'bronze', 'silver', 'gold', 'platinum'). 미입력 시 다양한 난이도 추천
problemCountNo추천받을 문제 개수 (기본값: 10)
targetContestNopurpose가 'specific_contest'일 때 필수. 준비하려는 대회 이름 또는 슬러그 (예: 'ucpc', '충남대학교', 'icpc')

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only says it 'guides' and 'provides a guide' to find problem sets, but does not disclose what the output looks like, whether it depends on specific parameters like targetContest for specific_contest, or any side effects. This is a significant gap given the absence of annotations.

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 concise at two sentences, but the two sentences are somewhat redundant ('guides how to recommend' and 'provides a guide to find customized problem sets'). It is front-loaded with the core purpose and has no fluff, but could be tightened into one sentence.

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?

With five parameters, no annotations, and no output schema, the description is too thin to be complete. It does not clarify how different purposes affect recommendations, the relationship between parameters (e.g., targetContest dependence on specific_contest), or what the returned data structure is. The schema covers parameter specifics, but the description adds almost no contextual 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?

Schema description coverage is 100%, with all five parameters having clear descriptions. The tool description does not add any additional parameter semantics beyond what the schema already provides, so it earns the baseline score of 3.

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 recommends contest problems based on purpose ('목적에 맞는 대회 문제를 추천'), with specific purpose categories like school contests, ICPC, and specific contest preparation. It distinguishes from sibling tools like search-problem and analyze-contest by focusing on generating customized problem sets.

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 for when to use the tool: when preparing for school contests, ICPC, specific contests, or general skill improvement. However, it does not mention exclusions or alternatives, such as using search-problem for finding a single known problem, so it just misses a 5.

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

search-contestSearch ContestA

대회 이름을 이용해서 대회 슬러그를 반환합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes대회 이름

TDQS

A3.5/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 behavioral traits. It states the input and output but does not explain behavior on edge cases such as no match, multiple matches, or case sensitivity. This lack of transparency could leave agents uncertain about error handling or selection criteria.

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 a single concise sentence that is front-loaded with the key action and result. Every word contributes to meaning, with no filler or redundancy.

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 tool is simple with one parameter and no output schema. The description covers the basic purpose and return value, but it does not address failure modes or edge cases (e.g., what happens if the contest name is not found). Given the lack of annotations and output schema, this is a notable gap.

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 parameter 'query' is already described as '대회 이름' (contest name). The description reiterates this without adding extra information about format, validation, or alternatives, so it adds no semantic value beyond 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's function: using a contest name to return the contest slug. The verb '반환합니다' (returns) and resource '대회 슬러그' (contest slug) are specific, and it clearly differentiates from siblings like list-contest which lists contests rather than converting a single name to a slug.

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

Usage Guidelines3/5

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

The description implies the tool should be used when a contest slug is needed for a given contest name, but it does not explicitly state when to use it over alternatives like list-contest or search-problem. No exclusions or alternative recommendations are provided.

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

search-problemSearch ProblemA

BOJ 문제를 검색합니다. 알고리즘 태그(#태그)를 사용한 검색 전에는 반드시 'search-tag'나 'list-tag' 도구로 유효한 태그 슬러그/이름을 확인하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo정렬 기준solved
queryYessolved.ac 문제 고급 검색 쿼리 형식 주요 연산자/필터와 예시: - "...": 정확히 일치 (예: "A+B - 2") - (): 우선순위/그룹 (예: A+B (2 | 3)) - -: 제외 not (예: -Large, -#greedy) - &: AND, |: OR (예: "A+B" 2 & #math, Small | Large) - *: 난이도 (예: *b..s, *g4..g1, *0) - id: 문제 번호 범위 (예: id:1000..1099) - s#: 푼 사람 수 (예: s#1000.., s#100..500) - #: 태그 (예: #dp, -#ad_hoc) - /: 출처/북마크 (예: /ucpc2022) - t#: 평균 시도 (예: t#3..5) - %: 언어 (예: %ko) - @: 유저가 푼 문제 (예: @shiftpsh)- c/: CLASS 단계 (예: c/1) - e/: CLASS 에센셜 (예: e/1) - s?: 표준 난이도 (예: s?true) - p?: 새싹 난이도 (예: p?true) - o?: 풀 수 있음 (예: o?true) - v?:, c?: 기여 가능 (예: v?true) - w?: 문제해결 경고 (예: w?true) - v#:, c#: 기여자 수 (예: v#10.., c#1..5) 범위 표기: a..b(이상..이하), a..(이상), ..b(이하). 공백으로 구분된 조건은 AND로 해석됨
directionNo정렬 방향asc
userSolvedNo사용자가 푼 문제를 어떻게 할지: all: 상관없음, solved: 사용자가 푼 문제만 조회, not_solved: 사용자가 풀지 않은 문제만 조회all
include_tagsNo태그 정보를 포함할지 여부 (알고리즘 태그 정보는 힌트가 될 수 있으므로, 사용자가 학습을 원한다면 false로 설정하세요)

TDQS

A3.7/5.0
Behavior2/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 of behavioral disclosure. It only states the basic action (search problems) and the tag validation advice, but does not mention return format, pagination, rate limits, or any side effects. This is a significant gap for a search tool.

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 consists of two concise sentences, front-loaded with the purpose and followed by a targeted usage guideline. Every sentence contributes useful information without redundancy.

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 schema richly documents the query syntax and parameters, but the description lacks any information about the return value or output shape (no output schema exists). It is adequate for a simple search tool but has gaps regarding what the caller receives.

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 schema covers 100% of parameters with detailed descriptions, especially the query parameter's complex syntax. The description adds a small but useful semantic hint about checking tag validity, which relates to the query parameter. This provides minimal added value beyond 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 states 'BOJ 문제를 검색합니다' (searches BOJ problems), which is a specific verb+resource that clearly identifies the tool's function. This distinguishes it from sibling tools like search-tag and search-contest by making the target resource explicit.

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 explicit usage guidance: '알고리즘 태그(#태그)를 사용한 검색 전에는 반드시 'search-tag'나 'list-tag' 도구로 유효한 태그 슬러그/이름을 확인하세요' (before using tag search, verify valid tag slugs with search-tag or list-tag). This clearly instructs when to use alternative tools, though it doesn't cover all potential alternatives.

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

search-tagSearch Algorithm TagB

태그 이름을 이용해서 태그 슬러그를 반환합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes태그 이름

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only says 'returns the tag slug' without disclosing behavior such as error handling (e.g., missing tag), case sensitivity, read-only nature, or any side effects. This is minimal transparency for a tool that will be invoked by an agent.

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 a single, concise sentence that front-loads the core purpose. No unnecessary words or redundant information; every word earns its place. It is appropriately sized for a simple lookup tool.

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 very simple tool with one string parameter and no output schema, the description states the basic operation and result. It does not specify return format or edge cases, but given the low complexity, it is largely complete. A small deduction for missing error/edge-case context.

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 schema covers the parameter fully: 'query' is described as 'tag name' (태그 이름) with 100% coverage. The description adds little beyond restating that the tag name is used, so baseline score of 3 is appropriate since the schema already does the heavy lifting.

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: using a tag name, it returns the tag slug. It uses a specific verb ('returns') and resource (tag), distinguishing it from sibling tools like search-contest or search-problem which target different entities.

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?

There is no guidance on when to use this tool versus alternatives. It does not mention list-tag for listing tags or explain scenarios where search-tag is appropriate. The single sentence states the operation but lacks any contextual or exclusionary guidance.

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

user-statUser StatA

사용자가 푼 문제 수를 문제 난이도 별로 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleNo사용자 핸들 (기본적으로 환경 변수 BOJ_HANDLE로 제공되므로 입력이 필요하지 않음)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. The verb implies a read-only query, but it does not disclose any side effects, authentication needs, or return format details beyond counting by difficulty. It is not contradictory, but adds minimal behavioral context beyond the obvious.

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 a single, clear sentence in Korean that immediately states the action and scope. There is no redundant or extraneous wording.

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 the tool has only one optional parameter, high schema coverage, and no output schema, the description sufficiently conveys the essential behavior. It could slightly benefit from mentioning the return structure or contrasting with similar siblings, but for a simple stat query it is adequate.

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 schema already fully describes the single optional handle parameter, including its default from the BOJ_HANDLE environment variable. The description adds no additional parameter semantics, so the baseline score applies.

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 ('조회합니다' - retrieves) with a clear resource (user's solved problem count) and scope (by difficulty). It distinguishes from siblings like user-stat-tag, which presumably groups by tag.

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?

No explicit guidance is given about when to use this tool versus alternatives. The description does not mention preferred contexts, exclusions, or contrast with user-stat-tag or user-top100-problems.

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

user-stat-tagUser Stat TagA

사용자가 푼 문제 수를 알고리즘 태그 별로 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleNo사용자 핸들 (기본적으로 환경 변수 BOJ_HANDLE로 제공되므로 입력이 필요하지 않음)

TDQS

A3.5/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 behavioral traits. It only states the query action without detailing response format, authentication needs, rate limits, or limitations (e.g., public users only). While read-only behavior is implied, the description does not explicitly address it.

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 a single concise Korean sentence, front-loaded with the main verb and resource. It contains no fluff and every word contributes to the meaning.

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 core purpose is clear, but the description lacks details on the return format (e.g., tag-count pairs) and error behavior. Since there is no output schema, the description could have been more explicit about what the user will see, though the intent is inferable.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'handle' parameter, which is well-documented. The tool description itself adds no parameter information, but the baseline of 3 applies because the schema fully covers the 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's function: querying the number of problems solved by a user, grouped by algorithm tag. The verb '조회합니다' and resource '알고리즘 태그 별로' make the purpose specific and distinguish it from sibling tools like user-stat or list-tag.

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

Usage Guidelines3/5

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

The description implies usage context (when tag-wise solved counts are needed) but provides no explicit when-to-use/when-not-to-use guidance or alternative tool references. It does not mention exclusions or prerequisites beyond the schema's handle default.

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

user-top100-problemsUser Top 100 ProblemsA

사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다

ParametersJSON Schema
NameRequiredDescriptionDefault
handleNo사용자 핸들 (기본적으로 환경 변수 BOJ_HANDLE로 제공되므로 입력이 필요하지 않음)

TDQS

A3.5/5.0
Behavior2/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 of disclosing behavior. It only states the basic operation without clarifying sort order, how 'high level' is determined, return format, or edge cases (e.g., fewer than 100 solved problems). This is a significant transparency gap for a 'top 100' selection tool.

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 a single, compact sentence with no redundant wording or repetition. It is front-loaded and efficient.

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 tool has a simple interface (one optional parameter, no output schema) and a clear single-sentence description. However, the lack of output schema and absence of details about ordering or return format leave the description merely adequate rather than fully complete.

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 description does not mention the handle parameter, but the schema description covers it fully (100% coverage), including the note that it defaults to an environment variable. Per the baseline rule for high schema coverage, a score of 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's purpose: it fetches the top 100 hardest problems the user has solved. It uses a specific verb (가져옵니다) and resource (user's solved problems), and is easily distinguished from siblings like user-stat or search-problem.

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

Usage Guidelines3/5

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

The description implies the usage context (when you need a user's top solved problems), but it does not explicitly differentiate from sibling tools or provide exclusions. The purpose alone gives a clear hint, but no direct guidance on when to choose this tool over alternatives.

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. 10 tool updatesv1.2.2
    • First observedanalyze-contest
    • First observedlist-contest
    • First observedlist-tag
    • First observedrecommend-contest-problems
    • First observedsearch-contest
    • First observedsearch-problem
    • First observedsearch-tag
    • First observeduser-stat
    • First observeduser-stat-tag
    • First observeduser-top100-problems

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: tags, contests, problems, and user statistics. Even the two contest guide tools (analyze-contest and recommend-contest-problems) are differentiated by their specific goals (analysis vs. recommendation).

Naming Consistency4/5

Most tools follow a hyphenated verb_noun pattern (list-, search-, analyze-, recommend-), but the three user-* tools (user-top100-problems, user-stat, user-stat-tag) deviate by using a noun prefix. The hyphenation convention is consistent, making the deviation minor.

Tool Count5/5

With 10 tools, the server is well-scoped for its domain (BOJ), covering tags, contests, problems, and user stats without unnecessary bloat or redundancy.

Completeness4/5

Core operations for searching and listing resources are present, but there are minor gaps such as no direct problem-detail fetch or contest-detail fetch. Additionally, two tools are meta-guides rather than direct data operations, slightly limiting direct functionality.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that provides tools to interact with the LeetCode API, enabling problem fetching, code template generation, and solution execution/submission.
    7
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    A complete, all-in-one MCP server for Codeforces, enabling AI assistants to access user profiles, compare users, search problems, get practice recommendations, and more.
    8
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for searching and retrieving Korean contest information. Provides tools to search contests by keyword/category, get details, list categories, and find deadlines.
    -