AlgoKit mcp
与AI代理一起学习算法MCP工具包(白俊,程序员支持)
着陆页 | ** | **
通过提供基于AI的提示生成、问题分析和复习模板,帮助您高效学习算法。
主要功能
- 🔍 搜索问题:通过难度、标签、关键字搜索问题
- 💡 分步提示:生成Level 1~3级别的自定义提示
- 📊 问题分析:算法分类、难度分析、学习指南
- 📝 复习模板:自动生成的标记复习文档
- 🧪 代码分析:分析和改进提交代码的时间/空间复杂度
安装
安装方法因平台而异。Claude Code支持Plugin市场,Codex和Gemini需要手动设置。
克劳德代码(插件市场)
注册市场并安装插件:
/plugin marketplace add itsme-shawn/AlgoKit-mcp/plugin install algokit-mcp@algokit-plugin/reload-plugins使用此命令 同时安装MCP服务器和6个Skills可以。
安装自然语言
您可以在Claude Code中直接输入以下句子:
algokit-mcp 플러그인을 마켓플레이스에서 설치해줘单独安装MCP(无技能)
claude mcp add --scope user algokit -- npx -y algokit-mcp@latest______________________________________________________________________
法典
请在Codex中输入以下句子:
이 지시사항 대로 설치해줘 : https://raw.githubusercontent.com/itsme-shawn/AlgoKit-mcp/refs/heads/master/.codex/INSTALL.md______________________________________________________________________
双子星命令行工具
请向Gemini CLI输入以下句子:
이 지시사항 대로 설치해줘 : https://raw.githubusercontent.com/itsme-shawn/AlgoKit-mcp/refs/heads/master/.gemini/INSTALL.md______________________________________________________________________
手动安装(所有平台)
MCP 설정 직접 편집하기
克劳德代码 (~/.claude.json):
{
"mcpServers": {
"algokit": {
"command": "npx",
"args": ["-y", "algokit-mcp@latest"]
}
}
}法典 (~/.codex/config.toml):
[mcp.servers.algokit]
command = "npx"
args = ["-y", "algokit-mcp@latest"]双子星命令行工具 (~/.gemini/settings.json):
{
"mcpServers": {
"algokit": {
"command": "npx",
"args": ["-y", "algokit-mcp@latest"]
}
}
}技能
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。 技能(/algo:*)使您的意图更加明确,从而获得准确的响应。Skills 상세 설명
algo:search -搜索问题
通过难度、标签和关键字搜索白俊/程序员问题。平台关键字(백준, 프로그래머스)则反问是什么平台。
- BOJ:Tier(青铜~红宝石),TAG(
dp,graph等),支持排序选项 - 程序员:级别(1~5),支持按人气排序/按最新排序
- 搜索后
/algo:hint,/algo:review等后续技能联系提案
algo:fetch -滚动问题正文
获取问题全文(说明、I/O格式、示例、限制条件)。输入URL时自动识别平台,输入数字时确认平台后进行。
- 工程量清单:
acmicpc.net滚动(包括时间/内存限制) - 程序员:
school.programmers.co.kr滚动(包括限制) - 缓存30天,重试最多2次
algo:hint -逐步提示
分析问题并根据您的情况 只有一个级别的提示 提供。不一次性显示所有提示,而是通过对话逐步引导。
Level时间内容 |-------|------|------| Level 1第一次堵塞时没有算法名,只暗示结构特征 Level 2请求“告诉我更多”算法类型+核心想法 Level 3要求“告诉我答案”分阶段战略+议事代码级别说明
algo:blank -生成空格练习代码
完成的池代码的核心逻辑 ____创建遮蔽的练习文件。不修改原始文件。 _blank 创建新的后缀文件。
- 空格对象:点燃式、初始化数据结构、核心条件语句、访问处理等
// TODO N: 설명介绍应该用注释填充什么(答案未提供)- import、类签名和main块保持不变
algo:code-review -代码分析/反馈
池分析代码的准确性、时间/空间复杂度,并提出改进建议。
| 分析类型 | 内容 |
|---|---|
full (基本) | 准确性+复杂度+增强功能+风格 |
debug 错误原因、逻辑错误、边缘案例 | |
hint | 核心概念、方法方向 |
review 风格、可读性、命名、结构 |
algo:review -生成复习文档
完成解答后整理学习内容的Markdown复习文档(_REVIEW.md)。MCP服务器提供模板和指南提示,AI与用户对话并按部分创建。
- 包括:问题摘要、事件流程、核心思想、解决方案代码+逻辑描述、数据流跟踪、错误点、相关问题
- 基于用户代码的定制分析
______________________________________________________________________
使用方案
所有结果都是通过实际调用AlgoKit MCP服务器获得的数据。
关于一个问题 从探索到复习 全程支持。
步骤功能Skill |:---:|------|-------| |1|搜索问题| algo:search | |2|问题摘要| algo:fetch | 第3步提示 algo:hint | |4|空格提示| algo:blank | |5|代码评论| algo:code-review | 复习整理 algo:review |
______________________________________________________________________
1.搜索问题
用户:
BOJ에서 실버상위~골드 난이도 DP 문제 찾아줘使用Skill时,
/algo:search BOJ에서 실버상위~골드 난이도 DP 문제 찾아줘AI代理:
⏺ 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.问题摘要
用户:
BOJ 11726 문제 내용 요약해줘使用Skill时,
/algo:fetch 11726AI代理:
⏺ 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.分阶段提示
用户:
이 문제, 접근에 대한 힌트를 줘使用Skill时,
/algo:hint 11726AI代理:
⏺ 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生成符合问题的自然语言分析。
______________________________________________________________________
获得更多提示
用户:
잘 안 풀리네. 힌트를 좀 더 줘AI代理:
⏺ 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)만 알면 됩니다.
---
더 상세한 풀이 가이드가 필요하면 말씀해 주세요.根据您的情况 一次只需要一个等级 提供:
Level时间点提供内容 |-------|------|----------| Level 1第一次尝试时只暗示结构特征,没有算法名 |Level 2|如果要求“告诉我更多”,请说明算法类型+核心想法| |Level 3|如果要求“告诉我答案”,请说明分步策略+代码级别|
______________________________________________________________________
4.空格提示
用户:
정답 코드에 빈 칸을 뚫어서 힌트를 줘
11726_blank.py 에 작성해줘使用Skill时,
/algo:blank @11726.pyAI代理:
⏺ 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.代码评论
用户:
@BOJ/10000~/11726/11726.py
내 풀이를 보고 리뷰해줘使用Skill时,
/algo:code-review @11726.pyAI代理:
⏺ 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.复习整理
用户:
복습 문서 만들어줘使用Skill时,
/algo:review 11726AI代理:
⏺ 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 (내 코드)**
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 (공간 최적화)**
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 | 代码分析 |
问答
MCP가 뭔가요?
模型上下文协议(MCP)是允许AI代理调用外部工具的标准协议。AlgoKit 本地MCP服务器以进行操作。 npx如果安装为,则在您的本地计算机上运行,不需要单独的远程服务器或帐户。
사용자 → AI 에이전트 → AlgoKit MCP 서버 (로컬) → solved.ac API / 웹 스크래핑
↓
자연어 응답 생성用户无需直接处理MCP,只需向AI请求自然语言即可。
API 키가 필요한가요?
不。AlgoKit是一款MCP服务器,充分利用您使用的AI代理(Claude Code、Codex、Gemini等),无需单独的API密钥或登录即可使用。
어떤 AI 에이전트를 지원하나요?
| 代理 | 支持方式 |
|---|---|
| 克劳德代码 Plugin Marketplace(自动安装) | |
| 法典 | 提供安装脚本 |
| 双子星命令行工具 | 提供安装脚本 |
| 其他MCP兼容代理 | 可手动设置 |
Skill과 MCP 도구의 차이가 뭔가요?
- MCP工具:AlgoKit服务器提供的单个功能单元(例如:
search_problems_boj,analyze_problem_boj) - 技能 (
/algo:*:将多个MCP工具组合成一个工作流(例如:/algo:hint内部analyze_problem+fetch_problem_content组合)
Skill让AI自动选择和组合最佳工具。用自然语言提问也可以得到相同的结果,但如果您明确说明Skill,则会更准确地传达您的意图。
프로그래머스도 지원하나요?
好的。也支持程序员。
오프라인에서도 사용할 수 있나요?
不。AlgoKit需要互联网连接,因为它可以从solved.ac API和BOJ/程序员网站实时获取数据。
ChatGPT나 Claude에 직접 물어보는 것과 뭐가 다른가요?
因为直接向AI提问算法问题依赖于学习数据,所以有时问题信息会造成不准确或不存在的问题。即使使用Web搜索,也经常从博客等非官方来源获取数据,因此无法保证准确度。
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)技术堆栈
- 运行时:Node.js(>=18.0.0)
- 语言:TypeScript 5.9
- MCP-SDK:@modelcontextprotocol/sdk v1.26.0
- 验证:佐德
- 测试:Vitest
许可证
麻省理工学院
______________________________________________________________________
