Skip to main content
Glama

MCP Server for BOJ

BOJ를 위한 Model Context Protocol (MCP) 서버입니다.

AI 어시스턴트가 solved.ac의 사용자 정보와 문제 데이터를 조회할 수 있도록 해줍니다.


pytest status

FastMCP CI Tests


solved.ac 사이트의 MCP 저장소


특징 (Features)

  • Solved.ac API에 빠르게 접근

  • 사용자 프로필 조회 (레이팅, 티어, 푼 문제 수)

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


Related MCP server: Chess MCP Server

설치 (Installation)

Smithery를 통한 설치

Smithery를 이용해 Claude Desktop 등에 mcp-server를 자동 설치할 수 있습니다.

npx -y @smithery/cli install @Junwoo-Seo-1998/boj-mcp-server --client claude

사용법 (Usage)

라이브러리로 사용하기

server.py의 핵심 함수들을 직접 호출하여 파이썬 코드 내에서 사용할 수 있습니다.

import asyncio
from solvedac_server.server import create_server, lifespan
# 테스트용으로 노출된 코어 함수 임포트
from solvedac_server.server import (
    get_user_info_for_test as get_user_info,
    search_problems_for_test as search_problems,
    search_workflow_prompt_for_test,
)

async def main():
    app = create_server()
    async with lifespan(app):
        # 1. 유저 정보 조회
        user = await get_user_info("kyungbaee")
        print("USER:", user.model_dump())

        # 2. 문제 검색 (limit 파라미터 없이 기본 50개)
        res_all = await search_problems(query="tier:s5..g5 tag:dp", page=1)
        print("SEARCH COUNT (Full):", res_all.count)
        
        # 3. 프롬프트 메시지 생성
        msgs = search_workflow_prompt_for_test(
            natural_request="실버~골드 사이 DP 5문제, 그리디 제외",
            page=1,
        )
        print("=== Prompt messages ===")
        for m in msgs:
            print(f"ROLE: {m.role}\n{m.content.text}\n")

if __name__ == "__main__":
    asyncio.run(main())

사용 가능한 도구 (Available Tools)

도구 이름 (Tool Name)

설명 (Description)

파라미터 (Parameters)

solvedac_get_user_info

solved.ac 사용자의 레이팅/티어/푼 문제 수 조회

handle (string, required): 사용자 핸들

solvedac_search_problems

난이도/태그/키워드 쿼리로 문제 검색

query (string, required): 검색 쿼리 (예: tier:g5..p5 tag:dfs)page (int, default 1): 페이지(1부터)limit (int, default 5): 결과를 상위 N개로 제한 (1~20)


사용 가능한 리소스 (Available Resources)

리소스 경로

설명

solvedac://users/{handle}

특정 solved.ac 사용자의 기본 정보(레이팅, 티어, 푼 문제 수)를 조회

solvedac://problems/search/{stub}

난이도, 태그, 키워드 등으로 solved.ac 문제 검색쿼리 파라미터: query (string), page (int)(경로의 {stub} 값은 무시됩니다.)


사용 가능한 프롬프트 (Available Prompts)

프롬프트 이름 (Prompt Name)

설명 (Description)

파라미터 (Parameters)

solvedac.search-workflow

자연어 조건을 solved.ac 검색 쿼리로 변환하고, 해당 쿼리로 문제 후보를 검토

natural_request (string): 예: "실버~골드 사이 DP 5문제"page (int, default 1): 검색 페이지


로컬 개발 (Local Development)

저장소를 클론하고 의존성을 설치합니다.

git clone https://github.com/Junwoo-Seo-1998/boj-mcp-server.git
cd boj-mcp-server

# (가상 환경 사용 권장)
pip install -e .

개발 서버 실행

smithery dev

Smithery 플레이그라운드 실행

smithery playground


감사 인사 (Acknowledgements)

이 프로젝트는 solved.ac API를 기반으로 합니다.

Related MCP Connectors

Related MCP Servers