chaeya/hamonikr-community-mcp
If you are the rightful owner of hamonikr-community-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The HamoniKR Community MCP Server facilitates AI programs to manage posts within the HamoniKR community efficiently.
HamoniKR Community MCP Server
ํ๋ชจ๋์นด ์ปค๋ฎค๋ํฐ๋ฅผ ์ํ MCP (Model Context Protocol) ์๋ฒ์ ๋๋ค. ์ด ์๋ฒ๋ฅผ ํตํด ๋ค๋ฅธ AI ํ๋ก๊ทธ๋จ๋ค์ด ํ๋ชจ๋์นด ์ปค๋ฎค๋ํฐ์ ๊ฒ์๊ธ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ๋ก๊ทธ์ธ ๊ด๋ฆฌ: ์๋ ๋ก๊ทธ์ธ ๋ฐ ์ธ์ ๊ด๋ฆฌ
- ๊ฒ์๊ธ ์์ฑ: ๊ณต์ง์ฌํญ ๋ฐ Q&A ๊ฒ์ํ์ ๊ธ ์์ฑ
- ๊ฒ์๊ธ ์กฐํ: ํน์ ๊ฒ์๊ธ์ ๋ด์ฉ, ์์ฑ์, ์์ฑ์ผ ๋ฑ ์กฐํ
- ๋๊ธ ์์ฑ: ํน์ ๊ฒ์๊ธ์ ๋๊ธ ์ถ๊ฐ
- ๊ฒ์๊ธ ์์ : ๊ธฐ์กด ๊ฒ์๊ธ ์์
- ๊ฒ์๊ธ ์ญ์ : ๊ฒ์๊ธ ์ญ์
- ์ํ ํ์ธ: ๋ก๊ทธ์ธ ์ํ ๋ฐ ์ธ์ ์ ๋ณด ์กฐํ
์ค์น ๋ฐ ์ค์
git clone https://github.com/chaeya/hamonikr-community-mcp.git
cd hamonikr-community-mcp
# 1. ์ค์น (Playwright ๋ธ๋ผ์ฐ์ ํฌํจ ์๋ ์ค์น)
npm install
# 2. ๋น๋
npm run build
# 3. ์์ (๊ธฐ๋ณธ์ ์ผ๋ก SSE ์๋ฒ)
npm start
์ฌ์ฉ์ ์๊ฒฉ์ฆ๋ช ์ค์
๋ณด์์ ์ํด ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค:
export HAMONIKR_USERNAME="your-email@example.com"
export HAMONIKR_PASSWORD="your-password"
๋๋ .env
ํ์ผ์ ์์ฑ:
echo "HAMONIKR_USERNAME=your-email@example.com" > .env
echo "HAMONIKR_PASSWORD=your-password" >> .env
chmod 600 .env
โ ๏ธ ์ค์: config/default.json
์ ์ง์ ์๊ฒฉ์ฆ๋ช
์ ์
๋ ฅํ๋ ๊ฒ์ ๋ณด์์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
์์ธํ ์ค์ ๋ฐฉ๋ฒ์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฌ์ฉ ๋ฐฉ๋ฒ
MCP ํด๋ผ์ด์ธํธ ์ค์
์ด ์๋ฒ๋ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค:
- stdio ๋ฐฉ์: ๋ก์ปฌ์์ ์ง์ ์คํ (Claude Code, Cursor ๋ฑ)
- SSE ๋ฐฉ์: ์๊ฒฉ ์๋ฒ๋ก ์คํ (์น ํด๋ผ์ด์ธํธ ๋ฑ)
1. stdio ๋ฐฉ์ (๋ก์ปฌ ์ฌ์ฉ)
Claude Code์์ ์ค์ :
-
Claude Code ์ค์ ํ์ผ ์ด๊ธฐ:
# macOS ~/.claude/claude_code_config.json # Windows %USERPROFILE%\.claude\claude_code_config.json # Linux ~/.claude/claude_code_config.json
-
๋ค์ ์ค์ ์ถ๊ฐ:
{ "mcpServers": { "hamonikr-community": { "command": "node", "args": ["/full/path/to/hamonikr-community-mcp/dist/index.js"], "env": { "HAMONIKR_USERNAME": "your-email@example.com", "HAMONIKR_PASSWORD": "your-password" } } } }
Cursor์์ ์ค์ :
-
Cursor ์ค์ ํ์ผ ์์น:
# macOS ~/Library/Application Support/Cursor/User/mcp_servers.json # Windows %APPDATA%\Cursor\User\mcp_servers.json # Linux ~/.config/Cursor/User/mcp_servers.json
-
์ค์ ๋ด์ฉ:
{ "mcpServers": { "hamonikr-community": { "command": "node", "args": ["/full/path/to/hamonikr-community-mcp/dist/index.js"], "env": { "HAMONIKR_USERNAME": "your-email@example.com", "HAMONIKR_PASSWORD": "your-password" } } } }
Continue ๋ฑ ๊ธฐํ MCP ์ง์ ๋๊ตฌ:
๋๋ถ๋ถ์ MCP ํด๋ผ์ด์ธํธ๋ ๋น์ทํ ํ์์ ์ฌ์ฉํฉ๋๋ค:
{
"mcpServers": {
"hamonikr-community": {
"command": "node",
"args": ["/absolute/path/to/hamonikr-community-mcp/dist/index.js"],
"env": {
"HAMONIKR_USERNAME": "your-email@example.com",
"HAMONIKR_PASSWORD": "your-password"
}
}
}
}
์ฃผ์์ฌํญ:
- ์ ๋ ๊ฒฝ๋ก ์ฌ์ฉ ํ์ (์:
/home/username/hamonikr-community-mcp/dist/index.js
) - ๋จผ์
npm install && npm run build
์คํ ํ์ - ํ๊ฒฝ ๋ณ์๋ก ์๊ฒฉ์ฆ๋ช ์ค์ (๋ณด์์ ๊ถ์ฅ)
2. SSE ๋ฐฉ์ (์๊ฒฉ ์ฌ์ฉ)
์๋ฒ ์์:
# ๊ธฐ๋ณธ ์์ (SSE ๋ชจ๋)
npm start
# ๊ฐ๋ฐ ๋ชจ๋
npm run dev
# stdio ๋ชจ๋๋ก ์์ํ๋ ค๋ฉด
npm run start:stdio
ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ:
- SSE ์๋ํฌ์ธํธ:
http://localhost:5678/sse
- Health Check:
http://localhost:5678/health
ํ๊ฒฝ ๋ณ์ ์ค์ :
export PORT=5678
export CORS_ORIGIN="*" # ๋๋ ํน์ ๋๋ฉ์ธ
export HAMONIKR_USERNAME="your-email@example.com"
export HAMONIKR_PASSWORD="your-password"
์น ํด๋ผ์ด์ธํธ ํ
์คํธ:
๋ธ๋ผ์ฐ์ ์์ test-sse-client.html
์ ์ด์ด์ SSE ์ฐ๊ฒฐ์ ํ
์คํธํ ์ ์์ต๋๋ค.
๊ธฐํ MCP ํด๋ผ์ด์ธํธ์์ SSE ์ฌ์ฉ:
// JavaScript ์์
const eventSource = new EventSource('http://localhost:5678/sse');
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('MCP Response:', data);
};
์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ (Tools)
1. hamonikr_login
ํ๋ชจ๋์นด ์ปค๋ฎค๋ํฐ์ ๋ก๊ทธ์ธํฉ๋๋ค.
๋งค๊ฐ๋ณ์: ์์
์์ :
{
"name": "hamonikr_login",
"arguments": {}
}
2. hamonikr_create_post
์ ๊ฒ์๊ธ์ ์์ฑํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
title
: ๊ฒ์๊ธ ์ ๋ชฉ (๋ฌธ์์ด, ํ์)content
: ๊ฒ์๊ธ ๋ด์ฉ (๋ฌธ์์ด, ํ์)board
: ๊ฒ์ํ ํ์ (๋ฌธ์์ด, ํ์) -notice
๋๋qna
์์ :
{
"name": "hamonikr_create_post",
"arguments": {
"title": "ํ๋ชจ๋์นด ์ฌ์ฉ ํ",
"content": "์ ์ฉํ ํ๋ชจ๋์นด ์ฌ์ฉ ํ์ ๊ณต์ ํฉ๋๋ค.",
"board": "qna"
}
}
3. hamonikr_add_comment
ํน์ ๊ฒ์๊ธ์ ๋๊ธ์ ์ถ๊ฐํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
postUrl
: ๋๊ธ์ ๋ฌ ๊ฒ์๊ธ์ URL (๋ฌธ์์ด, ํ์)content
: ๋๊ธ ๋ด์ฉ (๋ฌธ์์ด, ํ์)
์์ :
{
"name": "hamonikr_add_comment",
"arguments": {
"postUrl": "https://hamonikr.org/hamoni_board/144520",
"content": "์ ์ฉํ ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค!"
}
}
4. hamonikr_edit_post
๊ธฐ์กด ๊ฒ์๊ธ์ ์์ ํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
postUrl
: ์์ ํ ๊ฒ์๊ธ์ URL (๋ฌธ์์ด, ํ์)title
: ์๋ก์ด ์ ๋ชฉ (๋ฌธ์์ด, ์ ํ์ฌํญ)content
: ์๋ก์ด ๋ด์ฉ (๋ฌธ์์ด, ์ ํ์ฌํญ)
์์ :
{
"name": "hamonikr_edit_post",
"arguments": {
"postUrl": "https://hamonikr.org/hamoni_board/144520",
"title": "์์ ๋ ์ ๋ชฉ",
"content": "์์ ๋ ๋ด์ฉ์
๋๋ค."
}
}
5. hamonikr_get_post
ํน์ ๊ฒ์๊ธ์ ๋ด์ฉ์ ์กฐํํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
postUrl
: ์กฐํํ ๊ฒ์๊ธ์ URL (๋ฌธ์์ด, ํ์)
์์ :
{
"name": "hamonikr_get_post",
"arguments": {
"postUrl": "https://hamonikr.org/hamoni_board/144520"
}
}
์๋ต ์์:
{
"success": true,
"message": "๊ฒ์๊ธ ๋ด์ฉ์ ์ฑ๊ณต์ ์ผ๋ก ์กฐํํ์ต๋๋ค.",
"post": {
"title": "์๋์ฐ์ ์์ฑ์
๋ ฅ ๊ธฐ๋ฅ ์ฒ๋ฆ ํ๋ชจ๋์นด์์๋ ์์ฑ์
๋ ฅ์ด ๊ฐ๋ฅํ ๊น์?",
"content": "์๋์์๋ ์ปจํธ๋กค + H ๋ฅผ ๋๋ฅด๋ฉด ์ด๋ ๊ฒ ์์ฑ ์
๋ ฅ ์ฐฝ์ด ๋ํ๋๊ณ ์์ฑ ์
๋ ฅ์ด ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค. ํ๋ชจ๋์นด์์๋ ์์ฑ์
๋ ฅ์ด ๊ฐ๋ฅํ ๊น์?",
"author": "์ฅํฌ์ ",
"date": "2025.06.25 22:39",
"views": 259,
"comments": 3,
"url": "https://hamonikr.org/hamoni_board/144520"
}
}
6. hamonikr_delete_post
๊ฒ์๊ธ์ ์ญ์ ํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
postUrl
: ์ญ์ ํ ๊ฒ์๊ธ์ URL (๋ฌธ์์ด, ํ์)
์์ :
{
"name": "hamonikr_delete_post",
"arguments": {
"postUrl": "https://hamonikr.org/hamoni_board/144520"
}
}
7. hamonikr_check_status
ํ์ฌ ๋ก๊ทธ์ธ ์ํ์ ์ธ์ ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค.
๋งค๊ฐ๋ณ์: ์์
์์ :
{
"name": "hamonikr_check_status",
"arguments": {}
}
API ์๋ต ํ์
๋ชจ๋ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ ํ์์ ์๋ต์ ๋ฐํํฉ๋๋ค:
์ฑ๊ณต ์๋ต
{
"success": true,
"message": "์์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.",
"postUrl": "https://hamonikr.org/hamoni_board/144520",
"postId": "144520"
}
์คํจ ์๋ต
{
"success": false,
"message": "์ค๋ฅ ๋ฉ์์ง๊ฐ ์ฌ๊ธฐ์ ํ์๋ฉ๋๋ค."
}
๊ธฐ์ ์ ์ธ๋ถ์ฌํญ
- ์ธ์ด: TypeScript
- ๋ธ๋ผ์ฐ์ ์๋ํ: Playwright
- ํ๋กํ ์ฝ: Model Context Protocol (MCP)
- ์ง์ Node.js ๋ฒ์ : 18.0.0 ์ด์
ํ๋ก์ ํธ ๊ตฌ์กฐ
hamonikr-community-mcp/
โโโ src/
โ โโโ index.ts # MCP ์๋ฒ ์ง์
์ (stdio)
โ โโโ sse-server.ts # SSE ์๋ฒ ์ง์
์
โ โโโ hamonikr-client.ts # ํ๋ชจ๋์นด ์ปค๋ฎค๋ํฐ ํด๋ผ์ด์ธํธ
โ โโโ browser-manager.ts # ๋ธ๋ผ์ฐ์ ๊ด๋ฆฌ์
โ โโโ types.ts # ํ์
์ ์
โโโ config/
โ โโโ default.json # ์ค์ ํ์ผ
โโโ docs/ # ๋ฌธ์
โโโ dist/ # ์ปดํ์ผ๋ JavaScript ํ์ผ
โโโ test-sse-client.html # SSE ํ
์คํธ ํด๋ผ์ด์ธํธ
โโโ package.json
โโโ tsconfig.json
โโโ README.md
๊ฐ๋ฐ ๋ฐ ํ ์คํธ
๊ฐ๋ฐ ๋ชจ๋ ์คํ
# SSE ์๋ฒ ๊ฐ๋ฐ ๋ชจ๋
npm run dev
# stdio ์๋ฒ ๊ฐ๋ฐ ๋ชจ๋
npm run dev:stdio
ํ ์คํธ ์คํ
npm test
๋น๋
npm run build
๋ณด์ ์ฃผ์์ฌํญ
- ์ค์ ํ์ผ์ ์ ์ฅ๋ ์๊ฒฉ ์ฆ๋ช ์ ์์ ํ๊ฒ ๊ด๋ฆฌํ์ธ์
- ํ๋ก๋์ ํ๊ฒฝ์์๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฒฉ ์ฆ๋ช ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค
- ์ด ๋๊ตฌ๋ ์น์ธ๋ ์ฌ์ฉ์๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค
๋ผ์ด์ ์ค
MIT License
๊ธฐ์ฌํ๊ธฐ
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
์ง์
๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๊ธฐ๋ฅ ์์ฒญ์ด ์์ผ๋ฉด Issue๋ฅผ ์์ฑํด์ฃผ์ธ์.