MCP로 Slack·Notion·벡터 DB를 Claude 에이전트에 연결하기 — 인시던트 자동화·RAG 파이프라인 구축 실전 가이드
AI 에이전트가 아무리 강력해도, 실시간 데이터에 접근하지 못하면 고립된 두뇌에 불과합니다. Slack의 최신 인시던트 알림도, Notion의 스프린트 회고도, 벡터 DB에 저장된 사내 문서도 — 에이전트가 직접 읽고 쓸 수 없다면 진정한 자동화는 불가능합니다.
이 글을 따라가면 Claude 에이전트가 Slack 메시지를 읽고, Notion 페이지를 요약해 자동 게시하며, 벡터 DB를 시맨틱 검색하는 파이프라인을 단계별로 구성할 수 있습니다. Anthropic이 2024년 11월 공개한 Model Context Protocol(MCP) 은 AI 클라이언트와 외부 서비스 사이에 USB-C 포트 같은 단일 표준 인터페이스를 제공합니다. Slack이든 Notion이든 Pinecone이든, 동일한 방식으로 연결하고 동일한 방식으로 호출합니다.
공개 이후 MCP 생태계는 빠르게 성숙했습니다. 2024년 11월 첫 스펙 이후 불과 1년여 만에 SDK 월간 다운로드가 9,700만 건을 넘어섰고, 등록된 공개 서버도 1만 개를 돌파했습니다. 2025년 12월에는 Anthropic이 MCP를 Linux Foundation 산하 Agentic AI Foundation(AAIF) 에 기증하며 Anthropic·Block·OpenAI가 공동 창립자로 참여하는 커뮤니티 거버넌스 체계로 전환됐습니다. 2026년 현재 Notion·Slack·GitHub·Stripe 등 주요 서비스가 공식 MCP 서버를 제공하고 있어, 핵심 통합 코드를 직접 작성하지 않고도 실전 수준의 에이전트 자동화가 가능합니다.
사전 조건(Prerequisites): 이 글의 예시를 직접 따라가려면 다음이 필요합니다.
- Node.js 18+ 및
npx사용 가능한 환경- Anthropic API 키 (console.anthropic.com에서 발급)
- 예시별로 Slack App Bot Token, Notion API 키, Pinecone/Qdrant 계정
핵심 개념
MCP 구조가 이미 익숙하다면 이 섹션을 건너뛰고 바로 실전 적용 으로 이동해도 좋습니다.
MCP의 구조 — 클라이언트·서버·트랜스포트
MCP는 세 계층으로 구성됩니다.
| 구성 요소 | 역할 | 예시 |
|---|---|---|
| MCP Client | 도구를 호출하고 결과를 수신하는 AI 런타임 | Claude, ChatGPT, Cursor, VS Code |
| MCP Server | 외부 서비스를 표준 인터페이스로 노출하는 경량 서버 | Slack, Notion, Pinecone 서버 |
| Transport Layer | JSON-RPC 2.0 기반 메시지 교환 레이어 | stdio(로컬), HTTP+SSE(원격) |
JSON-RPC 2.0: 요청·응답을 JSON 형식으로 주고받는 원격 프로시저 호출(RPC) 표준입니다. MCP는 이 규격을 트랜스포트 계층에 채택해 언어·플랫폼 중립적인 통신을 보장합니다.
트랜스포트 방식은 사용 환경에 따라 선택이 달라집니다.
| 방식 | 동작 환경 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|---|
| stdio | 로컬 프로세스 | 낮은 레이턴시, 네트워크 불필요 | 단일 클라이언트만 연결 가능 | 로컬 개발 도구, 데스크톱 앱 |
| HTTP+SSE | 원격 서버 | 다중 클라이언트 지원, 클라우드 배포 가능 | 네트워크 왕복 지연 발생 | 프로덕션 서비스, SaaS 연동 |
세 가지 핵심 프리미티브
MCP 서버가 노출하는 기본 단위는 세 가지입니다.
| 프리미티브 | 역할 | 대표 예시 |
|---|---|---|
| Tools | 에이전트가 명시적으로 호출하는 실행 단위. 부수 효과(side effect)를 일으킬 수 있다. | Slack 메시지 전송, Notion 페이지 생성 |
| Resources | 에이전트가 읽기 전용으로 접근하는 데이터 소스. 파일, DB 레코드 등을 컨텍스트로 주입할 때 사용한다. | 사내 문서 파일, API 응답, DB 레코드 |
| Prompts | 재사용 가능한 프롬프트 템플릿 | 요약, 분류, 검색 프롬프트 |
Tools와 Resources의 차이를 명확히 짚어두면 설계 시 혼동을 줄일 수 있습니다. Tools는 에이전트가 "무언가를 실행"할 때 호출합니다 — 메시지를 보내거나, 파일을 생성하거나, API를 트리거하는 등 상태 변경이 수반됩니다. Resources는 에이전트가 컨텍스트를 "읽어올" 때 사용합니다 — 코드베이스, 회의록, DB 스냅샷처럼 LLM이 참조해야 할 데이터를 읽기 전용으로 제공합니다. Tools는 모델이 명시적으로 호출을 선택하지만, Resources는 프롬프트 컨텍스트에 직접 삽입될 수 있다는 점도 다릅니다.
Language Server Protocol(LSP) 비유: MCP는 IDE가 언어 서버와 통신하는 LSP의 메시지 흐름 설계를 재활용했습니다. VSCode가 어떤 언어의 언어 서버든 동일하게 연결하듯, MCP는 어떤 AI 클라이언트든 어떤 외부 서비스든 동일하게 연결합니다.
최신 스펙과 생태계 현황
2025년 11월 공개된 스펙(2025-11-25)에서는 Task 추상화가 새로 추가되어 비동기 서버 작업의 상태 조회와 결과 수집이 가능해졌습니다. 2026 로드맵에는 감사 로그(audit trail), SSO 통합 인증 흐름, 설정 이식성(configuration portability) 표준화가 예정되어 있어 엔터프라이즈 도입이 더욱 가속화될 전망입니다.
실전 적용
개념을 이해했다면 이제 실제 서비스에 연결해봅니다. Slack → Notion → 벡터 DB → 멀티-서버 파이프라인 순서로 단계별로 살펴봅니다.
예시 1: Slack MCP 서버 연동 — 인시던트 대응 봇
Slack은 공식 MCP 서버를 제공합니다. 아래 설정을 claude_desktop_config.json에 추가하면 Claude 에이전트가 Slack 워크스페이스에 직접 접근할 수 있습니다.
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-...",
"SLACK_TEAM_ID": "T0XXXXXXX"
}
}
}
}| 설정 항목 | 설명 |
|---|---|
command: "npx" |
별도 전역 설치 없이 패키지를 즉시 실행합니다 |
SLACK_BOT_TOKEN |
Slack App 설정 → OAuth & Permissions에서 발급한 Bot User OAuth Token (xoxb-로 시작) |
SLACK_TEAM_ID |
Slack 워크스페이스 URL(https://app.slack.com/client/T0XXXXXXX/...)에서 확인 가능한 팀 식별자 |
설정 후 사용 가능한 도구는 다음과 같습니다.
- 채널 메시지 전송 및 스레드 답글
- 키워드·타임스탬프·발신자 기반 메시지 검색
- 채널 생성 및 Canvas 관리
실전 시나리오: Hivebrite의 PEAK Days 2025 해커톤에서 Claude Code + Slack MCP 조합으로 인시던트 감지·알림·대응 자동화 에이전트를 구축했습니다. 에이전트가 모니터링 알림을 수신하면 Slack 스레드에 상황 요약을 자동 게시하고 담당자에게 멘션하는 방식입니다.
예시 2: Notion MCP 서버 연동 — 지식 베이스 에이전트
Notion 공식 MCP 서버를 통해 Claude 에이전트가 워크스페이스를 직접 조회하고 편집할 수 있습니다.
# 환경변수 설정
export NOTION_API_KEY="secret_..."
# npx로 즉시 실행
npx @notionhq/notion-mcp-server또는 claude_desktop_config.json에 통합할 수도 있습니다.
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@notionhq/notion-mcp-server"],
"env": {
"NOTION_API_KEY": "secret_..."
}
}
}
}참고:
NOTION_DB_ID환경변수는 공식@notionhq/notion-mcp-server문서에 명시되어 있지 않습니다. 특정 데이터베이스에 접근하려면 에이전트 프롬프트에 직접 DB ID를 전달하거나, 서버가 제공하는 검색 도구를 통해 찾는 방식을 활용하는 것이 좋습니다.
| 사용 가능한 작업 | 설명 |
|---|---|
| 페이지 검색 및 생성 | 키워드·날짜 기반 페이지 검색, 새 페이지 작성 |
| 데이터베이스 쿼리 | 필터·정렬 조건으로 DB 레코드 조회 |
| 블록 추가·수정 | 페이지 내 콘텐츠 블록 편집 |
| 코멘트 작성 | 페이지 또는 블록에 코멘트 추가 |
실전 시나리오: "지난 달 스프린트 회고 내용을 요약해서 #general 채널에 올려줘"라는 요청 한 줄로, 에이전트가 Notion에서 해당 페이지를 검색·읽고 요약한 뒤 Slack으로 게시하는 멀티-서버 파이프라인이 동작합니다. 이를 위해서는 claude_desktop_config.json에 Slack과 Notion 서버를 모두 등록해두면 됩니다.
예시 3: 벡터 DB MCP 서버 연동 — RAG 파이프라인
시맨틱 검색과 RAG(Retrieval-Augmented Generation) 파이프라인을 위한 벡터 DB 연동입니다.
RAG (Retrieval-Augmented Generation): LLM이 응답을 생성하기 전에 외부 문서 저장소에서 관련 정보를 검색해 컨텍스트로 주입하는 기법입니다. 벡터 DB MCP 서버를 활용하면 에이전트가 직접 검색 단계를 수행할 수 있습니다.
Pinecone MCP 설정:
{
"mcpServers": {
"pinecone": {
"command": "npx",
"args": ["-y", "@pinecone-database/mcp"],
"env": {
"PINECONE_API_KEY": "...",
"PINECONE_INDEX_NAME": "knowledge-base"
}
}
}
}Qdrant MCP 설정 (로컬 인스턴스):
# Docker로 Qdrant 실행
docker run -p 6333:6333 qdrant/qdrant
# MCP 서버 연결
npx @qdrant/mcp-server --qdrant-url http://localhost:6333| 벡터 DB | 특징 | MCP 서버 성숙도 | 추천 용도 |
|---|---|---|---|
| Pinecone | 완전 관리형, 빠른 시작 | ★★★★★ (공식) | 프로덕션 빠른 도입 |
| Qdrant | 오픈소스, 정밀 필터링 | ★★★★★ (공식) | 복잡한 메타데이터 필터링 |
| pgvector | 기존 PostgreSQL 활용 | ★★★☆☆ (커뮤니티) | 레거시 RDB 인프라 재활용 |
| Weaviate | 풍부한 데이터 모델링 | ★★★★☆ (공식) | 복합 데이터 구조 |
| Chroma | 로컬 개발 최적 | ★★★☆☆ | 프로토타이핑 |
예시 4: 멀티-서버 에이전트 파이프라인 구축
지금까지 개별 서버 설정을 살펴봤다면, 이제 Anthropic Python SDK를 사용해 여러 MCP 서버를 하나의 에이전트에 동시에 연결하는 방법을 살펴봅니다. Claude Desktop 설정 파일 없이도 코드에서 직접 MCP 서버를 제어하고 싶을 때 유용한 방식입니다.
# 필요 패키지 설치 (anthropic SDK 0.40+)
pip install anthropicimport anthropic
client = anthropic.Anthropic()
# 연결할 MCP 서버 목록 정의
mcp_servers = [
{
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-...",
"SLACK_TEAM_ID": "T0XXXXXXX"
}
},
{
"type": "stdio",
"command": "npx",
"args": ["-y", "@notionhq/notion-mcp-server"],
"env": {
"NOTION_API_KEY": "secret_..."
}
},
{
"type": "stdio",
"command": "npx",
"args": ["-y", "@qdrant/mcp-server",
"--qdrant-url", "http://localhost:6333"]
}
]
# mcp_servers를 API 호출에 직접 전달하는 것이 핵심
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
mcp_servers=mcp_servers, # 정의한 서버 목록을 여기서 전달
messages=[{
"role": "user",
"content": "Notion에서 Q1 보고서를 찾아서 요약한 뒤 #general 채널에 게시해줘"
}]
)
print(response.content)코드 동작 흐름 설명:
mcp_servers 리스트를 client.beta.messages.create()에 직접 전달하는 것이 이 코드의 핵심입니다. API 호출 시점에 Claude가 각 서버에 연결해 Slack·Notion·Qdrant의 사용 가능한 도구 목록을 자동으로 파악합니다. 이후 Claude는 태스크를 완료하기 위해 다음 순서로 동작합니다.
- Notion MCP 또는 Qdrant MCP에서 "Q1 보고서" 관련 문서를 시맨틱 검색합니다.
- 검색된 내용을 읽고 요약을 생성합니다.
- Slack MCP의 메시지 전송 도구를 호출해 #general 채널에 게시합니다.
개발자가 도구 호출 순서를 직접 코딩할 필요 없이, Claude가 목표에 맞게 자율적으로 순서를 결정합니다.
주의: 위 예시는 에러 핸들링을 포함하지 않습니다. 실제 운영 환경에서는 환경변수 미설정, 네트워크 오류, API 호출 한도 초과 같은 상황을
anthropic.APIError예외 처리와 환경변수 유효성 검사로 대비하는 것이 좋습니다.
장단점 분석
장점
| 항목 | 내용 |
|---|---|
| 통합 복잡도 감소 | Slack·Notion·벡터 DB 각각의 API 클라이언트, 인증 로직, 에러 핸들링을 개별 구현할 필요 없이 단일 표준으로 대체할 수 있습니다 |
| 에이전트 정확도 향상 | 실시간 데이터 접근으로 환각(hallucination) 발생률이 낮아지고, 복잡한 태스크에서의 정확도가 개선됩니다 |
| 공급업체 중립성 | Claude뿐 아니라 ChatGPT, Gemini, Cursor 등 다양한 클라이언트에서 동일한 MCP 서버를 재사용할 수 있습니다 |
| 오픈 거버넌스 | Linux Foundation 산하 AAIF로 이관되어 단일 기업 통제가 아닌 커뮤니티 기반 발전 구조를 갖췄습니다 |
| 풍부한 생태계 | 공개 서버 1만 개 이상, Notion·Slack·GitHub·Stripe 등 주요 서비스의 공식 서버가 제공됩니다 |
단점 및 주의사항
| 항목 | 내용 | 대응 방안 |
|---|---|---|
| 보안 취약점 | 과잉 권한 부여, 프롬프트 인젝션, 도구 위장 공격 위험 | 최소 권한 원칙 적용, 서드파티 서버 보안 리뷰 후 사용 |
| 스펙 성숙도 | 빠른 스펙 변화로 버전 간 통합 불일치 발생 가능 | 공식 SDK 버전 고정, 변경 로그 정기 모니터링 |
| 컨텍스트 소비 | 10개 이상 MCP 서버 동시 연결 시 도구 정의만으로도 컨텍스트 대량 소모 | 실제로 필요한 서버만 선택적으로 연결 |
| 레이턴시 | 원격 MCP 서버(HTTP+SSE)는 네트워크 왕복 지연 발생 | 실시간 앱은 stdio 방식 또는 로컬 서버 우선 검토 |
| 커버리지 공백 | 레거시·내부 시스템은 MCP 서버가 없어 직접 구현 필요 | FastMCP 프레임워크로 커스텀 서버 빠르게 개발 |
프롬프트 인젝션 (Prompt Injection): 신뢰할 수 없는 외부 입력이 AI 에이전트의 지시 내용을 덮어쓰거나 조작하는 공격입니다. MCP 서버가 반환하는 데이터에 악의적인 지시문이 포함될 경우 에이전트가 의도치 않은 동작을 수행할 수 있으므로, 외부 소스 데이터는 신뢰 수준을 명시적으로 구분하는 것이 좋습니다.
실무에서 가장 흔한 실수
- 모든 MCP 서버를 한꺼번에 연결하는 것: 서버 수가 많아질수록 도구 정의가 컨텍스트 윈도우를 잠식합니다. 태스크별로 필요한 서버만 선택적으로 활성화하는 방식을 활용하는 것이 좋습니다. 10개 서버를 동시에 연결했을 때 실제 대화에 쓸 수 있는 컨텍스트가 크게 줄어드는 경험을 하게 됩니다.
- 서드파티 서버를 보안 검토 없이 사용하는 것: 커뮤니티 빌드 서버는 보안 리뷰가 없는 경우가 많습니다. 엔터프라이즈 환경에서는 공식 또는 공인된 서버만 사용하거나 내부 코드 리뷰를 거치는 것이 좋습니다. 서버가 반환하는 데이터가 프롬프트 인젝션을 포함할 수 있다는 점도 염두에 두면 좋습니다.
- 환경변수에 시크릿을 하드코딩하는 것:
SLACK_BOT_TOKEN같은 민감한 키는 반드시 시크릿 매니저나.env파일로 분리하고, 설정 파일을 버전 관리에 포함시키지 않도록 주의가 필요합니다.claude_desktop_config.json파일도 예외가 아닙니다.
마치며
MCP는 AI 에이전트를 고립된 두뇌에서 실제 업무 시스템과 연결된 동료로 바꿔주는 인프라 표준입니다.
이 글에서 다룬 핵심 내용을 정리합니다.
- MCP는 USB-C와 같다: AI 클라이언트와 외부 서비스 간 단일 표준 인터페이스로, Slack이든 Notion이든 벡터 DB든 동일한 방식으로 연결됩니다.
- 세 가지 프리미티브의 역할이 다르다: Tools는 실행·상태 변경, Resources는 읽기 전용 데이터 주입, Prompts는 재사용 가능한 템플릿입니다.
- 트랜스포트는 환경에 맞게 선택한다: 로컬 개발에는 stdio, 클라우드 서비스 연동에는 HTTP+SSE가 적합합니다.
- 보안이 가장 중요한 주의사항이다: 최소 권한 원칙, 서드파티 서버 리뷰, 시크릿 분리는 운영 환경 전에 반드시 점검해야 합니다.
- 생태계는 이미 성숙했다: 주요 서비스의 공식 서버가 갖춰져 있어 지금 바로 시작할 수 있습니다.
지금 바로 시작해볼 수 있는 3단계입니다.
- Claude Desktop에 Slack MCP 서버를 연결해봅니다.
claude_desktop_config.json에@modelcontextprotocol/server-slack설정을 추가하고, Claude에게 "오늘 #general 채널의 최근 메시지 5개를 요약해줘"라고 요청해보는 것부터 시작할 수 있습니다. - Notion MCP를 추가해 멀티-서버 파이프라인을 경험해봅니다. 같은 설정 파일에
@notionhq/notion-mcp-server를 추가하면, Claude가 두 서비스를 넘나들며 작업하는 모습을 직접 확인할 수 있습니다. - 로컬 Qdrant 또는 Pinecone으로 간단한 RAG 파이프라인을 구성해봅니다. 사내 문서를 임베딩해 벡터 DB에 저장하고, MCP를 통해 에이전트가 시맨틱 검색으로 답변을 생성하도록 구성하면 실전 수준의 지식 베이스 에이전트를 경험할 수 있습니다.
다음 글: FastMCP 프레임워크로 사내 레거시 시스템을 위한 커스텀 MCP 서버를 10분 만에 개발하는 방법을 다룰 예정입니다.
참고 자료
공식 스펙 및 발표
- Introducing the Model Context Protocol | Anthropic
- MCP 공식 스펙 (2025-11-25) | modelcontextprotocol.io
- MCP 1주년 및 스펙 릴리스 노트 | MCP 공식 블로그
- 2026 MCP 로드맵 | MCP 공식 블로그
- MCP Reference Servers | GitHub (modelcontextprotocol/servers)
서비스별 문서
- Slack MCP Server 공식 문서 | Slack Developer Docs
- Connect to Claude via Slack MCP | Slack Developer Docs
- The Ultimate Guide to the Official Notion MCP Server | Skywork AI
- Pinecone MCP Server 공식 문서 | Pinecone
- Integrating MCP with Vector Databases: Pinecone, Weaviate, and Qdrant | Markaicode
가이드 및 사례 연구
- The Complete Guide to MCP Enterprise Adoption | Deepak Gupta
- 2026: The Year for Enterprise-Ready MCP Adoption | CData
- How to Connect to the Slack MCP with Claude Code | Merge.dev
- A Practical Guide to MCP | Medium (SarahW)
- MCP(모델 컨텍스트 프로토콜) 개요·아키텍처 가이드 | Mimul Tech Blog
- Model Context Protocol | Wikipedia