최근 cursor를 활용해 AI와 협업하며 개발 생산성이 크게 높아지는 경험을 했습니다. AI가 코드를 작성하고 오류를 교정해 주는 과정에서 개발의 재미를 다시금 느끼고 있는데요.
이미 충분히 효율적이라 생각하던 차에, MCP(Model Context Protocol)를 통해 개발 환경을 더욱 편리하게 개선할 수 있다는 글을 발견하게 되었습니다. MCP를 직접 공부하고 적용해 본 경험을 공유해 보려 합니다.
본격적으로 MCP를 다루기에 앞서, 그 근간이 되는 개념인 LLM Agent에 대해 먼저 살펴보겠습니다.
cursor, claude desktop과 같은 LLM 기반 앱에 연결하여 AI의 기본 능력보다 확장된 기능을 사용할 수 있게 해주는 시스템입니다.
MCP가 있기 전까지는 LLM Agent를 개발하는 수많은 방식이 있었습니다. 2024년 11월, claude를 개발한 Anthropic에서 이를 통합하고 표준화한 문법을 발표했는데, 그것이 바로 MCP입니다.
표준화가 됨으로써 호환성이 좋아졌고, 따라서 어떤 LLM을 쓰든지 간단하게 연결하고 문제없이 돌아가게 됐습니다.

우아한 기술블로그에서 해석한 MCP 입니다. 단어의 의미가 잘 와닿습니다 👍
다음은 MCP 서버를 구현하는 Python 샘플 코드입니다.
from typing import Any
import httpx
from mcp.server.fastmcp import FastMCP
# 1. MCP 서버 생성 + 서버 이름 지정
mcp = FastMCP("weather")
WEATHER_API_BASE = "https://api.weather.gov"
USER_AGENT = "weather-app/1.0"
# 2. @mcp.tool() 데코레이터를 사용하여 날씨를 가져오는 툴을 정의
@mcp.tool()
async def get_forecast(latitude: float, longitude: float) -> str:
# 2-a. 주석으로 tool과 입출력 값에 대한 대한 설명을 작성
"""Get weather forecast for a location.
Args:
latitude: Latitude of the location
longitude: Longitude of the location
"""
# (중략) 기상청 API 호출 및 포맷팅
return "\n---\n".join(forecasts)
if __name__ == "__main__":
# 3. 서버 시작
mcp.run(transport='stdio')@mcp.tool() 데코레이터를 사용하여 날씨를 가져오는 툴, 함수를 정의합니다간단한 코드를 보니 MCP가 무엇인지 좀 더 명확히 이해되었습니다!

MCP Client와 MCP Server를 연결하는 방법은 간단합니다! 저는 supabase 공식 문서를 따라 cursor에 Supabase MCP를 연결해 보았습니다.


// mcp.json
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": [
"-y",
"@supabase/mcp-server-supabase@latest",
"--read-only",
"--project-ref=<project-ref>"
],
"env": {
"SUPABASE_ACCESS_TOKEN": "<personal-access-token>"
}
}
}
}<project-ref> 대신 Project의 id를,<personal-access-token> 대신 Access Tokens | Supabase에서 본인의 액세스 토큰 발급받고 넣어주면 됩니다.Command + Shift + P > Cursor Setting > Tools & Integration을 확인하면 MCP 서버가 잘 연결된 것을 확인할 수 있습니다!!
문서들을 보니 도저히 이해가 안 돼서 코딩애플 | Youtube을 보고 다시 읽어봤더니 조금 이해가 되는 것 같습니다!! 오랜만에 블로그 열심히 쓰니까 완즈니 쀼듯 😆