keris_edumcp
No description available
Ask AI about keris_edumcp
Powered by Claude ยท Grounded in docs
I know everything about keris_edumcp. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
EDU API MCP Server
ํ์ฅ ๊ฐ๋ฅํ ๊ต์ก API ํตํฉ MCP ์๋ฒ - TOON ํ์ผ๋ง ๋ฃ์ผ๋ฉด ์๋ ํ์ฅ
๐ ์ฃผ์ ํน์ง
- ์ ๋ก ์ฝ๋ ํ์ฅ:
.toonํ์ผ๋งproviders/ํด๋์ ๋ฃ์ผ๋ฉด ์๋์ผ๋ก API๊ฐ MCP Tool๋ก ๋ฑ๋ก๋ฉ๋๋ค - ์๋ ์ค์บ: ์๋ฒ ์์ ์ provider ํด๋๋ฅผ ์๋์ผ๋ก ์ค์บํ์ฌ ๋ชจ๋ TOON ํ์ผ ๋ก๋
- ํ์ ์์ ์ฑ: 100% TypeScript๋ก ์์ฑ๋์ด ํ์ ์์ ์ฑ ๋ณด์ฅ
- ์์ถ ํจ์จ: TOON ํฌ๋งท์ ์ฌ์ฉํ์ฌ API ์คํ์ 85% ์์ถ (JSON ๋๋น)
- ํ๋ฌ๊ทธ์ธ ์ํคํ ์ฒ: ๊ฐ API๋ ๋ ๋ฆฝ์ ์ธ Provider๋ก ๋์
- ๐ ์น ํตํฉ ์ง์: HTTP ๋ฒ์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ (NEW!)
๐ ํฌํจ๋ Provider
1. ํ๊ต์๋ฆฌ๋ฏธ API (school-alrimi)
- ์ ๊ณต๊ธฐ๊ด: ๊ต์ก๋ถ ํ๊ต์๋ฆฌ๋ฏธ
- ์๋ํฌ์ธํธ: 12๊ฐ
- ํ๊ต ๊ธฐ๋ณธ์ ๋ณด
- ํ์/ํ๊ธ ํต๊ณ
- ๊ต์ ์ ๋ณด
- ํ๊ตํญ๋ ฅ ์๋ฐฉ ์ค์ ๋ฑ
- MCP Tools: 17๊ฐ
2. RISS API (riss)
- ์ ๊ณต๊ธฐ๊ด: ํ๊ตญ๊ต์กํ์ ์ ๋ณด์
- ์๋ํฌ์ธํธ: 1๊ฐ (ํ์๋ ผ๋ฌธ ๊ฒ์)
- MCP Tools: 1๊ฐ
๐ฆ ์ค์น
ํ์ ์๊ตฌ์ฌํญ
- Node.js >= 20.0.0
- npm ๋๋ yarn
์ค์น ๋ฐฉ๋ฒ
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/Won-ahamada/KERIS_EDUmcp.git
cd KERIS_EDUmcp
# 2. ์์กด์ฑ ์ค์น
npm install
# 3. ๋น๋
npm run build
๐ฏ ์ฌ์ฉ ๋ฐฉ๋ฒ
1. ๊ธฐ๋ณธ ์คํ
npm start
2. Claude Desktop์์ ์ฌ์ฉ
Claude Desktop์ ์ค์ ํ์ผ(claude_desktop_config.json)์ ๋ค์์ ์ถ๊ฐ:
{
"mcpServers": {
"edu-api": {
"command": "node",
"args": [
"/absolute/path/to/KERIS_EDUmcp/dist/index.js"
]
}
}
}
Windows ์์:
{
"mcpServers": {
"edu-api": {
"command": "node",
"args": [
"C:\\Users\\YourName\\KERIS_EDUmcp\\dist\\index.js"
]
}
}
}
macOS/Linux ์์:
{
"mcpServers": {
"edu-api": {
"command": "node",
"args": [
"/home/yourname/KERIS_EDUmcp/dist/index.js"
]
}
}
}
3. Claude Desktop ์ฌ์์
์ค์ ๋ณ๊ฒฝ ํ Claude Desktop์ ์ฌ์์ํ๋ฉด MCP Tools๊ฐ ์๋์ผ๋ก ๋ก๋๋ฉ๋๋ค.
๐ HTTP ๋ฒ์ (์น ์ ํ๋ฆฌ์ผ์ด์ ํตํฉ)
NEW! MCP ์๋ฒ๋ฅผ HTTP๋ก ์คํํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ (KERIS_AI_Chatbot ๋ฑ)์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
HTTP ์๋ฒ ์คํ
# ๊ฐ๋ฐ ๋ชจ๋ (watch)
npm run dev:http
# ํ๋ก๋์
๋ชจ๋
npm run start:http
์๋ฒ๊ฐ http://localhost:3000์์ ์์๋ฉ๋๋ค.
Endpoints
- Health Check:
GET /health - MCP API:
POST /mcp(JSON-RPC 2.0)
์น ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉ
// ๋๊ตฌ ๋ชฉ๋ก ์กฐํ
const response = await fetch('http://localhost:3000/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'tools/list',
params: {}
})
});
const { result } = await response.json();
console.log('์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ:', result.tools);
์๊ฒฉ ๋ฐฐํฌ (๋ฌด๋ฃ)
Fly.io ๋ฐฐํฌ
fly deploy --dockerfile Dockerfile.http
Railway ๋ฐฐํฌ
์น์ฌ์ดํธ์์ GitHub ์ ์ฅ์ ์ฐ๊ฒฐ ํ ๋ฐฐํฌ
์์ธ ๊ฐ์ด๋
์์ ํ HTTP ํตํฉ ๊ฐ์ด๋: HTTP_DEPLOYMENT_GUIDE.md
- KERIS_AI_Chatbot ํตํฉ ์์
- Next.js API Route ์์
- Fly.io/Railway ๋ฐฐํฌ ๊ฐ์ด๋
- ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋
โ ์ Provider ์ถ๊ฐํ๊ธฐ
๋จ๊ณ 1: TOON ํ์ผ ์์ฑ
providers/ ํด๋์ ์ .toon ํ์ผ์ ์์ฑํฉ๋๋ค.
# my-api.toon
## Provider ์ ๋ณด
provider{id,name,version,baseUrl,method,dataFormat}:
my-api,My API,1.0.0,https://api.example.com,GET,JSON
authentication{type,parameterName,location}:
apiKey,api_key,query
## ๊ณตํต ํ๋ผ๋ฏธํฐ
commonParameters.required[1]{name,type,description}:
api_key,string,API ์ธ์ฆํค
## ์๋ํฌ์ธํธ
endpoints[2]{id,apiType,name,description}:
get-data,01,๋ฐ์ดํฐ์กฐํ,๋ฐ์ดํฐ๋ฅผ์กฐํํฉ๋๋ค
get-stats,02,ํต๊ณ์กฐํ,ํต๊ณ๋ฅผ์กฐํํฉ๋๋ค
๋จ๊ณ 2: ์๋ฒ ์ฌ์์
npm run build
npm start
๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค! ์ API๊ฐ ์๋์ผ๋ก MCP Tool๋ก ๋ฑ๋ก๋ฉ๋๋ค.
๐๏ธ ํ๋ก์ ํธ ๊ตฌ์กฐ
KERIS_EDUmcp/
โโโ src/
โ โโโ core/
โ โ โโโ provider-loader.ts # TOON ํ์ผ ์๋ ์ค์บ ๋ฐ ๋ก๋
โ โ โโโ provider-factory.ts # Provider ์ธ์คํด์ค ์์ฑ
โ โ โโโ tool-registry.ts # MCP Tool ์๋ ๋ฑ๋ก
โ โ โโโ mcp-server.ts # MCP ์๋ฒ ๋ฉ์ธ ๋ก์ง
โ โโโ lib/
โ โ โโโ toon-parser.ts # TOON ํ์
โ โโโ types/
โ โ โโโ index.ts # ํ์
์ ์
โ โโโ index.ts # ์ง์
์
โโโ providers/ # ๐ฅ ์ฌ๊ธฐ์ .toon ํ์ผ ์ถ๊ฐ
โ โโโ school-alrimi.toon
โ โโโ riss.toon
โโโ docs/ # ๋ฌธ์
โ โโโ API_์ฐ๊ณ_ํ์ฅ_๊ณํ.md
โ โโโ MCP_์๋ฒ_ํ์ฅ_๊ณํ.md
โ โโโ toon-format-guide.md
โ โโโ ...
โโโ examples/ # ์์ ํ์ผ
โ โโโ school-alrimi-api-spec.toon
โ โโโ riss-api-spec.toon
โ โโโ ...
โโโ dist/ # ๋น๋ ๊ฒฐ๊ณผ๋ฌผ
โโโ package.json
โโโ tsconfig.json
โโโ smithery.json
โโโ README.md
โโโ CHANGELOG.md
โโโ DEPLOYMENT_GUIDE.md
โโโ LICENSE
๐ TOON ํฌ๋งท ๊ฐ์ด๋
TOON (Token-Oriented Object Notation)์ ํ ์ด๋ธ ํ์ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ์์ถ ํฌ๋งท์ ๋๋ค.
๊ธฐ๋ณธ ๋ฌธ๋ฒ
# ์ฃผ์
tableName[rowCount]{field1,field2,field3}:
value1,value2,value3
value4,value5,value6
์ค์ ์์
## Provider ์ ๋ณด
provider{id,name,version,baseUrl}:
school-api,ํ๊ตAPI,1.0.0,https://api.school.kr
## ์๋ํฌ์ธํธ ์ ์
endpoints[3]{id,apiType,name,description}:
school-info,01,ํ๊ต์ ๋ณด,ํ๊ต๊ธฐ๋ณธ์ ๋ณด์กฐํ
student-count,02,ํ์์,ํ์์ํต๊ณ
teacher-info,03,๊ต์์ ๋ณด,๊ต์ํํฉ์กฐํ
์ค์ฒฉ ๊ฒฝ๋ก ์ง์
endpoints.basic[1]{id,name}:
school-info,ํ๊ต๊ธฐ๋ณธ์ ๋ณด
endpoints.student[2]{id,name}:
student-count,ํ์์
student-transfer,์ ์ถ์
ํ์
์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด ํ์ฑ๋ฉ๋๋ค:
{
"endpoints": {
"basic": [
{"id": "school-info", "name": "ํ๊ต๊ธฐ๋ณธ์ ๋ณด"}
],
"student": [
{"id": "student-count", "name": "ํ์์"},
{"id": "student-transfer", "name": "์ ์ถ์
ํ์"}
]
}
}
๐ ๏ธ ๊ฐ๋ฐ
๊ฐ๋ฐ ๋ชจ๋ ์คํ
npm run dev
๋น๋
npm run build
Provider ๋ชฉ๋ก ์กฐํ
npm run providers:list
Provider ๊ฒ์ฆ
npm run providers:validate
๐ข Smithery ๋ฐฐํฌ
Smithery๋ MCP ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ๊ณต์ ํ ์ ์๋ ํ๋ซํผ์ ๋๋ค.
1. smithery.json ์์ฑ
ํ๋ก์ ํธ ๋ฃจํธ์ smithery.json ํ์ผ ์์ฑ:
{
"name": "edu-api-mcp-server",
"version": "1.0.0",
"description": "ํ์ฅ ๊ฐ๋ฅํ ๊ต์ก API ํตํฉ MCP ์๋ฒ",
"author": "Your Name",
"homepage": "https://github.com/Won-ahamada/KERIS_EDUmcp",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/Won-ahamada/KERIS_EDUmcp.git"
},
"runtime": "node",
"entrypoint": "dist/index.js",
"buildCommand": "npm run build",
"installCommand": "npm install"
}
2. Smithery์ ๋ฐฐํฌ
# Smithery CLI ์ค์น (์ต์ด 1ํ)
npm install -g @smithery/cli
# ๋ก๊ทธ์ธ
smithery login
# ๋ฐฐํฌ
smithery publish
3. ์ฌ์ฉ์๊ฐ ์ค์นํ๋ ๋ฐฉ๋ฒ
๋ฐฐํฌ ํ ๋ค๋ฅธ ์ฌ์ฉ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์น:
smithery install edu-api-mcp-server
๋๋ Claude Desktop ์ค์ ์์:
{
"mcpServers": {
"edu-api": {
"command": "smithery",
"args": ["run", "edu-api-mcp-server"]
}
}
}
๐ ํต๊ณ
- ์ด Provider: 2๊ฐ
- ์ด Endpoint: 13๊ฐ
- ์ด MCP Tools: 18๊ฐ
- TOON ์์ถ๋ฅ : 85% (JSON ๋๋น)
- ์ฝ๋ ๋ผ์ธ ์: ~1,500 LOC
๐ ํ๊ฒฝ ๋ณ์
API ํค๋ ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค:
# .env ํ์ผ ์์ฑ
SCHOOL_ALRIMI_API_KEY=your_api_key_here
RISS_API_KEY=your_riss_api_key_here
Claude Desktop ์ค์ ์์:
{
"mcpServers": {
"edu-api": {
"command": "node",
"args": ["C:\\path\\to\\dist\\index.js"],
"env": {
"SCHOOL_ALRIMI_API_KEY": "your_key_here",
"RISS_API_KEY": "your_key_here"
}
}
}
}
๐ค ๊ธฐ์ฌํ๊ธฐ
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
๐ ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
๐ ๊ฐ์ฌ์ ๊ธ
- Model Context Protocol - MCP ํ๋ ์์ํฌ
- ๊ต์ก๋ถ ํ๊ต์๋ฆฌ๋ฏธ - ํ๊ต ์ ๋ณด API
- ํ๊ตญ๊ต์กํ์ ์ ๋ณด์ - ํ์๋ ผ๋ฌธ ๊ฒ์ API
๐ฎ ๋ฌธ์
ํ๋ก์ ํธ ๊ด๋ จ ๋ฌธ์์ฌํญ์ GitHub Issues์ ๋ฑ๋กํด์ฃผ์ธ์.
Made with โค๏ธ for Korean Education Data
