MCP(Model Control Protocol) 서버는 AI 모델과 외부 시스템 사이의 통신을 가능하게 해주는 프로토콜이다. 이를 통해 AI 모델이 다양한 외부 도구나 서비스에 접근할 수 있게 해준다. 특히 Claude와 같은 LLM(Large Language Model)이 API 호출, 파일 접근, 데이터베이스 쿼리 등 다양한 작업을 수행할 수 있도록 돕는 중요한 도구이다.
FastMCP는 MCP 프로토콜의 구현체 중 하나로, Python을 사용하여 빠르게 MCP 서버를 구축할 수 있게 해준다. 간단한 코드 몇 줄로 Claude가 외부 시스템과 상호작용할 수 있는 도구를 만들 수 있는 것이 큰 장점이다.
간편한 확장성: AI 모델에 새로운 기능을 추가하고 싶을 때 MCP 도구를 추가하기만 하면 된다. 복잡한 프롬프트 엔지니어링 없이도 AI의 기능을 쉽게 확장할 수 있다.
코드 실행 능력: AI가 직접 코드를 실행하거나 외부 시스템과 상호작용할 수 있게 해준다. 이는 단순 텍스트 생성을 넘어선 실질적인 작업 수행을 가능하게 한다.
보안성: MCP 서버는 AI 모델과 외부 시스템 사이의 중간 계층 역할을 하며, 필요한 권한만 제공함으로써 보안을 강화할 수 있다.
개발 편의성: Python과 같은 익숙한 언어로 도구를 개발할 수 있어 개발자 친화적이다.
실시간 상호작용: 사용자나 AI가 요청한 정보를 실시간으로 가져올 수 있어 항상 최신 정보에 접근할 수 있다.
API 테스트를 위한 간단한 MCP 서버를 구현해보자. 이 서버는 HTTP 요청을 보내고 응답을 받을 수 있는 기능을 Claude에게 제공한다.
import sys
import traceback
from mcp.server.fastmcp import FastMCP
import requests
import json
# MCP 서버 생성
mcp = FastMCP("mcp_project")
@mcp.tool()
def test_server(method: str, url: str, body, access_token: str) -> str:
"""test server"""
headers = {"Content-Type": "application/json"}
if access_token:
headers["Authorization"] = f"Bearer {access_token}"
try:
# body가 이미 딕셔너리인 경우 그대로 사용하고, 문자열인 경우 파싱
if isinstance(body, str):
json_body = json.loads(body)
else:
json_body = body
response = requests.request(method, url, headers=headers, json=json_body)
response.raise_for_status()
try:
return json.dumps(response.json())
except:
return json.dumps({"response": response.text})
except requests.RequestException as e:
error_response = {"error": str(e)}
return json.dumps(error_response)
if __name__ == "__main__":
try:
mcp.run()
except Exception as e:
traceback.print_exc(file=sys.stderr)
이 코드는 test_server라는 하나의 도구를 등록한다. 이 도구는 HTTP 메서드, URL, 요청 본문, 액세스 토큰을 받아 요청을 보내고 응답을 반환한다.
지연님(https://velog.io/@yeoni9094)의 jwt 테스트 서버로 테스트를 진행했다. 해당 서버는 다음과 같은 기능이 있다.
이제 MCP 서버를 사용하여 이러한 API를 테스트하기 전에 클로드 데스크탑과 MCP 서버를 연동시켜야 한다.

claude_desktop_config.json 파일을 편집해준다.{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/kimminbeom/Desktop",
"/Users/kimminbeom/Downloads"
]
},
"TalkToFigma": {
"command": "/Users/kimminbeom/.bun/bin/bunx",
"args": ["cursor-talk-to-figma-mcp@latest", "--server=vps.sonnylab.com"]
},
"mcp_project": {
"command": "/Users/kimminbeom/Desktop/peak/peakDev/mcp-test/.venv/bin/python3",
"workingDirectory": "/Users/kimminbeom/Desktop/peak/peakDev/mcp-test",
"args": ["/Users/kimminbeom/Desktop/peak/peakDev/mcp-test/server.py"]
}
}
}
filesystem 은 로컬 파일 관련된 MCP 서버이고, TalkToFigma 는 피그마 편집을 가능하게 해주는 MCP 서버이다.
클로드 데스크탑에 다음과 같은 메세지를 보냈다.
프로젝트 살펴보고 각 api 마다 시나리오 짜서 서버 요청 테스트좀 해봐
서버는 localhost:8080에 열려있어
응답
좋습니다! 수정된 코드를 사용하여 회원가입 요청을 보내보겠습니다:
성공했습니다! 응답으로 "회원가입 완료" 메시지가 반환되었습니다(유니코드로 인코딩되어 있습니다).
이제 회원가입이 성공했으니 다른 API 테스트도 진행해 보겠습니다.
### 회원가입한 사용자로 로그인 테스트
로그인도 성공했습니다! 로그인 응답에서 `tokenAuthScheme`, `accessToken`, `refreshToken`을 확인할 수 있습니다. 이제 이 토큰을 사용하여 인증이 필요한 엔드포인트에 접근해 보겠습니다.
### 인증 확인 테스트
JSON 파싱 오류가 발생했네요. GET 요청일 때 body가 비어있으면 JSON으로 파싱할 수 없을 수 있습니다. 빈 딕셔너리를 전달해 보겠습니다:
성공했습니다! 응답으로 "인증된 사용자입니다." 메시지가 반환되었습니다.
### 토큰 갱신 테스트
토큰 갱신도 성공했습니다! 새로운 액세스 토큰과 리프레시 토큰이 발급되었습니다.
### 로그아웃 테스트
로그아웃도 성공했습니다! "로그아웃 완료" 메시지가 반환되었습니다.
### 로그아웃 후 인증 요청 테스트
예상대로 로그아웃 후에는 401 Unauthorized 오류가 발생했습니다. 이는 토큰이 블랙리스트에 추가되어 더 이상 유효하지 않음을 의미합니다.
## 테스트 결과 요약
모든 API 엔드포인트가 성공적으로 테스트되었습니다!
1. **회원가입**: 새로운 사용자 계정이 성공적으로 생성되었습니다.
2. **로그인**: 유효한 자격 증명으로 로그인하여 액세스 토큰과 리프레시 토큰을 발급 받았습니다.
3. **인증 확인**: 유효한 액세스 토큰으로 보호된 엔드포인트에 접근했습니다.
4. **토큰 갱신**: 리프레시 토큰을 사용하여 새로운 액세스 토큰과 리프레시 토큰을 발급 받았습니다.
5. **로그아웃**: 액세스 토큰을 블랙리스트에 추가하고 리프레시 토큰을 삭제했습니다.
6. **로그아웃 후 인증 테스트**: 블랙리스트에 추가된 토큰으로는 더 이상 인증할 수 없음을 확인했습니다.
JWT-Redis 인증 시스템이 정상적으로 작동하고 있음을 확인했습니다. 이 시스템은 액세스 토큰과 리프레시 토큰을 사용하여 보안을 유지하고, Redis를 사용하여 토큰을 관리하며, 로그아웃 시 토큰을 블랙리스트에 추가하여 보안을 강화하고 있습니다.
기본적인 성공 테스트 + 인증 실패 시나리오 테스트까지 성공했다. 입력을 구체화하여 더 많고 정교한 시나리오 테스트까지 충분히 가능하다고 판단된다.
자동화된 테스트: Claude와 같은 AI 모델이 MCP를 통해 API를 직접 테스트할 수 있어, 수동 테스트의 번거로움을 줄일 수 있다.
테스트 시나리오 다양화: AI의 자연어 처리 능력을 활용하여 다양한 테스트 시나리오를 쉽게 생성하고 실행할 수 있다.
실시간 피드백: API의 동작을 실시간으로 확인하고 결과를 바로 분석할 수 있다.
직관적인 인터페이스: 복잡한 API 클라이언트 없이도 자연어로 API를 테스트할 수 있다.
문서화 용이성: 테스트 과정과 결과를 자동으로 문서화할 수 있어 개발 프로세스를 개선할 수 있다.
MCP 서버는 AI 모델의 능력을 확장하는 강력한 도구이다. 특히 API 테스트와 같은 개발 작업에서 큰 도움이 된다. 간단한 Python 코드로 MCP 서버를 구현하고, 이를 통해 JWT 인증 API를 테스트하는 방법을 살펴보았다.
이러한 접근 방식은 개발자가 API를 더 효율적으로 테스트하고, 문제를 빠르게 발견하며, 개발 프로세스를 개선하는 데 도움이 된다. 앞으로 AI와 개발 도구의 통합이 더욱 발전함에 따라, MCP와 같은 프로토콜의 중요성은 더욱 커질 것이다.
테스트 감사합니다!!!
저도 MCP 한 번 써볼게요