CalculatorLib MCP

์ˆ˜์ฒœ ๊ฐœ์˜ ๊ณ„์‚ฐ๊ธฐ์™€ 9๊ฐœ์˜ ๋‹จ์œ„ ๋ณ€ํ™˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋‹จ 12๊ฐœ์˜ ๊ฐ„๊ฒฐํ•œ ๋„๊ตฌ๋กœ ๋ฌถ์–ด(๊ณ„์‚ฐ๊ธฐ๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๋’ค ์‹คํ–‰) ๋ชจ๋“  Model Context Protocol ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. “๋ชธ๋ฌด๊ฒŒ 70 kg, ํ‚ค 170 cm์ผ ๋•Œ ์ œ BMI๋Š”?” ๋˜๋Š” “5 ๋ฏธํ„ฐ๋ฅผ ํ”ผํŠธ๋กœ ๋ณ€ํ™˜ํ•ด ์ค˜”์ฒ˜๋Ÿผ Claude์—๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉด, ์ง€์–ด๋‚ธ ๊ณ„์‚ฐ ๋Œ€์‹  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

12์ œ๊ณต๋˜๋Š” ๋„๊ตฌ
์ˆ˜์ฒœ ๊ฐœ์˜ ๊ณ„์‚ฐ๊ธฐ
9๋ณ€ํ™˜ ์นดํ…Œ๊ณ ๋ฆฌ
MCP ์—”๋“œํฌ์ธํŠธ URL
Streamable HTTP ๊ธฐ๋ฐ˜ JSON-RPC 2.0. ๊ณต๊ฐœ๋˜์–ด ์žˆ์–ด ๋ˆ„๊ตฌ๋‚˜ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Authorization ํ—ค๋” ์„ ํƒ
์ด ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ˜ธ์ถœ์„ ๊ณ„์ •์— ์—ฐ๊ฒฐํ•˜๊ณ  /account/mcp-logs์—์„œ ์‚ฌ์šฉ ๋ถ„์„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ํฐ ์ƒ์„ฑ →

60์ดˆ ๋งŒ์— ์„ค์น˜

์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ณ ๋ฅด๊ณ , ์Šค๋‹ˆํŽซ์„ ๋ถ™์—ฌ๋„ฃ์€ ๋’ค ์žฌ์‹œ์ž‘ํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค.

๋ช…๋ น ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•˜๋ฉด Claude Code๊ฐ€ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค:

claude mcp add --transport http calculatorlib https://calculatorlib.com/mcp

๋˜๋Š” ์„ค์ • ํŒŒ์ผ ~/.claude/mcp.json์„ ์ง์ ‘ ํŽธ์ง‘ํ•˜๋ ค๋ฉด:

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp"
    }
  }
}

Claude Code์—์„œ /mcp๋กœ ํ™•์ธํ•˜์„ธ์š”. calculatorlib๊ฐ€ ์—ฐ๊ฒฐ๋˜๊ณ  12๊ฐœ์˜ ๋„๊ตฌ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Claude Desktop ์„ค์ •์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

์•„๋ž˜์˜ mcpServers ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ์กด ๋‚ด์šฉ๊ณผ ๋ณ‘ํ•ฉํ•˜์„ธ์š”):

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp"
    }
  }
}

Claude Desktop์„ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ์ฐฝ์˜ ๋ง์น˜ ์•„์ด์ฝ˜์— calculatorlib์™€ 12๊ฐœ์˜ ๋„๊ตฌ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Cursor ์„ค์ • → MCPAdd new MCP server๋ฅผ ์—ด๊ณ  ๋‹ค์Œ์„ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค:

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp"
    }
  }
}

Cursor๋Š” ๋™์ผํ•œ Streamable HTTP ์ „์†ก์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ JSON ์Šคํ‚ค๋งˆ๊ฐ€ Claude Desktop๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

Zed ์„ค์ •(cmd+, / ctrl+,Open Settings)์„ ํŽธ์ง‘ํ•˜๊ณ  context_servers ์•„๋ž˜์— ๊ณ„์‚ฐ๊ธฐ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

{
  "context_servers": {
    "calculatorlib": {
      "source": "custom",
      "transport": {
        "type": "streamable-http",
        "url": "https://calculatorlib.com/mcp"
      }
    }
  }
}

์–ด์‹œ์Šคํ„ดํŠธ ํŒจ๋„์„ ์ƒˆ๋กœ ๊ณ ์น˜๋ฉด ๊ณ„์‚ฐ๊ธฐ ๋„๊ตฌ๋ฅผ ๋ชจ๋“  ์—์ด์ „ํŠธ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zed์˜ MCP ์ง€์›์—๋Š” v0.165 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

VS Code์—์„œ Cline ํ™•์žฅ์„ ์—ฝ๋‹ˆ๋‹ค → MCP ServersEdit Configuration. macOS์—์„œ๋Š” ์„ค์ • ํŒŒ์ผ์ด ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json์— ์žˆ์Šต๋‹ˆ๋‹ค(Linux/Win ๊ฒฝ๋กœ๋„ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค):

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp",
      "transportType": "streamableHttp"
    }
  }
}

Cline์€ ์„œ๋ฒ„ ์„ค์ •์„ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ์ƒˆ ๋„๊ตฌ๋Š” ๋ช‡ ์ดˆ ๋‚ด์— MCP ํŒจ๋„์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Windsurf → CascadeConfigure MCP๋ฅผ ์—ด๊ฑฐ๋‚˜ ~/.codeium/windsurf/mcp_config.json์„ ์ง์ ‘ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค:

{
  "mcpServers": {
    "calculatorlib": {
      "serverUrl": "https://calculatorlib.com/mcp"
    }
  }
}

Windsurf๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋ฉด ๊ณ„์‚ฐ๊ธฐ ๋„๊ตฌ๊ฐ€ Cascade์˜ ๋„๊ตฌ ์„ ํƒ๊ธฐ์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. HTTP ์ „์†ก์—๋Š” Windsurf 1.5+๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Streamable HTTP ์ „์†ก(์‚ฌ์–‘ ๋ฒ„์ „ 2025-06-18)์„ ์ง€์›ํ•˜๋Š” MCP ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ๋ผ๋ฉด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

{
  "transport": "streamable-http",
  "endpoint": "https://calculatorlib.com/mcp"
}

๋˜๋Š” curl๋กœ JSON-RPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค:

curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

์ด๋Ÿฐ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”

์„ค์น˜ํ•œ ๋’ค์—๋Š” ํ‰์†Œ์ฒ˜๋Ÿผ Claude์—๊ฒŒ ๋งํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค โ€” ์•Œ๋งž์€ ๋„๊ตฌ๋ฅผ ์•Œ์•„์„œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

1

“๋ชธ๋ฌด๊ฒŒ 70 kg, ํ‚ค 170 cm์ด๋ฉด ์ œ BMI๋Š” ์–ผ๋งˆ์ธ๊ฐ€์š”? ๊ฑด๊ฐ•ํ•œ ๋ฒ”์œ„์— ์†ํ•˜๋‚˜์š”?”

Claude๊ฐ€ bmi_calculator๋ฅผ ํ˜ธ์ถœํ•ด BMI 24.22์™€ WHO ๋ถ„๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2

“5 ๋ฏธํ„ฐ๋ฅผ ํ”ผํŠธ๋กœ, ๊ทธ๋‹ค์Œ 200 ํŒŒ์šด๋“œ๋ฅผ ํ‚ฌ๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ค˜.”

Claude๊ฐ€ convert_length์™€ convert_mass๋ฅผ ์ฐจ๋ก€๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

3

“$10 000์„ ์—ฐ 5% ๋ณต๋ฆฌ๋กœ 20๋…„ ํˆฌ์žํ•˜๋ฉด ์ตœ์ข… ๊ธˆ์•ก์€ ์–ผ๋งˆ์ธ๊ฐ€์š”?”

Claude๊ฐ€ compound_interest_calculator๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์„ธ๋ถ€ ๋‚ด์—ญ์„ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

4

“$300k ์ฃผํƒ๋‹ด๋ณด๋Œ€์ถœ, ๊ธˆ๋ฆฌ 6.5%, 30๋…„ ์ƒํ™˜ ์‹œ ์›” ๋‚ฉ์ž…๊ธˆ์€ ์–ผ๋งˆ์ธ๊ฐ€์š”?”

Claude๊ฐ€ ์›๊ธˆ, ๊ธˆ๋ฆฌ, ๊ธฐ๊ฐ„์œผ๋กœ home_loan_calculator๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ

์—ฌ๊ธฐ์—์„œ ๋ฐ”๋กœ ์„œ๋ฒ„๋ฅผ ํ˜ธ์ถœํ•˜์„ธ์š” โ€” https://calculatorlib.com/mcp๋กœ ์‹ค์ œ JSON-RPC๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ค์ œ ์‘๋‹ต์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ฐ€์ž…์€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ๋„๊ตฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘…

์ธ์ฆ ํ† ํฐ(์„ ํƒ)
์›์‹œ JSON-RPC ์š”์ฒญ & ์‘๋‹ต
์š”์ฒญ
์‘๋‹ต
๊ณ ๊ธ‰ ํŒ โ€” MCP Inspector ์™„์ „ํ•œ ์š”์ฒญ/์‘๋‹ต ๋””๋ฒ„๊ฑฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๊ณต์‹ inspector๋ฅผ ์‹คํ–‰ํ•ด ์ด ์„œ๋ฒ„๋ฅผ ๊ฐ€๋ฆฌํ‚ค์„ธ์š”: npx @modelcontextprotocol/inspector๋ฅผ ์‹คํ–‰ํ•œ ๋’ค https://calculatorlib.com/mcp์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค(์ „์†ก: Streamable HTTP).

๋„๊ตฌ ๋ธŒ๋ผ์šฐ์ €

๊ณ„์‚ฐ๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ 9๊ฐœ์˜ ๋ณ€ํ™˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ด๋ฆ„์ด๋‚˜ ์ œ๋ชฉ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์„ธ์š”. Claude์—๊ฒŒ ๋ฌด์—‡์„ ์š”์ฒญํ• ์ง€ ์ฐพ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์นดํƒˆ๋กœ๊ทธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘โ€ฆ

์ž‘๋™ ๋ฐฉ์‹

  • ์—”๋“œํฌ์ธํŠธ: https://calculatorlib.com/mcp์˜ ๋‹จ์ผ POST ํ•ธ๋“ค๋Ÿฌ๊ฐ€ Streamable HTTP ์œ„์—์„œ JSON-RPC 2.0์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค(์ „์†ก ์‚ฌ์–‘ 2025-06-18).
  • ๋„๊ตฌ ์ด๋ฆ„ ๊ทœ์น™: ๊ณ„์‚ฐ๊ธฐ ์Šฌ๋Ÿฌ๊ทธ๋Š” snake_case๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(bmi_calculator, compound_interest_calculator). ๋ณ€ํ™˜๊ธฐ๋Š” convert_<category> ํ˜•์‹์ž…๋‹ˆ๋‹ค.
  • ์ž…๋ ฅ: ๊ฐ ๋„๊ตฌ๋Š” ๊ณ„์‚ฐ๊ธฐ ํผ ํ•„๋“œ(ํƒ€์ž…, ์—ด๊ฑฐ, ์ตœ์†Œ/์ตœ๋Œ€)์—์„œ ๋„์ถœํ•œ JSON Schema๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด๋ถ€ ํ•„๋“œ(์˜ˆ: BMI์˜ ๋ฏธํ„ฐ๋ฒ• ๋Œ€ ์•ผ๋“œํŒŒ์šด๋“œ๋ฒ•)๋Š” ์„ ํƒ์œผ๋กœ ํ‘œ์‹œ๋˜๋ฏ€๋กœ, ์–ด๋–ค ์กฐํ•ฉ์ด ์œ ํšจํ•œ์ง€๋Š” ๊ฐ ํ•„๋“œ์˜ ์„ค๋ช…์„ ํ™•์ธํ•˜์„ธ์š”.
  • ์ถœ๋ ฅ: ํ•œ ์ค„ ํ…์ŠคํŠธ ์š”์•ฝ๊ณผ ํ•จ๊ป˜ LLM์ด ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” structuredContent JSON ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: { "main": [{...}], "data": [...] }).
  • ์—…๋ฐ์ดํŠธ: ์นดํƒˆ๋กœ๊ทธ๋Š” 5๋ถ„๋งˆ๋‹ค ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค โ€” ์ƒˆ๋กœ ๊ฒŒ์‹œ๋œ ๊ณ„์‚ฐ๊ธฐ๋Š” ์ž๋™์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋‹ค์ด๋ ‰ํŠธ API(MCP ํด๋ผ์ด์–ธํŠธ ๋ถˆํ•„์š”)

MCP ํด๋ผ์ด์–ธํŠธ ์—†์ด ํ†ตํ•ฉํ•˜๊ณ  ์‹ถ๋‚˜์š”? ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ฐ˜ JSON ์—”๋“œํฌ์ธํŠธ๋กœ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc":"2.0","id":2,"method":"tools/call",
    "params":{
      "name":"bmi_calculator",
      "arguments":{"unitSystem":"metric","weight":70,"height":170}
    }
  }'
curl -X POST https://calculatorlib.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc":"2.0","id":3,"method":"tools/call",
    "params":{
      "name":"convert_length",
      "arguments":{"value":5,"from":"Meter","to":"Foot"}
    }
  }'

REST ์—”๋“œํฌ์ธํŠธ(JSON-RPC ๋ž˜ํผ ์—†์Œ):

  • /api/calculators/schemas?q=<keywords> โ€” ๊ณ„์‚ฐ๊ธฐ ๊ฒ€์ƒ‰(์ž…๋ ฅ ์Šคํ‚ค๋งˆ๊ฐ€ ํฌํ•จ๋œ ์ œํ•œ๋œ ๊ฒฐ๊ณผ)
  • /api/converter/categories โ€” ๋‹จ์œ„๊ฐ€ ํฌํ•จ๋œ ๋ณ€ํ™˜ ์นดํ…Œ๊ณ ๋ฆฌ
  • POST /api/converter/convert โ€” ์ง์ ‘ ๋ณ€ํ™˜, ๋ณธ๋ฌธ { category, from, to, value }

์ธ์ฆ(์„ ํƒ์ด์ง€๋งŒ ๊ถŒ์žฅ)

์ต๋ช… ํ˜ธ์ถœ๋„ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค โ€” ์ธ์ฆ์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜๋ฉด /account/mcp-logs์—์„œ ์‚ฌ์šฉ์ž๋ณ„ ์‚ฌ์šฉ ๋ถ„์„์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ํ† ํฐ์œผ๋กœ ๋ณด๋‚ธ ๋ชจ๋“  ํ˜ธ์ถœ์ด ์ง€์—ฐ ์‹œ๊ฐ„, ์˜ค๋ฅ˜ ์‚ฌ์œ , ํ˜ธ์ถœํ•œ ๊ณ„์‚ฐ๊ธฐ์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ† ํฐ ๋ฐ›๊ธฐ(60์ดˆ)

  1. ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ๋จผ์ € ๊ณ„์ •์„ ์ƒ์„ฑ).
  2. /account/api-tokens๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. Generate token์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ํ•œ ๋ฒˆ๋งŒ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ๋ณต์‚ฌํ•˜์„ธ์š”.

MCP ํด๋ผ์ด์–ธํŠธ์— ์ถ”๊ฐ€ํ•˜๊ธฐ

๊ณต๊ฐœ ์„ค์น˜์™€ ๋™์ผํ•œ ์„ค์ • ํŒŒ์ผ์— headers.Authorization ํ•„๋“œ๋งŒ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

{
  "mcpServers": {
    "calculatorlib": {
      "url": "https://calculatorlib.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

์™œ ์‚ฌ์šฉํ•˜๋‚˜์š”?

  • ๊ฐœ์ธ ์‚ฌ์šฉ ๋กœ๊ทธ โ€” ๊ฐ€์žฅ ๋งŽ์ด ํ˜ธ์ถœํ•˜๋Š” ๊ณ„์‚ฐ๊ธฐ์™€ ์‹คํŒจํ•˜๋Š” ๊ณ„์‚ฐ๊ธฐ๋ฅผ, ๋ณธ์ธ ํ† ํฐ ๋ฒ”์œ„์—์„œ๋งŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(/account/mcp-logs).
  • ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ, ๋ณ„๋„ ํ† ํฐ โ€” ๊ธฐ๊ธฐ๋งˆ๋‹ค(๋…ธํŠธ๋ถ, ์„œ๋ฒ„, ์—์ด์ „ํŠธ) ํ•˜๋‚˜์”ฉ ๋ฐœ๊ธ‰ํ•˜์„ธ์š”. ํ•˜๋‚˜๋ฅผ ํ๊ธฐํ•ด๋„ ๋‚˜๋จธ์ง€์—๋Š” ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ํ–ฅํ›„ ์‚ฌ์šฉ์ž๋ณ„ ๊ธฐ๋Šฅ์˜ ํ† ๋Œ€ โ€” ์ถ”ํ›„ ์†๋„ ์ œํ•œ / ํ• ๋‹น๋Ÿ‰ / ์ €์žฅ๋œ ํ”„๋ฆฌ์…‹์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ธ์ฆ๋œ ํ˜ธ์ถœ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

Bearer ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” curl

curl -X POST https://calculatorlib.com/mcp \
  -H 'Authorization: Bearer YOUR_TOKEN_HERE' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

์„œ๋ฒ„ ์šด์˜์ž์—๊ฒŒ: MCP_REQUIRE_AUTH=true๋กœ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋“  ํ˜ธ์ถœ์— ํ† ํฐ์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ต๋ช… → 401). ๊ธฐ์กด MCP_API_TOKEN ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋‹จ์ผ ๊ณต์œ  ๋น„๋ฐ€์„ ํ†ตํ•œ ์šฐํšŒ ์ˆ˜๋‹จ์œผ๋กœ ๊ณ„์† ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

FAQ & ๋ฌธ์ œ ํ•ด๊ฒฐ

๋ฌด๋ฃŒ์ธ๊ฐ€์š”? ์†๋„ ์ œํ•œ์ด ์žˆ๋‚˜์š”?
๋„ค, ๋ฌด๋ฃŒ์ด๋ฉฐ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ DDoS ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ์•ž๋‹จ์— Cloudflare๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ IP๋ณ„ ํ• ๋‹น๋Ÿ‰์€ ์—†์œผ๋‹ˆ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ์ฃผ์„ธ์š”. ํ”„๋กœ๋•์…˜์—์„œ ๋Œ€๋Ÿ‰์œผ๋กœ ํ˜ธ์ถœํ•  ์˜ˆ์ •์ด๋ผ๋ฉด ํ‘ธํ„ฐ์˜ ๋ฌธ์˜ ๋งํฌ๋กœ ์•Œ๋ ค ์ฃผ์„ธ์š”.
์ œ ์ฟผ๋ฆฌ๋ฅผ ์ €์žฅํ•˜๋‚˜์š”?
๊ณ„์‚ฐ๊ธฐ ์ž…๋ ฅ์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌ๋˜๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์—์„œ ๋กœ๊น…๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Cloudflare์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ์šด์˜์„ ์œ„ํ•ด ์ž„์‹œ ์•ก์„ธ์Šค ๋กœ๊ทธ(์š”์ฒญ ๋ฉ”์„œ๋“œ, ์ƒํƒœ, IP)๋ฅผ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, JSON ํŽ˜์ด๋กœ๋“œ ๋‚ด์šฉ์€ ์ „ํ˜€ ๊ธฐ๋กํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Claude๊ฐ€ ๊ฐ€๋” ๋„๊ตฌ๊ฐ€ ์œ ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
์ผ๋ถ€ ๊ณ„์‚ฐ๊ธฐ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์˜๋ฏธ ๋งˆ์ปค๊ฐ€ ์—†๋Š” ์Šคํƒ€์ผ HTML๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. MCP ๋ ˆ์ด์–ด๋Š” ๊ฑฐ๊ธฐ์„œ ๊ตฌ์กฐํ™”๋œ ํ•„๋“œ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์—†์–ด “์ถœ๋ ฅ ์—†์Œ”์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋งˆ์ปค๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ณ„์‚ฐ๊ธฐ๋Š” ํ’๋ถ€ํ•œ ๊ตฌ์กฐํ™” ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋‚˜๋จธ์ง€๋„ ์ •์ƒ ์‹คํ–‰๋˜์ง€๋งŒ ํ•œ ์ค„ ์š”์•ฝ๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ œ ์‚ฌ์šฉ ๋‚ด์—ญ์ด ๊ณ„์ •์— ํ‘œ์‹œ๋˜๋„๋ก ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
๋„ค โ€” ๋กœ๊ทธ์ธํ•œ ๋’ค /account/api-tokens์—์„œ Bearer ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜์„ธ์š”. ๋ชจ๋“  /mcp ์š”์ฒญ์— Authorization: Bearer <token>์œผ๋กœ ์ „๋‹ฌํ•˜๋ฉด ํ˜ธ์ถœ์ด /account/mcp-logs์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ „์ฒด ํด๋ผ์ด์–ธํŠธ ์„ค์ •์€ ์œ„์˜ ์ธ์ฆ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
ํ† ํฐ์„ ์žƒ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
์•„๋‹ˆ์š” โ€” SHA-256 ํ•ด์‹œ๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. /account/api-tokens์—์„œ ์žƒ์–ด๋ฒ„๋ฆฐ ํ† ํฐ์„ ํ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ ๋ฐœ๊ธ‰ํ•˜์„ธ์š”.
๊ณ„์‚ฐ๊ธฐ๋ฅผ ๋ง‰ ๊ฒŒ์‹œํ–ˆ๋Š”๋ฐ ์–ธ์ œ ํ‘œ์‹œ๋˜๋‚˜์š”?
5๋ถ„ ์ด๋‚ด์ž…๋‹ˆ๋‹ค(์นดํƒˆ๋กœ๊ทธ ์บ์‹œ TTL). ๊ด€๋ฆฌ์ž๋Š” /admin/tools/cache → Invalidate ALL caches๋กœ ์ƒˆ๋กœ ๊ณ ์นจ์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋„๊ตฌ ์ด๋ฆ„์ด URL์—์„œ ๋ณด์ด๋Š” ์Šฌ๋Ÿฌ๊ทธ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋‚˜์š”?
URL ์Šฌ๋Ÿฌ๊ทธ์˜ ํ•˜์ดํ”ˆ์€ ๋„๊ตฌ ์ด๋ฆ„์—์„œ ๋ฐ‘์ค„๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค(Claude์˜ ๋„๊ตฌ ํŒŒ์„œ๊ฐ€ ๋ฐ‘์ค„์„ ๋” ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค). ๊ทธ๋ž˜์„œ /bmi-calculator๋Š” bmi_calculator๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
BMI ๋„๊ตฌ๊ฐ€ ๋ฏธํ„ฐ๋ฒ•(weight, height)๊ณผ ์•ผ๋“œํŒŒ์šด๋“œ๋ฒ•(weightLbs, heightFt, heightIn) ์ž…๋ ฅ์„ ๋ชจ๋‘ ์„ ํƒ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
์กฐ๊ฑด๋ถ€ ์ž…๋ ฅ์ด ์žˆ๋Š” ๊ณ„์‚ฐ๊ธฐ(์˜ˆ: ๋‹จ์œ„๊ณ„ ์ „ํ™˜)๋Š” ํ‘œ์ค€ JSON Schema์—์„œ “unitSystem=metric์ผ ๋•Œ X ํ•„์ˆ˜, unitSystem=imperial์ผ ๋•Œ Y ํ•„์ˆ˜”๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‘ ๊ทธ๋ฃน์„ ๋ชจ๋‘ ์„ ํƒ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ , LLM์ด ๊ฐ ํ•„๋“œ์˜ ์„ค๋ช…์„ ์ฝ์–ด ์˜ฌ๋ฐ”๋ฅธ ์กฐํ•ฉ์„ ์„ ํƒํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.