3. 개발 환경 설정¶
SDK 선택¶
MCP 서버는 Python 또는 TypeScript로 개발할 수 있습니다.
프로젝트 초기화¶
# 프로젝트 디렉토리 생성
mkdir my-mcp-server && cd my-mcp-server
# uv로 프로젝트 초기화
uv init
# MCP SDK 설치
uv add "mcp[cli]"
설치 후 프로젝트 구조:
최소 서버 코드¶
설치 확인을 위한 "Hello World" MCP 서버입니다.
// src/index.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "My First Server",
version: "1.0.0",
});
// 간단한 Tool 정의
server.tool(
"hello",
"인사를 합니다.",
{ name: z.string() },
async ({ name }) => ({
content: [{ type: "text", text: `안녕하세요, ${name}님!` }],
})
);
// 서버 실행
const transport = new StdioServerTransport();
await server.connect(transport);
동작 확인 — MCP Inspector¶
MCP Inspector는 서버를 테스트할 수 있는 웹 기반 디버깅 도구입니다.
브라우저에서 Inspector가 열리면:
- Tools 탭 클릭
helloTool 확인name파라미터에 값 입력 후 Run 클릭- 결과 확인
Inspector 활용
개발 중 Tool의 입출력을 바로 확인할 수 있어, LLM 클라이언트에 연결하기 전에 서버 동작을 검증하기 좋습니다.
Claude Desktop 연동¶
서버가 동작하면, Claude Desktop에 연결해봅니다.
1. 설정 파일 열기
2. 서버 등록
3. Claude Desktop 재시작
재시작 후 채팅 입력란 옆에 도구 아이콘이 표시되면 연동 성공입니다.
트러블슈팅¶
| 증상 | 원인 | 해결 |
|---|---|---|
| 도구 아이콘이 안 보임 | 설정 파일 경로 또는 JSON 문법 오류 | claude_desktop_config.json 재확인 |
| 서버 시작 실패 | Python/Node 경로 문제 | command에 절대 경로 사용 (예: /usr/local/bin/uv) |
| Tool 호출 시 에러 | 서버 코드 오류 | mcp dev로 먼저 테스트 |
| Inspector 접속 안 됨 | 포트 충돌 | mcp dev main.py --port 6274 |
다음 챕터
환경이 준비되었으니, 본격적인 MCP 서버를 만들어봅시다.