Skip to main content
Glama
gayatrianne

langgraph-mcp-aws-dynamodb-agent

by gayatrianne

LangGraph MCP AWS DynamoDB CRM Agent

Galaxy Telecom — 표준화된 AI 도구 통합 via Model Context Protocol

MCP(Model Context Protocol) 통합을 입증하는 프로덕션급 AI 에이전트 — LangGraph 에이전트를 표준화된 도구 프로토콜을 통해 AWS DynamoDB의 라이브 CRM 데이터에 연결합니다. 맞춤형 통합 대신 표준화된 프로토콜을 사용합니다.

📄 포트폴리오 문서 (PDF) — 아키텍처, AWS DynamoDB 설정 및 샘플 상호작용을 포함한 전체 문서


개요

CRM 데이터가 필요한 기존 AI 에이전트는 하드코딩된 통합이 필요합니다 — 모든 외부 시스템에 대해 에이전트 로직에 밀접하게 결합된 맞춤형 코드가 필요합니다. 이 프로젝트는 더 나은 접근 방식을 보여줍니다: 에이전트가 런타임에 Python MCP 서버에 연결하고, 사용 가능한 도구를 동적으로 발견하며, AWS DynamoDB에서 라이브 고객 계정 및 티켓 데이터를 검색하기 위해 해당 도구를 호출합니다 — 에이전트에 하드코딩된 통합 로직이 전혀 없습니다.


Related MCP server: Agorus MCP Server

MCP란 무엇인가?

MCP(Model Context Protocol)는 Anthropic이 도입한 개방형 표준으로, AI 에이전트가 외부 도구 및 데이터 소스에 연결하는 방식을 정의합니다. 이는 AI 에이전트에 대한 REST API가 웹 서비스에 대한 것과 같습니다 — 모든 통합에 맞춤형 어댑터 없이 상호운용성을 가능하게 하는 범용 계약입니다.

핵심 기능은 런타임 도구 발견입니다. 에이전트는 시작 시 어떤 도구가 존재하는지 알지 못합니다. MCP 서버에 연결하여 "무엇을 할 수 있나요?"라고 질문합니다. 서버는 도구 이름, 설명 및 입력 스키마로 응답합니다. 에이전트는 고객 쿼리에 따라 호출할 도구를 결정합니다.


아키텍처

Customer CLI Input
        │
        ▼
┌─────────────────────┐
│   LangGraph Agent   │  ← ReAct pattern, Claude Haiku (Anthropic API)
│   (crm_agent.py)    │
└──────────┬──────────┘
           │ MCP protocol — stdio transport
           │ Runtime tool discovery via get_tools()
           ▼
┌─────────────────────┐
│    MCP Server       │  ← FastMCP, Python
│    (server.py)      │
│                     │
│  get_customer_      │  ← queries CustomerAccounts table
│  account()          │
│                     │
│  get_open_          │  ← queries SupportTickets table
│  tickets()          │
└──────────┬──────────┘
           │ boto3
           ▼
┌─────────────────────┐
│   AWS DynamoDB      │  ← eu-west-1
│                     │
│ GalaxyTelecom_      │
│ CustomerAccounts    │
│                     │
│ GalaxyTelecom_      │
│ SupportTickets      │
└─────────────────────┘

MCP 도구 정의

도구는 @server.tool() 데코레이터를 사용하여 MCP 서버에 등록됩니다. 에이전트는 이러한 함수에 대해 알지 못합니다 — 런타임에 프로토콜을 통해 정의를 동적으로 수신합니다.

@server.tool()
def get_customer_account(customer_id: str) -> str:
    """
    Retrieve a Galaxy Telecom customer account from DynamoDB.
    Returns account details including plan, status, and balance due.
    """
    ...

@server.tool()
def get_open_tickets(customer_id: str) -> str:
    """
    Retrieve all open support tickets for a Galaxy Telecom customer.
    Returns a list of tickets with issue type, description, status and priority.
    """
    ...

DynamoDB를 Salesforce 또는 Dynamics로 교체하려면 새로운 MCP 서버 구현만 필요합니다. 에이전트 코드는 완전히 변경되지 않은 상태로 유지됩니다 — 프로토콜의 이식성 이점을 보여줍니다.


AWS DynamoDB 테이블

GalaxyTelecom_CustomerAccounts

  • 파티션 키: customer_id

  • 저장 데이터: 이름, 이메일, 요금제, 월 요금, 계정 상태, 미납 잔액, 가입일

GalaxyTelecom_SupportTickets

  • 파티션 키: customer_id, 정렬 키: ticket_id

  • 저장 데이터: 이슈 유형, 설명, 상태, 접수일, 담당 팀, 우선순위

  • 복합 키를 통해 한 번의 쿼리로 고객의 모든 티켓을 검색할 수 있습니다


샘플 상호작용

연체 계정 및 미해결 티켓 (C001)

Customer ID : C001
Message     : Hi, I wanted to check on my account and see if there are any issues.

[MCP] Tools discovered: ['get_customer_account', 'get_open_tickets']

Response: Hi John, I can see your account is overdue with a balance of £47.50.
You have 2 open tickets — a billing query (T001, medium priority) and
broadband dropouts (T002, high priority, in progress with Technical Support)...

활성 계정, 기존 기술 티켓 (C002)

Customer ID : C002
Message     : I have been having some signal issues at home, can you help?

Response: Hello Sarah! I can see you're on our EliteMax plan with no balance due.
You've already raised ticket T003 regarding weak 5G signal — an engineer
visit has been requested, marked medium priority...

잘못된 고객 ID — 우아한 오류 처리

Customer ID : 99
Message     : I have been having some signal issues at home, can you help?

Response: I'm unable to locate a Galaxy Telecom account associated with
Customer ID 99. The ID may have been entered incorrectly...

기술 스택

구성 요소

기술

에이전트 오케스트레이션

LangGraph(ReAct 패턴)

LLM 프레임워크

LangChain

LLM 제공자

Anthropic Claude Haiku API

MCP 프로토콜

Model Context Protocol (FastMCP)

MCP 어댑터

langchain-mcp-adapters

CRM 데이터 저장소

AWS DynamoDB (eu-west-1)

AWS SDK

boto3

언어

Python 3.11+


프로젝트 구조

langgraph-mcp-aws-dynamodb-agent/
├── agent/
│   ├── __init__.py
│   └── crm_agent.py        # LangGraph ReAct agent — connects to MCP server
├── dynamo/
│   ├── __init__.py
│   └── seed_data.py        # Creates DynamoDB tables and seeds mock CRM data
├── mcp_server/
│   ├── __init__.py
│   └── server.py           # MCP server — exposes CRM tools backed by DynamoDB
├── main.py                 # Interactive CLI entry point
├── requirements.txt
├── .env.example            # Environment variable template
└── .gitignore

설치 및 실행

사전 요구사항

  • Python 3.11+

  • Anthropic API 키

  • CLI가 구성된 AWS 계정 (aws configure)

  • DynamoDB 읽기/쓰기 권한이 있는 IAM 사용자

설치

# Clone the repository
git clone https://github.com/gayatrianne/langgraph-mcp-aws-dynamodb-agent.git
cd langgraph-mcp-aws-dynamodb-agent

# Create and activate virtual environment
python -m venv venv
venv\Scripts\activate        # Windows
source venv/bin/activate     # macOS/Linux

# Install dependencies
pip install -r requirements.txt

# Configure environment variables
cp .env.example .env
# Edit .env and add your Anthropic API key

환경 변수

# Anthropic
ANTHROPIC_API_KEY=your_key_here

# AWS — credentials come from AWS CLI profile (aws configure)
AWS_REGION=eu-west-1

# DynamoDB table names
CUSTOMER_TABLE=GalaxyTelecom_CustomerAccounts
TICKETS_TABLE=GalaxyTelecom_SupportTickets

# LLM Configuration
CLAUDE_MODEL=claude-haiku-4-5-20251001
CLAUDE_TEMPERATURE=0.3

DynamoDB 테이블 생성

에이전트를 시작하기 전에 한 번 실행하세요:

python dynamo/seed_data.py

이 명령은 eu-west-1에 두 DynamoDB 테이블을 생성하고 Galaxy Telecom 고객 레코드 및 지원 티켓으로 시드합니다.

실행

python main.py

고객 ID(C001, C002, C003, C004)와 지원 메시지를 입력하세요. 에이전트가 MCP 도구를 발견하고, DynamoDB를 쿼리하며, 라이브 CRM 데이터에 기반한 개인화된 응답을 반환합니다.


주요 설계 결정

런타임 도구 발견 에이전트는 런타임에 await client.get_tools()를 호출합니다 — MCP 서버에 물어보기 전까지 어떤 도구가 존재하는지 알지 못합니다. 이것이 핵심 프로토콜 이점입니다: 에이전트가 구현으로부터 분리됩니다.

우아한 오류 처리 잘못된 고객 ID는 MCP 서버에서 구조화된 오류 JSON을 반환합니다. 에이전트는 이를 자연스럽게 해석하고 고객에게 기술적 세부사항을 노출하지 않고 적절히 응답합니다.

MCP 이식성 Salesforce, Dynamics 또는 기타 CRM으로 교체하려면 새로운 MCP 서버 구현만 필요합니다. crm_agent.py의 LangGraph 에이전트 코드는 완전히 변경되지 않은 상태로 유지됩니다 — 에이전트는 프로토콜 계층을 통해 분리됩니다.

AWS DynamoDB 데이터 모델 단일 파티션 키(customer_id)를 사용하는 테이블 설계는 지원 티켓을 위한 복합 키(customer_id + ticket_id)와 함께, 단일 쿼리로 고객의 모든 티켓을 검색할 수 있게 하여 CRM 워크로드에 효율적입니다.


입증된 기술

  • Model Context Protocol (MCP) — 표준화된 AI 도구 통합

  • 런타임 도구 발견 — 에이전트가 MCP 서버에서 도구를 동적으로 검색

  • LangGraph — ReAct 에이전트 오케스트레이션

  • AWS DynamoDB — 파티션 키와 정렬 키를 사용한 NoSQL 데이터 모델

  • boto3 — AWS SDK 통합

  • langchain-mcp-adapters — MCP 도구를 LangGraph 에이전트에 바인딩


작성자

Gayatri Anne AI 및 클라우드 아키텍트 | 엔터프라이즈 IT 18년 이상 경력

에이전틱 워크플로우, 대규모 언어 모델 및 클라우드 통합을 결합하여 비즈니스 프로세스에서 수동 작업을 제거하는 AI 기반 자동화 시스템을 구축합니다.

인증: Azure Solutions Architect Expert | Azure AI Engineer Associate | Python PCAP | TOGAF Foundation

GitHub: gayatrianne

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gayatrianne/langgraph-mcp-aws-dynamodb-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server