Skip to main content
Glama
gayatrianne

langgraph-mcp-aws-dynamodb-agent

by gayatrianne

LangGraph MCP AWS DynamoDB CRM Agent

Galaxy Telecom — Стандартизированная интеграция AI-инструментов через Model Context Protocol

Подготовленный к продакшену ИИ-агент, демонстрирующий MCP-интеграцию (Model Context Protocol) с AWS DynamoDB: подключение агента LangGraph к актуальным данным CRM через стандартизированный протокол инструментов, а не через разрозненные кастомные интеграции.

📄 Портфолио (PDF) — полное описание с архитектурой, настройкой AWS DynamoDB и примерами взаимодействия


Обзор

Традиционным ИИ-агентам для доступа к данным CRM требуются жестко прописанные интеграции — отдельный код для каждой внешней системы, тесно связанный с логикой агента. Этот проект демонстрирует более правильный подход: агент подключается к Python MCP-серверу во время выполнения, динамически обнаруживает доступные инструменты и вызывает их для получения актуальных данных об аккаунтах и тикетах клиентов из AWS DynamoDB — без единой жестко прописанной интеграционной логики в самом агенте.


Related MCP server: Agorus MCP Server

Что такое MCP?

MCP (Model Context Protocol) — открытый стандарт, представленный Anthropic, который определяет, как ИИ-агенты подключаются к внешним инструментам и источникам данных. Он для ИИ-агентов — то же, чем 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

Инструменты регистрируются на MCP-сервере с помощью декоратора @server.tool(). Агент не имеет заранее никакого знания об этих функциях — он получает их определения динамически через протокол во время выполнения.

@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

  • Содержит: name, email, rate plan, monthly charge, account status, balance due, member since

GalaxyTelecom_SupportTickets

  • Ключ партиционирования: customer_id, ключ сортировки: ticket_id

  • Содержит: issue type, description, status, date raised, assigned team, priority

  • Составной ключ позволяет получить все тикеты клиента одним запросом


Примеры взаимодействия

Просроченный аккаунт с открытыми тикетами (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...

Неверный идентификатор клиента — аккуратная обработка ошибок

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 pattern)

LLM-фреймворк

LangChain

LLM-провайдер

Anthropic Claude 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+

  • API-ключ Anthropic

  • AWS-аккаунт с настроенным CLI (aws configure)

  • Пользователь IAM с правами чтения/записи в DynamoDB

Установка

# 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

Скрипт создаёт обе таблицы DynamoDB в евро-западном регионе (eu-west-1) и наполняет их тестовыми данными клиентов Galaxy Telecom и их обращений в поддержку.

Запуск

python main.py

Введите идентификатор клиента (C001, C002, C003, C004) и обращение в поддержку. Агент самостоятельно обнаружит MCP-инструменты и Tool, выполнит запрос к DynamoDB и вернёт персонализированный ответ на основе данных клиента.


Ключевые проектные решения

Динамическое обнаружение инструментов через MCP Агент вызывает await client.get_tools() в рантайме — он не знает о существовании инструментов до того, как спросит MCP-сервер. В этом ключевое преимущество протокола: агент отделён от конкретной реализации.

Корректная обработка ошибок MCP-сервер возвращает структурированный JSON-объект с ошибкой для неверного идентификатора. Агент естественным образом интерпретирует его и даёт полезный ответ, не раскрывая клиенту технические детали.

Переносимость через MCP Замена DynamoDB на Salesforce, Dynamics или любую другую CRM требует только реализовать новый MCP-сервер. Код агента LangGraph из файла crm_agent.py остаётся при этом полностью без изменений — протокольный уровень отделяет агент от источника данных.

Модель данных AWS DynamoDB В таблице CustomerAccounts используется один ключ партиционирования (customer_id). В таблице SupportTickets — составной ключ (customer_id + ticket_id), что позволяет одним запросом получать все тикеты клиента и повторяет реальные сценарии обращения к данным CRM.


Демонстрируемые навыки

  • Model Context Protocol (MCP) — Стандартизированная интеграция AI-инструментов

  • Динамическое обнаружение инструментов — агент обнаруживает инструменты в рантайме, без жёстко заданного набора

  • LangGraph-оркестрация агентов — паттерн ReAct с обращением к внешним инструментам

  • AWS DynamoDB — NoSQL хранилище CRM-данных с ключами партиционирования и сортировки

  • boto3 — AWS SDK для Python

  • FastMCP — фреймворк для создания MCP-серверов на Python

  • Аккуратность обработка ошибок — структурированные MCP-ответы об ошибках

  • Внешние настройки: конфигурация модели и региона через переменные окружения


Автор

Gayatri Anne AI и облачный архитектор | 18+ лет в корпоративных ИТ

Я создаю системы автоматизации на основе ИИ, которые устраняются ручную работу в бизнес-процессах, сочетая агентные рабочие процессы, большие языковые модели и облачную интеграцию, и получаются на выходе готовые к продакшену решения.

Сертификаты: 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