๐Ÿค– ํด๋กœ๋“œ(Claude)์—์„œ MCP ์—ฐ๋™ํ•˜๊ธฐ: AI์™€ ์™ธ๋ถ€ ๋„๊ตฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์Šค๋งˆํŠธํ•œ ๋ฐฉ๋ฒ•


๐Ÿ“Œ ๊ฐœ์š”

**ํด๋กœ๋“œ(Claude)**๋Š” Anthropic์ด ๊ฐœ๋ฐœํ•œ **๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ(LLM)**๋กœ, GPT์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ž์—ฐ์–ด ์ดํ•ด ๋ฐ ์ƒ์„ฑ์— ๋Šฅํ•œ AI์ž…๋‹ˆ๋‹ค.
์ตœ๊ทผ Claude์—์„œ๋„ MCP(Model Context Protocol) ๋˜๋Š” “ํˆด ์‚ฌ์šฉ(Tool Use)” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฉด์„œ,
์™ธ๋ถ€ API, ๊ธฐ๋Šฅ ๋„๊ตฌ, ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ์ดํ„ฐ์™€ AI๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โœ… ์ด ๊ธ€์—์„œ๋Š” Claude์—์„œ MCP ๋ฐฉ์‹์œผ๋กœ ์™ธ๋ถ€ ๋„๊ตฌ๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‰ฝ๊ฒŒ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ‘‰ ์˜ˆ์‹œ ์ฝ”๋“œ, ์„ค์ • ๋ฐฉ์‹, ์—ฐ๋™ ํ๋ฆ„๊นŒ์ง€ ํ•œ๋ˆˆ์— ์ •๋ฆฌํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.


๐Ÿ“Œ ๋ชฉ์ฐจ

  1. Claude์˜ ํˆด ์‚ฌ์šฉ ๊ธฐ๋Šฅ์ด๋ž€?
  2. MCP ๋ฐฉ์‹๊ณผ ํˆด ์—ฐ๋™ ๊ฐœ๋…
  3. MCP ๋„๊ตฌ ์—ฐ๋™์„ ์œ„ํ•œ ์กฐ๊ฑด
  4. MCP ์•ฑ ์˜ˆ์‹œ: ๋‚ ์”จ ํ™•์ธ๊ธฐ
  5. JSON ํˆด ํ˜ธ์ถœ ํ๋ฆ„
  6. ๋ณด์•ˆ ๋ฐ ์ธ์ฆ ๊ณ ๋ ค์‚ฌํ•ญ
  7. Claude์™€ GPT์˜ MCP ๋น„๊ต
  8. ๊ฒฐ๋ก 

1. Claude์˜ ํˆด ์‚ฌ์šฉ ๊ธฐ๋Šฅ์ด๋ž€?

Claude์˜ ํˆด ์‚ฌ์šฉ ๊ธฐ๋Šฅ์€ LLM์ด ์™ธ๋ถ€ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ(API) ์„ ํ˜ธ์ถœํ•ด
๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๐Ÿง  โ€œAI๊ฐ€ ์™ธ๋ถ€ API๋ฅผ ์ดํ•ดํ•˜๊ณ , ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์š”์•ฝํ•ด์„œ ์ „๋‹ฌํ•˜๋Š” ๊ตฌ์กฐโ€


2. MCP ๋ฐฉ์‹๊ณผ ํˆด ์—ฐ๋™ ๊ฐœ๋…

Claude์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํˆด ์—ฐ๋™ ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

plaintext

์‚ฌ์šฉ์ž ์ž…๋ ฅ โ†’ Claude โ†’ [MCP ํˆด] ํ˜ธ์ถœ โ†’ JSON ์‘๋‹ต โ†’ Claude๊ฐ€ ํ•ด์„ ํ›„ ์ž์—ฐ์–ด ์‘๋‹ต

โœ… MCP(๋ชจ๋ธ ์ปจํ…์ŠคํŠธ ํ”„๋กœํ† ์ฝœ) ๊ฐœ๋… ์š”์•ฝ

๊ตฌ์„ฑ์š”์†Œ์„ค๋ช…
๋„๊ตฌ๋ช…AI๊ฐ€ ์‚ฌ์šฉํ•  ๊ธฐ๋Šฅ์˜ ์ด๋ฆ„
์„ค๋ช…์–ด๋–ค ์ƒํ™ฉ์—์„œ ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํžŒํŠธ
์ž…๋ ฅ ์Šคํ‚ค๋งˆJSON ํ˜•ํƒœ๋กœ ์š”์ฒญ์— ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ •์˜
์‘๋‹ต ํฌ๋งทAI๊ฐ€ ์ดํ•ด ๊ฐ€๋Šฅํ•œ JSON ๊ฒฐ๊ณผ

3. MCP ๋„๊ตฌ ์—ฐ๋™์„ ์œ„ํ•œ ์กฐ๊ฑด

Claude๋Š” ๊ธฐ๋Šฅ ๋‹จ์œ„์˜ JSON ๊ธฐ๋ฐ˜ ๋„๊ตฌ ํ˜ธ์ถœ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋ฉด AI๊ฐ€ ๋„๊ตฌ๋ฅผ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ์„ค๋ช…
๋„๊ตฌ ์ด๋ฆ„๋ช…ํ™•ํ•œ ๊ธฐ๋Šฅ ๋ช…์นญ (get_weather, search_flight ๋“ฑ)
์„ค๋ช…์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช… (์‚ฌ์šฉ์ž์˜ ์ง€์—ญ ๋‚ ์”จ ํ™•์ธ ์‹œ)
ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช…์„ธJSON Schema ํ˜•์‹์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์š”๊ตฌ์‚ฌํ•ญ (city, date ๋“ฑ)
์‘๋‹ต ํฌ๋งทAI๊ฐ€ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๊ฐ’ (์˜ˆ: {"temperature": "22๋„"})

4. MCP ์•ฑ ์˜ˆ์‹œ: ๋‚ ์”จ ํ™•์ธ ํˆด ์—ฐ๋™

โœจ Claude Tool ์ •์˜ ์˜ˆ์‹œ

json

{
"name": "get_weather",
"description": "์‚ฌ์šฉ์ž ์œ„์น˜์˜ ํ˜„์žฌ ๋‚ ์”จ๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "๋‚ ์”จ๋ฅผ ํ™•์ธํ•  ๋„์‹œ ์ด๋ฆ„"
}
},
"required": ["city"]
}
}

โš™๏ธ API ์„œ๋ฒ„ ์˜ˆ์‹œ (Flask)

python

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/weather', methods=['POST'])
def weather():
data = request.json
city = data.get("city", "Seoul")
# ์‹ค์ œ๋กœ๋Š” ์™ธ๋ถ€ ๋‚ ์”จ API์™€ ์—ฐ๋™ ๊ฐ€๋Šฅ
return jsonify({
"city": city,
"temperature": "22๋„",
"condition": "๋ง‘์Œ"
})

if __name__ == '__main__':
app.run(port=5001)

5. JSON ํˆด ํ˜ธ์ถœ ํ๋ฆ„

๐ŸŽค ์‚ฌ์šฉ์ž ์ž…๋ ฅ:

โ€œ์„œ์šธ์˜ ๋‚ ์”จ ์•Œ๋ ค์ค˜.โ€

๐Ÿง  Claude ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ:

  1. ์‚ฌ์šฉ์ž์˜ ์˜๋„ ํŒŒ์•… โ†’ get_weather ํˆด ํ•„์š”
  2. ์ž๋™์œผ๋กœ ๋‹ค์Œ JSON ํ˜ธ์ถœ ์ƒ์„ฑ:
json

{ "city": "์„œ์šธ" }
  1. MCP ์•ฑ์˜ /weather ์—”๋“œํฌ์ธํŠธ๋กœ POST ์š”์ฒญ
  2. ๋‹ค์Œ๊ณผ ๊ฐ™์€ JSON ์‘๋‹ต ์ˆ˜์‹ :
json

{ "city": "์„œ์šธ", "temperature": "22๋„", "condition": "๋ง‘์Œ" }
  1. Claude๊ฐ€ ์‘๋‹ต์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž์—ฐ์–ด๋กœ ๋ณ€ํ™˜:

โ€œ์„œ์šธ์˜ ํ˜„์žฌ ์˜จ๋„๋Š” 22๋„์ด๋ฉฐ ๋‚ ์”จ๋Š” ๋ง‘์Šต๋‹ˆ๋‹ค.โ€


6. ๋ณด์•ˆ ๋ฐ ์ธ์ฆ ๊ณ ๋ ค์‚ฌํ•ญ

Claude MCP ์—ฐ๋™ ์‹œ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ API ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•˜์„ธ์š”.

ํ•ญ๋ชฉ์„ค๋ช…
CORS ์„ค์ •AI ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•œ ๋„๋ฉ”์ธ๋งŒ ํ—ˆ์šฉ
API Key ๋˜๋Š” Token ๋ฐฉ์‹ ์ธ์ฆํ”„๋ผ์ด๋น— MCP ๋„๊ตฌ ์ ‘๊ทผ ์ œํ•œ
์š”์ฒญ ๋กœ๊ทธ ๊ธฐ๋กAI๊ฐ€ ์–ด๋–ค ์š”์ฒญ์„ ํ•˜๋Š”์ง€ ์ถ”์  ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€

7. Claude์™€ GPT์˜ MCP ๋น„๊ต

ํ•ญ๋ชฉClaudeGPT (OpenAI)
ํˆด ๋ช…์นญToolsPlugins / GPTs
ํ˜ธ์ถœ ๋ฐฉ์‹JSON ๊ธฐ๋ฐ˜ ์ž๋™ ํ˜ธ์ถœmanifest + OpenAPI ํ˜ธ์ถœ
์ œ์•ฝ ์กฐ๊ฑดAnthropic ์ฝ˜์†” ์—ฐ๋™ ํ•„์š”์™ธ๋ถ€ URL ๋“ฑ๋ก ๋ฐ GPT ์„ค์ •
ํ™œ์šฉ ๋ถ„์•ผ๋Œ€ํ™” ๊ธฐ๋ฐ˜ ์ž๋™ ์—ฐ๋™ ์ตœ์ ๊ตฌ์กฐํ™”๋œ API ์—ฐ๋™ ๋ฐ ์ƒ์—…์  ์‚ฌ์šฉ ์ตœ์ 

๐Ÿ’ก Claude๋Š” MCP ์—ฐ๋™์ด ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋ฉฐ ์ง๊ด€์ ์ธ ๋ฐ˜๋ฉด,
GPT๋Š” ์„ค์ •์ด ๋” ๋ณต์žกํ•˜์ง€๋งŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.


8. ๊ฒฐ๋ก 

โœ… Claude์—์„œ๋„ MCP ๋„๊ตฌ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ AI๋กœ ํ˜ธ์ถœํ•˜๋Š” ์ž๋™ํ™”๋œ AI ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โœ… ๋‚ ์”จ, ๊ธˆ์œต ์ •๋ณด, ํ•ญ๊ณต ์˜ˆ์•ฝ, ์ œํ’ˆ ๊ฒ€์ƒ‰ ๋“ฑ ๋‹ค์–‘ํ•œ MCP ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด Claude์—๊ฒŒ ์—ฐ๊ฒฐํ•˜๋ฉด,
AI๊ฐ€ ์ง์ ‘ ์™ธ๋ถ€์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” **โ€œ๋Šฅ๋™์  ๋น„์„œโ€**๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


๐Ÿš€ ๋‹ค์Œ ๋‹จ๊ณ„

  • Flask ๊ธฐ๋ฐ˜ API ์„œ๋ฒ„ ์ œ์ž‘
  • JSON ๋„๊ตฌ ์Šคํ‚ค๋งˆ ์ •์˜
  • Claude ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์—์„œ MCP ๋„๊ตฌ ๋“ฑ๋ก
  • ํˆด ํ˜ธ์ถœ ํ๋ฆ„ ํ…Œ์ŠคํŠธ

๐Ÿ“ฆ ํ•„์š”ํ•˜์‹  ๊ฒฝ์šฐ Claude MCP์šฉ ์ƒ˜ํ”Œ ์ฝ”๋“œ, ์ธ์ฆ ํ† ํฐ ์ฒ˜๋ฆฌ, CORS ์„ค์ •, ํˆด ๋ฐฐํฌ ํ…œํ”Œ๋ฆฟ๋„ ์ œ๊ณตํ•ด ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
GPT์™€ ํ•จ๊ป˜, ์ด์ œ Claude๋„ ์—ฌ๋Ÿฌ๋ถ„์˜ ์—…๋ฌด ์ž๋™ํ™” ํŒŒํŠธ๋„ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š