Skip to main content
Glama
langgraph-mcp-aws-dynamodb-agent

langgraph-mcp-aws-dynamodb-agent

by gayatrianne

LangGraph MCP AWS DynamoDB CRM Agent

Galaxy Telecom — standardisierte KI-Tool-Integration über Model Context Protocol

Ein produktionsreifer KI-Agent, der die MCP-Integration (Model Context Protocol) mit AWS DynamoDB demonstriert — ein LangGraph-Agent wird über ein standardisiertes Tool-Protokoll statt über maßgeschneiderte Sonderintegrationen mit Live-CRM-Daten verbunden.

📄 Portfoliodokument (PDF) — vollständige Ausarbeitung mit Architektur, AWS-DynamoDB-Einrichtung und Beispielinteraktionen


Überblick

Traditionelle KI-Agenten, die CRM-Daten benötigen, erfordern fest verdrahtete Integrationen — individueller Code für jedes externe System, eng an die Agentenlogik gekoppelt. Dieses Projekt demonstriert einen besseren Ansatz: Der Agent verbindet sich zur Laufzeit mit einem Python-MCP-Server, entdeckt verfügbare Tools dynamisch und ruft sie ab, um Live-Kundenkontodaten und Ticketdaten aus AWS DynamoDB zu erhalten — ohne fest verdrahtete Integrationslogik im Agenten.


Related MCP server: Agorus MCP Server

Was ist MCP?

MCP (Model Context Protocol) ist ein von Anthropic eingeführter offener Standard, der definiert, wie KI-Agenten sich mit externen Tools und Datenquellen verbinden. Es verhält sich zu KI-Agenten wie REST-APIs zu Webservices — ein universeller Vertrag, der Interoperabilität ohne Spezialadapter für jede Integration ermöglicht.

Die zentrale Fähigkeit ist die Tool-Erkennung zur Laufzeit. Der Agent weiß beim Start nicht, welche Tools existieren. Er verbindet sich mit dem MCP-Server und fragt: „Was kannst du?" Der Server antwortet mit Tool-Namen, Beschreibungen und Eingabeschemas. Der Agent entscheidet dann anhand der Kundenanfrage, welche Tools er aufruft.


Architektur

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-Tooldefinition

Tools werden auf dem MCP-Server mit dem @server.tool()-Dekorator registriert. Der Agent hat keinerlei Kenntnis dieser Funktionen — er erhält ihre Definitionen dynamisch über das Protokoll zur Laufzeit.

@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.
    """
    ...

Das Ersetzen von DynamoDB durch Salesforce oder Dynamics erfordert lediglich eine neue MCP-Serverimplementierung. Der Agentencode bleibt vollständig unverändert — was den Portabilitätsvorteil des Protokolls demonstriert.


AWS-DynamoDB-Tabellen

GalaxyTelecom_CustomerAccounts

  • Partitionsschlüssel: customer_id

  • Speichert: Name, E-Mail, Tarif, monatliche Gebühr, Kontostatus, fälliger Saldo, Mitglied seit

GalaxyTelecom_SupportTickets

  • Partitionsschlüssel: customer_id, Sortierschlüssel: ticket_id

  • Speichert: Problemtyp, Beschreibung, Status, Erfassungsdatum, zugewiesenes Team, Priorität

  • Zusammengesetzter Schlüssel ermöglicht das Abrufen aller Tickets eines Kunden in einer einzigen Abfrage


Beispielinteraktionen

Überfälliges Konto mit offenen Tickets (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)...

Aktives Konto, bestehendes technisches Ticket (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...

Ungültige Kunden-ID — saubere Fehlerbehandlung

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...

Technologie-Stack

Komponente

Technologie

Agenten-Orchestrierung

LangGraph (ReAct-Muster)

LLM-Framework

LangChain

LLM-Anbieter

Anthropic Claude Haiku API

MCP-Protokoll

Model Context Protocol (FastMCP)

MCP-Adapter

langchain-mcp-adapters

CRM-Datenspeicher

AWS DynamoDB (eu-west-1)

AWS-SDK

boto3

Sprache

Python 3.11+


Projektstruktur

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

Einrichtung und Installation

Voraussetzungen

  • Python 3.11+

  • Anthropic-API-Schlüssel

  • AWS-Konto mit konfigurierter CLI (aws configure)

  • IAM-Benutzer mit Lese-/Schreibberechtigungen für DynamoDB

Installation

# 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

Umgebungsvariablen

# 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-Tabellen befüllen

Einmalig ausführen, bevor der Agent gestartet wird:

python dynamo/seed_data.py

Dies erstellt beide DynamoDB-Tabellen in eu-west-1 und befüllt sie mit Beispieldaten für Galaxy-Telecom-Kunden und Support-Tickets.

Ausführen

python main.py

Geben Sie eine Kunden-ID (C001, C002, C003, C004) und eine Support-Nachricht ein. Der Agent erkennt MCP-Tools, fragt DynamoDB ab und liefert eine personalisierte Antwort auf Basis der Live-CRM-Daten.


Zentrale Designentscheidungen

Tool-Erkennung zur Laufzeit über MCP Der Agent ruft zur Laufzeit await client.get_tools() auf — er weiß nicht, welche Tools existieren, bis er den MCP-Server fragt. Dies ist der zentrale Protokollvorteil: Der Agent ist von der Implementierung entkoppelt.

Saubere Fehlerbehandlung Ungültige Kunden-IDs liefern strukturiertes Fehler-JSON vom MCP-Server. Der Agent interpretiert dies natürlich und antwortet hilfreich, ohne dem Kunden technische Details preiszugeben.

MCP-Portabilität Das Ersetzen von DynamoDB durch Salesforce, Dynamics oder ein beliebiges anderes CRM erfordert nur eine neue MCP-Serverimplementierung. Der LangGraph-Agentencode in crm_agent.py bleibt vollständig unverändert — der Agent ist durch die Protokollschicht von der Datenquelle entkoppelt.

AWS-DynamoDB-Datenmodell CustomerAccounts verwendet einen einzelnen Partitionsschlüssel (customer_id). SupportTickets verwendet einen zusammengesetzten Schlüssel (customer_id + ticket_id) — so kann eine einzige Abfrage alle Tickets eines Kunden zurückgeben, was reale CRM-Datenzugriffsmuster widerspiegelt.


Demonstrierte Fähigkeiten

  • Model Context Protocol (MCP) — standardisierte KI-Tool-Integration

  • Tool-Erkennung zur Laufzeit — Agent erkennt Tools dynamisch, keine Festverdrahtung

  • LangGraph-Agenten-Orchestrierung — ReAct-Muster mit externem Tool-Aufruf

  • AWS DynamoDB — NoSQL-CRM-Datenspeicher mit Partitions- und Sortierschlüsseln

  • boto3 — AWS-SDK für Python

  • FastMCP — Python-MCP-Server-Framework

  • Saubere Fehlerbehandlung — strukturierte MCP-Fehlerantworten

  • Externalisierte Konfiguration — Modell und Region über Umgebungsvariablen


Autorin

Gayatri Anne KI- und Cloud-Architektin | 18+ Jahre Enterprise-IT

Ich entwickle KI-gestützte Automatisierungssysteme, die manuelle Arbeit aus Geschäftsprozessen eliminieren — durch die Kombination von agentischen Workflows, großen Sprachmodellen und Cloud-Integration für produktionsreife Lösungen.

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

GitHub: gayatrianne

Related MCP Connectors

Related MCP Servers