Baekjoon(BOJ) MCP Server
Search solved.ac problems by difficulty, tags, and keywords to find the right challenges. Check user ratings, tiers, and solved counts to track progress. Convert natural language into precise filters for faster discovery.
Ask AI about Baekjoon(BOJ) MCP Server
Powered by Claude ยท Grounded in docs
I know everything about Baekjoon(BOJ) MCP Server. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
MCP Server for BOJ
BOJ๋ฅผ ์ํ Model Context Protocol (MCP) ์๋ฒ์ ๋๋ค.
AI ์ด์์คํดํธ๊ฐ solved.ac์ ์ฌ์ฉ์ ์ ๋ณด์ ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋๋ก ํด์ค๋๋ค.
pytest status
solved.ac ์ฌ์ดํธ์ MCP ์ ์ฅ์
ํน์ง (Features)
- Solved.ac API์ ๋น ๋ฅด๊ฒ ์ ๊ทผ
- ์ฌ์ฉ์ ํ๋กํ ์กฐํ (๋ ์ดํ , ํฐ์ด, ํผ ๋ฌธ์ ์)
- ๋์ด๋, ํ๊ทธ, ํค์๋๋ก ๋ฌธ์ ๊ฒ์
์ค์น (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
๊ด๋ จ ํ๋ก์ ํธ (Related Projects)
- Model Context Protocol (MCP) โ MCP ๋ช ์ธ ๋ฐ ๋ฌธ์
- Smithery.ai โ MCP ์๋ฒ ๋น๋ ๋ฐ ๋ฐฐํฌ ๋๊ตฌ
- Solved.ac โ ๋ฐฑ์ค(BOJ) ๋ฌธ์ ์์นด์ด๋ธ
๊ฐ์ฌ ์ธ์ฌ (Acknowledgements)
์ด ํ๋ก์ ํธ๋ solved.ac API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
