
【Claude Code × MCP】 자사 API와 Notion 지식 베이스를 연결하는 MCP 서버 구축 핸즈온
요약
Claude Code와 MCP(Model Context Protocol)를 활용하여 자사 API와 Notion 지식 베이스를 연결하는 MCP 서버 구축 방법을 다룹니다. OpenAPI spec 기반의 API 서버와 Notion 데이터베이스 연결 서버를 직접 구현하는 핸즈온 가이드를 제공합니다.
핵심 포인트
- MCP를 통한 Claude Code와 외부 데이터 소스의 표준화된 연결 방식 이해
- OpenAPI spec을 읽어 자율적으로 참조하는 API MCP 서버 구축
- Notion 지식 베이스를 검색 및 취득하는 MCP 서버 구현
- 복수 MCP 서버의 설정 관리 및 보안 설계 방법 습득
Claude Code가 사내 API 문서와 Notion의 사양서를 "직접 읽으러 갈 수 있는" 상태를 만들었더니, 프롬프트에 일일이 붙여넣어야 했던 복사 붙여넣기 지옥에서 해방되었습니다.
이 기사에서는 자사 REST API의 OpenAPI spec을 읽어들이는 MCP 서버와, Notion 데이터베이스를 MCP를 통해 Claude Code에 연결하는 서버 두 가지를 실제로 구축하는 핸즈온을 제공합니다.
읽고 나면 다음과 같은 것들을 할 수 있게 됩니다.
- 자사 API의 사양을 Claude Code가 자율적으로 참조할 수 있는 환경 구축
- Notion의 지식 베이스(Knowledge Base)를 검색·취득하는 MCP 서버 구축
- 복수의 MCP 서버 설정 관리와 보안 설계
| 항목 | 버전 / 요구사항 |
|---|---|
| Claude Code | 최신 버전 (CLI) |
| ... |
사전에 다음을 준비해 주세요.
- Claude Code 설치 및 인증된 환경
- Notion Integration (API 토큰) 생성
- 자사 API의 OpenAPI spec (JSON 또는 YAML)
먼저, Claude Code에서 MCP 서버군으로의 접속 모델을 정리합니다.
MCP (Model Context Protocol)는 LLM이 외부 데이터 소스나 도구에 **표준화된 프로토콜 (Standardized Protocol)**로 액세스하기 위한 메커니즘입니다. Claude Code는 **MCP 클라이언트 (MCP Client)**로서 동작하며, 각 MCP 서버가 제공하는 "도구 (Tool)"나 "리소스 (Resource)"를 호출합니다.
포인트는 세 가지입니다.
Claude Code는 MCP 클라이언트로서 표준 프로토콜로 통신한다 — 서버의 구현 언어를 불문함 -
각 MCP 서버는 독립된 프로세스로 동작한다 — 장애의 영향 범위가 한정됨 -
인증 정보는 MCP 서버 측에서 관리한다 — Claude Code 본체에 토큰을 전달하지 않음
mkdir openapi-mcp-server && cd openapi-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk zod yaml node-fetch
...
src/index.ts를 작성합니다.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
...
# 빌드 & 기동 테스트
npx tsx src/index.ts
MCP Inspector로 동작 확인을 할 때는 다음을 사용합니다.
npx @modelcontextprotocol/inspector npx tsx src/index.ts
- Notion Integrations에서 새로운 Integration을 생성
- 대상 데이터베이스에 대해 Integration을 커넥트 (Connect) 한다 (페이지 우측 상단의 "..." → "Connect") - Internal Integration Secret을 기록해 둔다
mkdir notion-mcp-server && cd notion-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk @notionhq/client zod
...
src/index.ts를 작성합니다.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { Client } from "@notionhq/client";
...
Claude Code에서는 프로젝트 루트의 .mcp.json 또는 **~/.claude.json**으로 MCP 서버를 관리합니다.
~/.claude.json은 팀에서 공유하는 프로젝트 단위의 설정입니다.
{
"mcpServers": {
"openapi": {
...
포인트: env
{{NOTION_API_TOKEN}}
라고 작성하면, Claude Code가 첫 연결 시 사용자에게 값 입력을 요청합니다. 토큰을 설정 파일에 하드코드(Hardcode)하지 않아도 되는 메커니즘입니다.
개인의 모든 프로젝트에서 공통으로 사용하고 싶은 서버는 여기에 설정합니다.
{
"mcpServers": {
"slack": {
...
CLI를 통한 추가도 가능합니다.
# 프로젝트 스코프(Project Scope)에 추가
claude mcp add openapi -- npx tsx ./openapi-mcp-server/src/index.ts
# 유저 스코프(User Scope)에 추가
...
| 방법 | 안전성 | 간편함 | 권장도 |
|---|---|---|---|
.mcp.json에 {{VAR}} 형식으로 기술 | ◎ | ○ | ★★★ |
| 환경 변수(Environment Variable)로 직접 전달 | ○ | ◎ | ★★☆ |
.env 파일 + dotenv | △ | ◎ | ★☆☆ |
| 하드코드 (Hardcode) | × | ◎ | ☆☆☆ |
가장 권장되는 방식은 {{VAR}} 형식입니다.
.mcp.json은 Git에 커밋하여 팀과 공유하면서도, 실제 토큰 값은 각 개발자의 로컬(Local)에만 저장됩니다. Notion MCP 서버에서는 Integration 측에서 액세스를 허용할 페이지 및 데이터베이스를 한정합니다.
// 서버 측에서도 추가 유효성 검사(Validation)를 수행
const ALLOWED_DATABASE_IDS = (process.env.ALLOWED_DB_IDS || "").split(",");
server.tool(
...
.claudeignore는 Claude Code가 프로젝트 내의 파일을 읽을 때의 액세스 제어(Access Control)입니다. MCP 서버의 토큰 파일이나 기밀 설정을 제외합시다.
# .claudeignore
.env
.env.*
...
저의 팀(4명)에서 2주간 운용한 결과를 공유합니다.
- 대상 태스크: 자사 API를 사용한 신규 기능 구현 및 버그 수정
- 비교 기간: MCP 도입 전 2주 vs 도입 후 2주
- 측정 방법: Claude Code의 조작 로그 + 자기 신고 작업 기록
| 지표 | 도입 전 | 도입 후 | 개선율 |
|---|---|---|---|
| 1개 태스크당 컨텍스트(Context) 붙여넣기 횟수 | 평균 4.2회 | 평균 0.8회 | -81% |
| ... |
가장 큰 변화는 **"Claude Code가 스스로 API 사양을 확인해 준다"**는 점에 따른 인지 부하(Cognitive Load)의 감소입니다. "이 엔드포인트의 요청 바디(Request Body) 형식은?"과 같은 확인을 AI가 자율적으로 수행하기 때문에, 개발자는 비즈니스 로직에 집중할 수 있게 되었습니다.
MCP 서버는 "Claude Code의 눈과 손"을 확장하는 메커니즘입니다. OpenAPI spec이나 Notion의 지식 베이스(Knowledge Base)를 연결함으로써, 복사 및 붙여넣기를 통한 컨텍스트 주입으로부터 해방됩니다.
구축은 생각보다 심플합니다. @modelcontextprotocol/sdk를 사용하면, 파일 1개당 100~150줄 정도로 3개의 도구(Tool)를 가진 MCP 서버를 만들 수 있습니다.
보안은 "토큰을 설정 파일에 하드코드하지 않는다", "MCP 서버 측에서 액세스 범위를 좁힌다", ".claudeignore로 기밀 파일을 제외한다"의 3가지 포인트를 지킨다면 실운영에 견딜 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기