Skip to content

teddynote-lab/langgraph-mcp-agent-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LangGraph MCP Agent Template

LangGraph와 OpenRouter를 활용한 Model Context Protocol(MCP) 통합 ReAct 에이전트 템플릿입니다.

개요

이 템플릿은 MCP(Model Context Protocol) 도구를 동적으로 로드하고 활용할 수 있는 지능형 에이전트를 구축하기 위한 프로덕션 준비된 기반을 제공합니다. LangGraph의 create_react_agent를 기반으로 구축되어 OpenRouter를 통한 다양한 AI 모델과의 원활한 통합과 유연한 MCP 서버 구성을 지원합니다.

주요 기능

  • 동적 MCP 도구 로딩: 구성된 서버에서 MCP 도구를 자동으로 탐지하고 로드
  • 다중 모델 지원: OpenRouter API를 통한 다양한 AI 모델 지원
  • 유연한 구성: 합리적인 기본값을 가진 환경 기반 구성
  • ReAct 에이전트 패턴: 복잡한 문제 해결을 위한 추론 및 행동 패턴 구현
  • 프로덕션 준비: 포괄적인 오류 처리 및 로깅
  • 확장 가능한 아키텍처: 사용자 정의 도구 추가 및 동작 수정 용이

전제 조건

  • Python 3.11 이상
  • uv 패키지 매니저
  • OpenRouter API 키
  • LangGraph 및 MCP 개념에 대한 기본 이해

설치

1. uv 패키지 매니저 설치

macOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

대안 (pip를 통한 설치):

pip install uv

2. 프로젝트 클론 및 설정

git clone https://github.com/teddynote-lab/langgraph-mcp-agent-template.git
cd langgraph-mcp-agent-template
uv sync

구성

환경 변수

프로젝트 루트에 .env 파일을 생성합니다:

cp .env.example .env

다음 변수들을 구성합니다:

# 필수: OpenRouter API 구성
OPENROUTER_API_KEY=your_openrouter_api_key_here
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1

# 선택사항: LangSmith 추적 (개발 시 권장)
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=your_langsmith_api_key
LANGSMITH_PROJECT=LangGraph-MCP-Agent-Template

# 선택사항: 기본 모델 재정의
MODEL=anthropic/claude-3-5-sonnet-20241022

# 선택사항: 사용자 정의 MCP 구성 경로
MCP_CONFIG_PATH=mcp_config.json

MCP 서버 구성

mcp_config.json에서 MCP 서버를 구성합니다:

{
  "weather": {
    "command": "uv",
    "args": ["run", "python", "server/mcp_server_local.py"],
    "transport": "stdio"
  },
  "web_search": {
    "url": "https://api.example.com/mcp",
    "transport": "streamable_http"
  }
}

구성 옵션

로컬 MCP 서버 (stdio 전송):

{
  "server_name": {
    "command": "python",
    "args": ["path/to/server.py"],
    "transport": "stdio"
  }
}

원격 MCP 서버 (HTTP 전송):

{
  "server_name": {
    "url": "https://api.example.com/mcp",
    "transport": "streamable_http"
  }
}

사용법

개발 서버 시작

uv run langgraph dev

이 명령어는 LangGraph 개발 서버를 시작하고 자동으로:

  • 구성된 서버에서 MCP 도구를 로드
  • 선택된 모델로 ReAct 에이전트를 초기화
  • LangGraph Studio 인터페이스를 실행

에이전트 액세스

  1. 제공된 URL(일반적으로 https://smith.langchain.com/studio/...)로 브라우저를 열기
  2. LangGraph Studio 인터페이스를 사용하여 에이전트와 상호작용
  3. 에이전트는 구성된 모든 MCP 도구에 자동으로 액세스 가능

상호작용 예시

사용자: 서울의 날씨는 어떤가요?
에이전트: 서울의 날씨를 확인해드리겠습니다.

[도구 호출: weather_check with location="Seoul"]
[도구 응답: "서울은 현재 맑고 기온은 22°C입니다"]

현재 서울은 맑은 날씨이며 기온은 22°C입니다.

아키텍처

프로젝트 구조

langgraph-mcp-agent-template/
├── src/mcp_agent/
│   ├── __init__.py          # 패키지 초기화
│   ├── context.py           # 구성 및 컨텍스트 관리
│   ├── graph.py             # 메인 에이전트 그래프 정의
│   ├── prompts.py           # 시스템 프롬프트 및 템플릿
│   ├── state.py             # 상태 관리 스키마
│   ├── tools.py             # MCP 도구 로딩 및 관리
│   └── utils.py             # 유틸리티 함수
├── server/
│   └── mcp_server_local.py  # 예시 로컬 MCP 서버
├── mcp_config.json          # MCP 서버 구성
├── langgraph.json           # LangGraph 프로젝트 구성
├── pyproject.toml           # 프로젝트 의존성
└── .env.example             # 환경 변수 템플릿

핵심 컴포넌트

컨텍스트 관리 (context.py)

  • 구성 매개변수 관리
  • 환경 변수 주입 처리
  • 타입 안전 구성 액세스 제공

도구 로딩 (tools.py)

  • 구성된 서버에서 MCP 도구를 동적으로 로드
  • stdio 및 HTTP 전송 프로토콜 모두 처리
  • 오류 복원력 및 폴백 메커니즘 제공

에이전트 그래프 (graph.py)

  • create_react_agent를 사용한 ReAct 패턴 구현
  • MCP 도구를 추론 루프와 통합
  • 포괄적인 오류 처리 제공

구성 우선순위

시스템은 다음과 같은 구성 우선순위 순서를 따릅니다:

  1. 명시적 생성자 인수 (최고 우선순위)
  2. 환경 변수 (대문자 필드명)
  3. 기본값 (데이터클래스 필드에 정의됨)

예시:

# 환경 변수 MODEL이 기본값보다 우선
# export MODEL="openai/gpt-4-turbo"
context = Context()  # 환경에서 MODEL 사용

# 명시적 인수가 환경보다 우선
context = Context(model="anthropic/claude-3-haiku")

개발

사용자 정의 MCP 서버 추가

  1. MCP 서버 구현 생성
  2. mcp_config.json에 서버 구성 추가
  3. 개발 서버 재시작

에이전트 동작 수정

src/mcp_agent/prompts.py에서 시스템 프롬프트를 편집합니다:

SYSTEM_PROMPT = """
당신은 다양한 도구에 접근할 수 있는 도움이 되는 어시스턴트입니다.
사용 가능한 도구를 활용하여 정확하고 도움이 되는 응답을 제공하세요.
"""

디버깅

환경 변수를 설정하여 상세한 로깅을 활성화합니다:

export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY=your_key
uv run langgraph dev

지원 모델

템플릿은 OpenRouter를 통해 사용 가능한 모든 모델을 지원합니다.

주요 선택지는 다음과 같습니다.

  • openai/gpt-4.1 (기본값)
  • anthropic/claude-sonnet-4
  • google/gemini-2.5-flash
  • qwen/qwen3-30b-a3b

OpenRouter 페이지에서 모델을 확인할 수 있습니다. OpenRouter Models

문제 해결

일반적인 문제

MCP 서버 연결 실패:

❌ MCP 도구 로드 실패: unhandled errors in a TaskGroup
  • mcp_config.json에서 MCP 서버 구성 확인
  • 서버 명령어/URL이 접근 가능한지 확인
  • 상세한 오류 정보를 위해 서버 로그 확인

OpenRouter 인증 실패:

❌ 에이전트 실행 실패: Unauthorized
  • .env 파일에서 OPENROUTER_API_KEY 확인
  • API 키가 충분한 크레딧/권한을 가지고 있는지 확인

도구 로딩 문제:

⚠️ MCP 설정 파일 없음: mcp_config.json
  • 프로젝트 루트에 mcp_config.json 생성
  • 파일 형식이 유효한 JSON인지 확인
  • 파일 권한 확인

도움 요청

  1. LangGraph 문서 확인
  2. MCP 사양 검토
  3. 상세한 오류 정보를 위해 서버 로그 검토
  4. 요청 디버깅을 위해 LangSmith 추적 활성화

기여

기여를 환영합니다! 다음 가이드라인을 따라주세요:

  1. 저장소를 포크
  2. 기능 브랜치 생성
  3. 적절한 테스트와 함께 변경사항 작성
  4. 명확한 설명과 함께 풀 리퀘스트 제출

개발 설정

git clone https://github.com/teddynote-lab/langgraph-mcp-agent-template.git
cd langgraph-mcp-agent-template
uv sync --dev
uv run pytest  # 테스트 실행 (사용 가능한 경우)

라이센스

MIT License


made by teddynote LAB

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages