<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Justin Castilla - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Justin Castilla - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/de/search-labs/author/justin-castilla</link>
    </image>
    <link>https://www.elastic.co/de/search-labs/author/justin-castilla</link>
    <atom:link href="https://www.elastic.co/de/search-labs/rss/author/justin-castilla.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[de]]></language>
    <lastBuildDate>Mon, 28 Sep 2026 19:53:51 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Erstellung eines LLM-Agenten-Newsrooms mit A2A-Protokoll und MCP in Elasticsearch: Teil II]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie einen spezialisierten hybriden LLM-Agenten-Newsroom aufbauen, indem Sie das A2A-Protokoll für die Agentenzusammenarbeit und MCP für den Werkzeugzugriff in Elasticsearch verwenden.]]></description>
    <content:encoded><![CDATA[<h2>A2A und MCP: Der Code in Aktion</h2><p>Dies ist der Begleitartikel zum Artikel „Erstellung eines LLM-Agent-Newsrooms mit A2A-Protokoll und MCP in Elasticsearch!“, in dem die Vorteile der Implementierung von A2A- und MCP-Architekturen innerhalb desselben Agenten erläutert wurden, um die einzigartigen Vorteile beider Frameworks voll auszuschöpfen. Ein <a href="https://github.com/justincastilla/elastic-newsroom">Repository</a> steht zur Verfügung, falls Sie die Demo selbst ausführen möchten.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt232e466d2153c764/6a17f15f631730042d585b8d/7196f004089127f83547b2e5dc3f663205cfcdce-1162x1600.png" alt="A2A- und MCP-Protokollagenten-Workflow" /><p>Lassen Sie uns gemeinsam durchgehen, wie unsere Redakteure mithilfe von A2A und MCP zusammenarbeiten, um einen Nachrichtenartikel zu erstellen. Das zugehörige Repository, um die Agenten in Aktion zu sehen, finden Sie <a href="https://github.com/justincastilla/elastic-newsroom">hier</a>.</p><h3>Schritt 1: Aufgabenstellung für die Geschichte</h3><p>Der <strong>Nachrichtenchef</strong> (in der Rolle des Auftraggebers) vergibt eine Story:</p>{
  "message_type": "task_request",
  "sender": "news_chief",
  "receiver": "reporter_agent",
  "payload": {
    "task_id": "story_renewable_energy_2024",
    "assignment": {
      "topic": "Renewable Energy Adoption in Europe",
      "angle": "Policy changes driving solar and wind expansion",
      "target_length": 1200,
      "deadline": "2025-09-30T18:00:00Z"
    }
  }
}<h3>Schritt 2: Der Reporter bittet um Recherche</h3><p>Der <strong>Reporteragent</strong> erkennt, dass er Hintergrundinformationen benötigt und delegiert diese über A2A an den <strong>Rechercheagenten</strong> :</p>{
  "message_type": "task_request",
  "sender": "reporter_agent",
  "receiver": "researcher_agent",
  "payload": {
    "task_id": "research_eu_renewable_2024",
    "parent_task_id": "story_renewable_energy_2024",
    "capability": "fact_gathering",
    "parameters": {
      "queries": [
        "EU renewable energy capacity 2024",
        "Solar installations growth Europe",
        "Wind energy policy changes 2024"
      ],
      "depth": "comprehensive"
    }
  }
}<h3>Schritt 3: Der Reporter bittet den Archivar um historischen Kontext.</h3><p>Der <strong>Reporteragent</strong> erkennt, dass ein historischer Kontext die Geschichte stärken würde. Es delegiert über A2A an den <strong>Archivagenten</strong> (basierend auf <a href="https://www.elastic.co/docs/solutions/search/elastic-agent-builder">dem A2A-Agenten von Elastic</a>), um das Elasticsearch-basierte Artikelarchiv des Newsrooms zu durchsuchen:</p>{
  "message_type": "task_request",
  "sender": "reporter_agent",
  "receiver": "archive_agent",
  "payload": {
    "task_id": "archive_search_renewable_2024",
    "parent_task_id": "story_renewable_energy_2024",
    "capability": "search_archive",
    "parameters": {
      "query": "European renewable energy policy changes and adoption trends over past 5 years",
      "focus_areas": ["solar", "wind", "policy", "Germany", "France"],
      "time_range": "2019-2024",
      "result_count": 10
    }
  }
}<h3>Schritt 4: Der Archivierungsagent verwendet den Elastic A2A-Agenten mit MCP.</h3><p>Der <strong>Archive Agent</strong> verwendet den A2A Agent von Elastic, der wiederum MCP nutzt, um auf die Elasticsearch-Tools zuzugreifen. Dies veranschaulicht die Hybridarchitektur, bei der A2A die Zusammenarbeit von Agenten ermöglicht, während MCP den Zugriff auf Werkzeuge bereitstellt:</p># Archive Agent using Elastic A2A Agent
async def search_historical_articles(self, query_params):
    # The Archive Agent sends a request to Elastic's A2A Agent
    elastic_response = await self.a2a_client.send_request(
        agent="elastic_agent",
        capability="search_and_analyze",
        parameters={
            "natural_language_query": query_params["query"],
            "index_pattern": "newsroom-articles-*",
            "filters": {
                "topics": query_params["focus_areas"],
                "date_range": query_params["time_range"]
            },
            "analysis_type": "trend_analysis"
        }
    )
    
    # Elastic's A2A Agent internally uses MCP tools:
    # - platform.core.search (to find relevant articles)
    # - platform.core.generate_esql (to analyze trends)
    # - platform.core.index_explorer (to identify relevant indices)
    
    return elastic_response<p>Der <strong>Archivagent</strong> empfängt umfassende historische Daten vom A2A-Agenten von Elastic und sendet sie an den Reporter zurück:</p>{
  "message_type": "task_response",
  "sender": "archive_agent",
  "receiver": "reporter_agent",
  "payload": {
    "task_id": "archive_search_renewable_2024",
    "status": "completed",
    "archive_data": {
      "historical_articles": [
        {
          "title": "Germany's Energiewende: Five Years of Solar Growth",
          "published": "2022-06-15",
          "key_points": [
            "Germany added 7 GW annually 2020-2022",
            "Policy subsidies drove 60% of growth"
          ],
          "relevance_score": 0.94
        },
        {
          "title": "France Balances Nuclear and Renewables",
          "published": "2023-03-20",
          "key_points": [
            "France increased renewable target to 40% by 2030",
            "Solar capacity doubled 2021-2023"
          ],
          "relevance_score": 0.89
        }
      ],
      "trend_analysis": {
        "coverage_frequency": "EU renewable stories increased 150% since 2019",
        "emerging_themes": ["policy incentives", "grid modernization", "battery storage"],
        "coverage_gaps": ["Small member states", "offshore wind permitting"]
      },
      "total_articles_found": 47,
      "search_confidence": 0.91
    }
  }
}<p>Dieser Schritt demonstriert, wie sich der A2A-Agent von Elastic in den Workflow der Nachrichtenredaktion integriert. Der Archive Agent (ein speziell für Redaktionen entwickelter Agent) koordiniert sich mit dem A2A Agent von Elastic (einem Drittanbieter-Spezialisten), um die leistungsstarken Such- und Analysefunktionen von Elasticsearch optimal zu nutzen. Der Elastic-Agent nutzt intern MCP für den Zugriff auf Elasticsearch-Tools, was die klare Trennung zwischen Agentenkoordination (A2A) und Toolzugriff (MCP) verdeutlicht.</p><h3>Schritt 5: Der Forscher nutzt MCP-Server</h3><p>Der <strong>Forschungsagent</strong> greift auf mehrere MCP-Server zu, um Informationen zu sammeln:</p># Researcher Agent using MCP to access tools
async def gather_facts(self, queries):
    results = []
    
    # Use News API MCP Server
    news_data = await self.mcp_client.invoke_tool(
        server="news_api_mcp",
        tool="search_articles",
        parameters={
            "query": queries[0],
            "date_range": "2024-01-01 to 2024-09-30",
            "sources": ["reuters", "bloomberg", "euractiv"]
        }
    )
    
    # Use Statistics MCP Server
    stats_data = await self.mcp_client.invoke_tool(
        server="eurostat_mcp",
        tool="get_energy_statistics",
        parameters={
            "metrics": ["solar_capacity_mw", "wind_capacity_mw"],
            "countries": ["EU27"],
            "year": 2024
        }
    )
    
    # Use Fact-Checking MCP Server
    verified_facts = await self.mcp_client.invoke_tool(
        server="factcheck_mcp",
        tool="verify_claims",
        parameters={
            "claims": [
                "EU solar capacity increased 40% in 2024",
                "Germany leads in wind installations"
            ]
        }
    )
    
    return self._synthesize_research(news_data, stats_data, verified_facts)<h3>Schritt 6: Der Forscher übermittelt die Daten an den Reporter.</h3><p>Der <strong>Rechercheagent</strong> sendet die umfassenden Rechercheergebnisse über A2A zurück:</p>{
  "message_type": "task_response",
  "sender": "researcher_agent",
  "receiver": "reporter_agent",
  "payload": {
    "task_id": "research_eu_renewable_2024",
    "status": "completed",
    "research_data": {
      "key_facts": [
        {
          "claim": "EU solar capacity reached 260 GW in 2024",
          "source": "Eurostat Q3 2024 Report",
          "confidence": 0.95,
          "verified": true
        },
        {
          "claim": "Germany installed 12 GW of wind capacity in 2024",
          "source": "German Federal Network Agency",
          "confidence": 0.92,
          "verified": true
        }
      ],
      "statistics": {
        "solar_growth_rate": "35%",
        "wind_growth_rate": "28%"
      },
      "sources_count": 15
    }
  }
}<h3>Schritt 7: Der Reporter schreibt einen Artikel</h3><p>Der <strong>Reporteragent</strong> nutzt die Forschungsdaten und seine eigenen LLM-Fähigkeiten, um den Artikel zu schreiben. Beim Schreiben nutzt der Reporter die MCP-Server für Stil und Vorlagen:</p># Reporter Agent writing with MCP assistance
async def write_article(self, research_data, assignment):
    # Get style guidelines via MCP
    style_guide = await self.mcp_client.get_resource(
        server="newsroom_mcp",
        resource="style://editorial/ap_style_guide"
    )
    
    # Get article template via MCP
    template = await self.mcp_client.get_resource(
        server="newsroom_mcp",
        resource="template://articles/news_story"
    )
    
    # Generate article using LLM + research + style
    draft = await self.llm.generate(
        prompt=f"""
        Write a news article following these guidelines:
        {style_guide}
        
        Using this template:
        {template}
        
        Based on this research:
        {research_data}
        
        Assignment: {assignment}
        """
    )
    
    # Self-evaluate confidence in claims
    confidence_check = await self._evaluate_confidence(draft)
    
    return draft, confidence_check<h3>Schritt 8: Geringes Vertrauen löst erneute Recherche aus</h3><p>Der <strong>Reporteragent</strong> prüft den Entwurf und stellt fest, dass eine Behauptung nur geringes Vertrauen genießt. Es sendet eine weitere Anfrage an den <strong>Forschungsagenten</strong>:</p>{
  "message_type": "collaboration_request",
  "sender": "reporter_agent",
  "receiver": "researcher_agent",
  "payload": {
    "request_type": "fact_verification",
    "claims": [
      {
        "text": "France's nuclear phase-down contributed to 15% increase in renewable capacity",
        "context": "Discussing policy drivers for renewable growth",
        "current_confidence": 0.45,
        "required_confidence": 0.80
      }
    ],
    "urgency": "high"
  }
}<p>Der <strong>Forscher</strong> überprüft die Behauptung mithilfe von Faktencheck-Servern von MCP und liefert aktualisierte Informationen zurück:</p>{
  "message_type": "collaboration_response",
  "sender": "researcher_agent",
  "receiver": "reporter_agent",
  "payload": {
    "verified_claims": [
      {
        "original_claim": "France's nuclear phase-down contributed to 15% increase...",
        "verified_claim": "France's renewable capacity increased 18% in 2024, partially offsetting reduced nuclear output",
        "confidence": 0.88,
        "corrections": "Percentage was 18%, not 15%; nuclear phase-down is gradual, not primary driver",
        "sources": ["RTE France", "French Energy Ministry Report 2024"]
      }
    ]
  }
}<h3>Schritt 9: Der Reporter überarbeitet den Text und reicht ihn beim Redakteur ein.</h3><p>Der <strong>Reporter</strong> integriert die verifizierten Fakten und sendet den fertigen Entwurf per A2A an den <strong>Redaktionsagenten</strong> :</p>{
  "message_type": "task_request",
  "sender": "reporter_agent",
  "receiver": "editor_agent",
  "payload": {
    "task_id": "edit_renewable_story",
    "parent_task_id": "story_renewable_energy_2024",
    "content": {
      "headline": "Europe's Renewable Revolution: Solar and Wind Surge 30% in 2024",
      "body": "[Full article text...]",
      "word_count": 1185,
      "sources": [/* array of sources */]
    },
    "editing_requirements": {
      "check_style": true,
      "check_facts": true,
      "check_seo": true
    }
  }
}<h3>Schritt 10: Redaktionelle Überprüfungen mithilfe von MCP-Tools</h3><p>Der <strong>Redaktionsagent</strong> nutzt mehrere MCP-Server zur Überprüfung des Artikels:</p># Editor Agent using MCP for quality checks
async def review_article(self, content):
    # Grammar and style check
    grammar_issues = await self.mcp_client.invoke_tool(
        server="grammarly_mcp",
        tool="check_document",
        parameters={"text": content["body"]}
    )
    
    # SEO optimization check
    seo_analysis = await self.mcp_client.invoke_tool(
        server="seo_mcp",
        tool="analyze_content",
        parameters={
            "headline": content["headline"],
            "body": content["body"],
            "target_keywords": ["renewable energy", "Europe", "solar", "wind"]
        }
    )
    
    # Plagiarism check
    originality = await self.mcp_client.invoke_tool(
        server="plagiarism_mcp",
        tool="check_originality",
        parameters={"text": content["body"]}
    )
    
    # Generate editorial feedback
    feedback = await self._generate_feedback(
        grammar_issues, 
        seo_analysis, 
        originality
    )
    
    return feedback<p>Der <strong>Redakteur</strong> genehmigt den Artikel und leitet ihn weiter:</p>{
  "message_type": "task_response",
  "sender": "editor_agent",
  "receiver": "reporter_agent",
  "payload": {
    "status": "approved",
    "quality_score": 9.2,
    "minor_edits": [
      "Changed 'surge' to 'increased' in paragraph 3 for AP style consistency",
      "Added Oxford comma in list of countries"
    ],
    "approved_content": "[Final edited article]"
  }
}<h3>Schritt 11: Der Herausgeber veröffentlicht über CI/CD</h3><p>Schließlich veröffentlicht der <strong>Druckeragent</strong> den genehmigten Artikel mithilfe der MCP-Server für die CMS- und CI/CD-Pipeline:</p># Publisher Agent publishing via MCP
async def publish_article(self, content, metadata):
    # Upload to CMS via MCP
    cms_result = await self.mcp_client.invoke_tool(
        server="wordpress_mcp",
        tool="create_post",
        parameters={
            "title": content["headline"],
            "body": content["body"],
            "status": "draft",
            "categories": metadata["categories"],
            "tags": metadata["tags"],
            "featured_image_url": metadata["image_url"]
        }
    )
    
    post_id = cms_result["post_id"]
    
    # Trigger CI/CD deployment via MCP
    deploy_result = await self.mcp_client.invoke_tool(
        server="cicd_mcp",
        tool="trigger_deployment",
        parameters={
            "pipeline": "publish_article",
            "environment": "production",
            "post_id": post_id,
            "schedule": "immediate"
        }
    )
    
    # Track analytics
    await self.mcp_client.invoke_tool(
        server="analytics_mcp",
        tool="register_publication",
        parameters={
            "post_id": post_id,
            "publish_time": datetime.now().isoformat(),
            "story_id": metadata["story_id"]
        }
    )
    
    return {
        "status": "published",
        "post_id": post_id,
        "url": f"https://newsroom.example.com/articles/{post_id}",
        "deployment_id": deploy_result["deployment_id"]
    }<p>Der <strong>Verlag</strong> bestätigt die Veröffentlichung via A2A:</p>{
  "message_type": "task_complete",
  "sender": "printer_agent",
  "receiver": "news_chief",
  "payload": {
    "task_id": "story_renewable_energy_2024",
    "status": "published",
    "publication": {
      "url": "https://newsroom.example.com/articles/renewable-europe-2024",
      "published_at": "2025-09-30T17:45:00Z",
      "post_id": "12345"
    },
    "workflow_metrics": {
      "total_time_minutes": 45,
      "agents_involved": ["reporter", "researcher", "archive", "editor", "printer"],
      "iterations": 2,
      "mcp_calls": 12
    }
  }
}<p>Hier ist die vollständige Abfolge des A2A-Workflows im zugehörigen Repository unter Verwendung der oben beschriebenen Agenten.</p><p>#</p><p>Aus</p><p>Zu</p><p>Aktion</p><p>Protokoll</p><p>Beschreibung</p><p>1</p><p>Benutzer</p><p>Nachrichtenchef</p><p>Geschichte zuweisen</p><p>HTTP POST</p><p>Der Nutzer gibt Thema und Blickwinkel der Geschichte vor.</p><p>2</p><p>Nachrichtenchef</p><p>Intern</p><p>Geschichte erstellen</p><p>-</p><p>Erstellt einen Story-Datensatz mit eindeutiger ID</p><p>3</p><p>Nachrichtenchef</p><p>Reporter</p><p>Delegiertenzuweisung</p><p>A2A</p><p>Sendet die Story-Aufgabe über das A2A-Protokoll.</p><p>4</p><p>Reporter</p><p>Intern</p><p>Auftrag annehmen</p><p>-</p><p>Interne Zuordnung der Lagerbestände</p><p>5</p><p>Reporter</p><p>MCP-Server</p><p>Gliederung erstellen</p><p>MCP/HTTP</p><p>Erstellt Gliederungen für Artikel und Forschungsfragen</p><p>6a</p><p>Reporter</p><p>Forscher</p><p>Forschungsanfrage</p><p>A2A</p><p>Sendet Fragen (parallel zu 6b)</p><p>6b</p><p>Reporter</p><p>Archivar</p><p>Archiv durchsuchen</p><p>A2A JSONRPC</p><p>Durchsucht historische Artikel (parallel zu 6a)</p><p>7</p><p>Forscher</p><p>MCP-Server</p><p>Forschungsfragen</p><p>MCP/HTTP</p><p>Nutzt Anthropic über MCP, um Fragen zu beantworten</p><p>8</p><p>Forscher</p><p>Reporter</p><p>Forschung zurückgeben</p><p>A2A</p><p>Antworten zur Renditeforschung</p><p>9</p><p>Archivar</p><p>Elasticsearch</p><p>Suchindex</p><p>ES REST-API</p><p>Abfragen zum Nachrichtenarchivindex</p><p>10</p><p>Archivar</p><p>Reporter</p><p>Zurück zum Archiv</p><p>A2A JSONRPC</p><p>Gibt historische Suchergebnisse zurück</p><p>11</p><p>Reporter</p><p>MCP-Server</p><p>Artikel generieren</p><p>MCP/HTTP</p><p>Erstellt einen Artikel mit Recherche-/Archivkontext</p><p>12</p><p>Reporter</p><p>Intern</p><p>Entwurf speichern</p><p>-</p><p>Speichert den Entwurf intern.</p><p>13</p><p>Reporter</p><p>Nachrichtenchef</p><p>Entwurf einreichen</p><p>A2A</p><p>Reicht den fertigen Entwurf ein</p><p>14</p><p>Nachrichtenchef</p><p>Intern</p><p>Update zur Geschichte</p><p>-</p><p>Speichert den Entwurf, aktualisiert den Status auf "draft_submitted"</p><p>15</p><p>Nachrichtenchef</p><p>Editor</p><p>Entwurf prüfen</p><p>A2A</p><p>Automatische Weiterleitung an den Redakteur zur Überprüfung</p><p>16</p><p>Editor</p><p>MCP-Server</p><p>Rezensionsartikel</p><p>MCP/HTTP</p><p>Analysiert Inhalte mithilfe von Anthropic über MCP</p><p>17</p><p>Editor</p><p>Nachrichtenchef</p><p>Rückgabeprüfung</p><p>A2A</p><p>Sendet redaktionelles Feedback und Vorschläge</p><p>18</p><p>Nachrichtenchef</p><p>Intern</p><p>Ladenbewertung</p><p>-</p><p>Feedback der Ladenredaktion</p><p>19</p><p>Nachrichtenchef</p><p>Reporter</p><p>Änderungen anwenden</p><p>A2A</p><p>Feedback zur Routenbewertung an den Reporter</p><p>20</p><p>Reporter</p><p>MCP-Server</p><p>Änderungen anwenden</p><p>MCP/HTTP</p><p>Überarbeitet den Artikel basierend auf dem Feedback</p><p>21</p><p>Reporter</p><p>Intern</p><p>Entwurf aktualisieren</p><p>-</p><p>Aktualisiert den Entwurf mit den Überarbeitungen</p><p>22</p><p>Reporter</p><p>Nachrichtenchef</p><p>Rückgabe überarbeitet</p><p>A2A</p><p>Artikel über die Rückgabe überarbeitet</p><p>23</p><p>Nachrichtenchef</p><p>Intern</p><p>Update zur Geschichte</p><p>-</p><p>Die Geschäfte haben den Entwurf überarbeitet, der Status lautet nun „überarbeitet“.</p><p>24</p><p>Nachrichtenchef</p><p>Herausgeber</p><p>Artikel veröffentlichen</p><p>A2A</p><p>Automatische Weiterleitung zum Herausgeber</p><p>25</p><p>Herausgeber</p><p>MCP-Server</p><p>Tags generieren</p><p>MCP/HTTP</p><p>Erstellt Tags und Kategorien</p><p>26</p><p>Herausgeber</p><p>Elasticsearch</p><p>Indexartikel</p><p>ES REST-API</p><p>Indexiert Artikel im Nachrichtenarchivindex</p><p>27</p><p>Herausgeber</p><p>Dateisystem</p><p>Markdown speichern</p><p>Datei-E/A</p><p>Speichert den Artikel als .md-Datei Datei in /articles</p><p>28</p><p>Herausgeber</p><p>Nachrichtenchef</p><p>Veröffentlichung bestätigen</p><p>A2A</p><p>Rückgabestatus: Erfolgreich</p><p>29</p><p>Nachrichtenchef</p><p>Intern</p><p>Update zur Geschichte</p><p>-</p><p>Aktualisiert den Status der Story auf „veröffentlicht“.</p><h2>Fazit</h2><p>Sowohl A2A als auch MCP spielen eine wichtige Rolle im modernen erweiterten LLM-Infrastrukturparadigma. A2A bietet Flexibilität für komplexe Multiagentensysteme, jedoch potenziell geringere Portabilität und höhere operative Komplexität. MCP bietet einen standardisierten Ansatz für die Tool-Integration, der einfacher zu implementieren und zu warten ist, ist jedoch nicht für die Orchestrierung mehrerer Agenten ausgelegt.</p><p>Die Wahl ist nicht binär. Wie unser Beispiel aus der Redaktion zeigt, kombinieren die anspruchsvollsten und effektivsten LLM-gestützten Systeme oft beide Ansätze: Agenten koordinieren und spezialisieren sich über A2A-Protokolle, während sie über MCP-Server auf ihre Tools und Ressourcen zugreifen. Diese Hybridarchitektur bietet die organisatorischen Vorteile von Multiagentensystemen sowie die Standardisierungs- und Ökosystemvorteile von MCP. Dies deutet darauf hin, dass möglicherweise gar keine Wahlmöglichkeit besteht: Man könnte einfach beide als Standardansatz verwenden.</p><p>Es liegt an Ihnen als Entwickler oder Architekt, die beste Mischung beider Lösungen zu testen und zu ermitteln, um das richtige Ergebnis für Ihren spezifischen Anwendungsfall zu erzielen. Das Verständnis der Stärken, Grenzen und geeigneten Anwendungsbereiche der einzelnen Ansätze ermöglicht es Ihnen, effektivere, wartungsfreundlichere und skalierbare KI-Systeme zu entwickeln.</p><p>Egal, ob Sie eine digitale Nachrichtenredaktion, eine Kundenserviceplattform, einen Forschungsassistenten oder eine andere LLM-gestützte Anwendung entwickeln – die sorgfältige Berücksichtigung Ihrer Koordinierungsbedürfnisse (A2A) und Ihrer Anforderungen an den Werkzeugzugriff (MCP) wird Sie auf den Weg zum Erfolg führen.</p><h2>Weitere Ressourcen</h2><ul><li><p><strong>Elasticsearch Agent Builder: </strong><a href="https://www.elastic.co/docs/solutions/search/elastic-agent-builder">https://www.elastic.co/docs/solutions/search/elastic-agent-builder</a></p></li><li><p><strong>A2A-Spezifikation</strong>: <a href="https://a2a-protocol.org/latest/specification/">https://a2a-protocol.org/latest/specification/</a></p></li><li><p><strong>A2A- und MCP-Integration</strong>: <a href="https://a2a-protocol.org/latest/topics/a2a-and-mcp/">https://a2a-protocol.org/latest/topics/a2a-and-mcp/</a></p></li><li><p><strong>Model Context Protocol</strong>: <a href="https://modelcontextprotocol.io/">https://modelcontextprotocol.io</a></p></li></ul>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/a2a-protocol-mcp-llm-agent-workflow-elasticsearch</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/a2a-protocol-mcp-llm-agent-workflow-elasticsearch</guid>
    <category><![CDATA[Agentische KI]]></category>
    <category><![CDATA[KI]]></category>
    <dc:creator><![CDATA[Justin Castilla]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1b1f22cdc2130333/6a17f161ec0f8917fa5a6712/f87330e5d4ca961593b3cfb861ca850a4cc34186-1519x1173.png" length="0" type="image/png"/>
    <pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Erstellung eines LLM-Agent-Newsrooms mit A2A-Protokoll und MCP in Elasticsearch: Teil 1]]></title>
    <description><![CDATA[Erkunden Sie die Konzepte des A2A-Protokolls und des MCP anhand eines praktischen Beispiels aus einer Nachrichtenredaktion, in der spezialisierte LLM-Agenten zusammenarbeiten, um Nachrichtenartikel zu recherchieren, zu schreiben, zu bearbeiten und zu veröffentlichen.]]></description>
    <content:encoded><![CDATA[<h2>Einleitung</h2><p>Die derzeitigen LLM-gestützten Systeme entwickeln sich rasant über Einzelmodellanwendungen hinaus zu komplexen Netzwerken, in denen spezialisierte Agenten zusammenarbeiten, um Aufgaben zu bewältigen, die mit modernen Computern bisher für unmöglich gehalten wurden. Mit zunehmender Komplexität dieser Systeme rückt die Infrastruktur, die die Kommunikation der Agenten und den Zugriff auf Werkzeuge ermöglicht, in den Mittelpunkt der Entwicklung. Zur Erfüllung dieser Anforderungen haben sich zwei komplementäre Ansätze herausgebildet: <strong>Agent2Agent (A2A)</strong> -Protokolle für die Koordination mehrerer Agenten und das <strong>Model Context Protocol (MCP)</strong> für den standardisierten Zugriff auf Werkzeuge und Ressourcen.</p><p>Das Verständnis dafür, wann man die einzelnen Elemente harmonisch miteinander und wann man sie ohne die anderen einsetzt, kann die Skalierbarkeit, Wartbarkeit und Effektivität Ihrer Anwendungen erheblich beeinflussen. Dieser Artikel untersucht die Konzepte und Implementierungen von <strong>A2A</strong> am praktischen Beispiel einer digitalen Nachrichtenredaktion, in der spezialisierte LLM-Agenten zusammenarbeiten, um Nachrichtenartikel zu recherchieren, zu schreiben, zu bearbeiten und zu veröffentlichen.</p><p>Ein zugehöriges Repository finden Sie <a href="https://github.com/justincastilla/elastic-newsroom/tree/main">hier</a>, und konkrete Beispiele für A2A in der Praxis werden wir gegen Ende des Artikels in Abschnitt 5 untersuchen.</p><h3>Voraussetzungen</h3><p>Das <a href="https://github.com/justincastilla/elastic-newsroom/tree/main">Repository</a> besteht aus Python-basierten Implementierungen der A2A-Agenten. Flask stellt einen API-Server sowie einen benutzerdefinierten Python-Messaging-Dienst namens Event Hub bereit, der Nachrichten für die Protokollierung und UI-Aktualisierungen weiterleitet. Schließlich wird eine React-Benutzeroberfläche für die eigenständige Nutzung der Newsroom-Funktionen bereitgestellt. Alles ist zur einfacheren Implementierung in einem Docker-Image enthalten. Wenn Sie die Dienste direkt auf Ihrem Rechner ausführen möchten, sollten Sie sicherstellen, dass die folgenden Technologien installiert sind:</p><p>Sprachen und Laufzeiten</p><ul><li><p>Python 13.12 – Kern-Backend-Sprache</p></li><li><p>Node.js 18+ - Optionale React-Benutzeroberfläche</p></li></ul><p>Kern-Frameworks und SDKs:</p><ul><li><p>A2A SDK 0.3.8 – Agentenkoordination und -kommunikation</p></li><li><p>Anthropic SDK - Claude-Integration für die KI-Generierung</p></li><li><p>Uvicorn – ASGI-Server zum Ausführen von Agenten</p></li><li><p>FastMCP 2.12.5+ - MCP-Server-Implementierung</p></li><li><p>React 18.2 – Frontend-UI-Framework</p></li></ul><p>Daten &amp; Suche</p><ul><li><p>Elasticsearch 9.1.1+ - Artikelindexierung und -suche</p></li></ul><p>Docker-Bereitstellung (optional, aber empfohlen)</p><ul><li><p>Docker 28.5.1+</p></li></ul><h2>Abschnitt 1: Was ist Agent2Agent (A2A)?</h2><h3>Definition und Kernkonzepte</h3><p>Agent2Agent (A2A) ist ein standardisiertes Protokoll für die Interaktion zwischen unabhängigen LLM-Agenten. Anstatt eines einzigen monolithischen Systems, das alle Aufgaben übernimmt, ermöglicht A2A mehreren spezialisierten Agenten die Kommunikation, Koordination und Zusammenarbeit, um komplexe Arbeitsabläufe zu bewältigen, die für einen einzelnen Agenten schwierig, langsam oder gar unmöglich effizient zu handhaben wären.</p><p><strong>Offizielle Spezifikation</strong>: <a href="https://a2a-protocol.org/latest/specification/">https://a2a-protocol.org/latest/specification/</a></p><h3>Ursprung und Evolution</h3><p>Das Konzept der Agent2Agent-Kommunikation bzw. von Multiagentensystemen hat seine Wurzeln in der Forschung zu verteilten Systemen, Microservices und Multiagentensystemen, die <a href="https://en.wikipedia.org/wiki/Multi-agent_system">Jahrzehnte</a> zurückreicht. Frühe Arbeiten im Bereich der verteilten künstlichen Intelligenz legten den Grundstein für Agenten, die verhandeln, koordinieren und zusammenarbeiten können. Diese frühen Systeme dienten der Durchführung groß angelegter <a href="https://www.jasss.org/5/1/7.html">sozialer Simulationen</a>, <a href="https://arxiv.org/html/2410.09403v1">der akademischen Forschung</a> und <a href="https://www.researchgate.net/publication/334765661_Generation_Expansion_Planning_Considering_Investment_Dynamic_of_Market_Participants_Using_Multi-agent_System">dem Management von Stromnetzen</a>.</p><p>Mit der Verfügbarkeit von LLM und den gesunkenen Betriebskosten wurden Multiagentensysteme auch für den „Prosumer“-Markt zugänglich, unterstützt von Google und der breiteren KI-Forschungsgemeinschaft. Die Einführung des A2A-Protokolls, die heute als Agent2Agent-Systeme bekannt ist, hat sich zu einem modernen Standard entwickelt, der speziell für das Zeitalter mehrerer großer Sprachmodelle konzipiert wurde, die ihre Bemühungen und Aufgaben koordinieren.</p><p>Das A2A-Protokoll gewährleistet eine reibungslose Kommunikation und Koordination zwischen den Agenten, indem es einheitliche Standards und Prinzipien an den Interaktionspunkten anwendet, an denen LLMs sich verbinden und kommunizieren. Diese Standardisierung ermöglicht es Agenten verschiedener Entwickler – die unterschiedliche zugrunde liegende Modelle verwenden – effektiv zusammenzuarbeiten.</p><p>Kommunikationsprotokolle sind nicht neu und haben sich in nahezu jeder digitalen Transaktion im Internet fest etabliert. Wenn Sie <a href="https://www.elastic.co/search-labs">https://www.elastic.co/search-labs</a> eingegeben haben Wenn Sie einen Browser verwenden, um diesen Artikel zu erreichen, ist die Wahrscheinlichkeit hoch, dass alle TCP/IP-, HTTP-Transport- und DNS-Lookup-Protokolle ausgeführt wurden, um ein konsistentes Browsererlebnis für uns zu gewährleisten.</p><h3>Hauptmerkmale</h3><p>A2A-Systeme basieren auf mehreren grundlegenden Prinzipien, um eine reibungslose Kommunikation zu gewährleisten. Aufbauend auf diesen Prinzipien wird sichergestellt, dass verschiedene Agenten, die auf unterschiedlichen LLMs, Frameworks und Programmiersprachen basieren, nahtlos miteinander interagieren.</p><p>Hier sind die vier Hauptprinzipien:</p><ul><li><p><strong>Nachrichtenübermittlung</strong>: Agenten kommunizieren über strukturierte Nachrichten mit klar definierten Eigenschaften und Formaten.</p></li><li><p><strong>Koordination</strong>: Agenten orchestrieren komplexe Arbeitsabläufe, indem sie Aufgaben untereinander delegieren und Abhängigkeiten verwalten, ohne andere Agenten zu blockieren.</p></li><li><p><strong>Spezialisierung</strong>: Jeder Agent konzentriert sich auf einen bestimmten Bereich oder eine bestimmte Fähigkeit, wird Experte auf seinem Gebiet und bietet Aufgabenerledigung basierend auf diesen Fähigkeiten an.</p></li><li><p><strong>Verteilter Zustand</strong>: Zustand und Wissen sind auf mehrere Agenten verteilt und nicht zentralisiert. Die Agenten können sich gegenseitig über den Fortschritt des Aufgabenstatus und Teilergebnisse (Artefakte) informieren.</p></li></ul><h3>Die Redaktion: Ein laufendes Beispiel</h3><p>Stellen Sie sich eine digitale Nachrichtenredaktion vor, die von KI-Agenten gesteuert wird, von denen jeder auf einen anderen Aspekt des Journalismus spezialisiert ist:</p><ul><li><p><strong>Nachrichtenchef</strong> (Koordinator/Kunde): Vergibt Artikel und überwacht den Arbeitsablauf.</p></li><li><p><strong>Reporteragent</strong>: Verfasst Artikel auf Grundlage von Recherchen und Interviews.</p></li><li><p><strong>Rechercheagent</strong>: Sammelt Fakten, Statistiken und Hintergrundinformationen.</p></li><li><p><strong>Archivagent</strong>: Durchsucht historische Artikel und identifiziert Trends mithilfe von Elasticsearch.</p></li><li><p><strong>Redaktionsassistent</strong>: Überprüft Artikel auf Qualität, Stil und Suchmaschinenoptimierung.</p></li><li><p><strong>Verlagsagent</strong>: Veröffentlicht freigegebene Artikel über CI/CD auf der Blog-Plattform.</p></li></ul><p>Diese Akteure arbeiten nicht isoliert; wenn der Nachrichtenchef einen Artikel über <em>die Einführung erneuerbarer Energien</em> in Auftrag gibt, benötigt der Reporter den Rechercheur, um Statistiken zu sammeln, den Redakteur, um den Entwurf zu überprüfen, und den Verleger, um den endgültigen Artikel zu veröffentlichen. Diese Koordination erfolgt über A2A-Protokolle.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb6c7215a96326481/6a17f2dd445de953024d0243/cc0760dbd74c49b92fa00dafbb8c2e8740eb70b6-963x693.png" alt="" /><h2>Abschnitt 2: A2A-Architektur verstehen</h2><h3>Kundenbetreuer- und Fernbetreuerrollen</h3><p>In der A2A-Architektur übernehmen Agenten zwei Hauptrollen. Der <strong>Kundenbetreuer</strong> ist dafür verantwortlich, Aufgaben zu formulieren und an andere Betreuer im System zu kommunizieren. Es identifiziert Remote-Agenten und deren Fähigkeiten und nutzt diese Informationen, um fundierte Entscheidungen über die Aufgabenverteilung zu treffen. Der Kundenbetreuer koordiniert den gesamten Arbeitsablauf und sorgt dafür, dass die Aufgaben ordnungsgemäß verteilt werden und das System seine Ziele erreicht.</p><p>Der <strong>Remote Agent</strong> hingegen erledigt Aufgaben, die ihm von Clients übertragen werden. Es stellt Informationen bereit oder ergreift konkrete Maßnahmen als Reaktion auf Anfragen, initiiert aber keine Aktionen selbstständig. Remote-Agenten können bei Bedarf auch mit anderen Remote-Agenten kommunizieren, um ihre zugewiesenen Aufgaben zu erfüllen, wodurch ein kollaboratives Netzwerk spezialisierter Kompetenzen entsteht.</p><p>In unserer Redaktion fungiert der Nachrichtenchef als Ansprechpartner für den Kunden, während Reporter, Rechercheur, Redakteur und Verleger als externe Mitarbeiter Anfragen bearbeiten und sich untereinander abstimmen.</p><h3>Kernfunktionen für A2A</h3><p>A2A-Protokolle definieren verschiedene Funktionen, die die Zusammenarbeit mehrerer Agenten ermöglichen:</p><h4>1. Entdeckung</h4><p>A2A-Server müssen ihre Fähigkeiten bekanntgeben, damit Clients wissen, wann und wie sie diese für bestimmte Aufgaben nutzen können. Dies geschieht mithilfe von Agentenkarten – JSON-Dokumenten, die die Fähigkeiten, Eingaben und Ausgaben eines Agenten beschreiben. Agentenkarten werden über einheitliche, bekannte Endpunkte (wie den empfohlenen <code>/.well-known/agent-card.json</code> -Endpunkt) bereitgestellt, sodass Clients die Fähigkeiten eines Agenten ermitteln und abfragen können, bevor sie die Zusammenarbeit initiieren.</p><p>Nachfolgend sehen Sie eine Beispiel-Agentenkarte für den benutzerdefinierten Archivagenten von Elastic, „Archie Archivist“. Beachten Sie, dass Softwareanbieter wie Elastic ihre A2A-Agenten hosten und eine URL für den Zugriff bereitstellen:</p>{
  "name": "Archie Archivist",
  "description": "Helps find historical news documents in the Elasticsearch Index of archived news articles and content.",
  "url": "https://xxxxxxxxxxxxx-abc123.kb.us-central1.gcp.elastic.cloud/api/agent_builder/a2a/archive-agent",
  "provider": {
    "organization": "Elastic",
    "url": "https://elastic.co"
  },
  "version": "0.1.0",
  "protocolVersion": "0.3.0",
  "preferred_transport": "JSONRPC",
  "documentationURL": "https://www.elastic.co/docs/solutions/search/agent-builder/a2a-server"
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "skills": [
    {
      "id": "platform.core.search",
      "name": "platform.core.search",
      "description": "A powerful tool for searching and analyzing data within your Elasticsearch cluster.",
      "inputModes": ["text/plain", "application/json"],
      "outputModes": ["text/plain", "application/json"]
    },
    {
      "id": "platform.core.index_explorer",
      "name": "platform.core.index_explorer",
      "description": "List relevant indices, aliases and datastreams based on a natural language query.",
      "inputModes": ["text/plain", "application/json"],
      "outputModes": ["text/plain", "application/json"]
    }
  ],
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"]
}<p>Diese Agentenkarte offenbart mehrere wichtige Aspekte des Archivagenten von Elastic. Der Agent stellt sich als „Archie Archivist“ vor und gibt seinen Zweck klar an: die Suche nach historischen Nachrichtendokumenten in einem Elasticsearch-Index. Die Karte gibt den Anbieter (Elastic) und die Protokollversion (0.3.0) an und gewährleistet so die Kompatibilität mit anderen A2A-kompatiblen Agenten. Am wichtigsten ist jedoch, dass das <code>skills</code> -Array die spezifischen Fähigkeiten auflistet, die dieser Agent bietet, darunter leistungsstarke Suchfunktionen und intelligente Indexerkundung. Jede Fähigkeit definiert, welche Eingabe- und Ausgabemodi sie unterstützt, sodass Clients genau verstehen, wie sie mit diesem Agenten kommunizieren können. Dieser Agent basiert auf dem Agent Builder-Service von Elastic, der eine Reihe nativer, LLM-gestützter Tools und API-Endpunkte bereitstellt, um mit Ihrem Datenspeicher zu kommunizieren und nicht nur Daten daraus abzurufen. Zugriff auf A2A-Agenten in Elasticsearch finden Sie <a href="https://www.elastic.co/docs/solutions/search/agent-builder/a2a-server">hier</a>.</p><h4>2. Verhandlung</h4><p>Kunden und Agenten müssen sich auf Kommunikationsmethoden einigen – egal ob die Interaktion per Text, Formular, iFrames oder sogar Audio/Video erfolgt –, um eine ordnungsgemäße Benutzerinteraktion und einen reibungslosen Datenaustausch zu gewährleisten. Diese Aushandlung findet zu Beginn der Zusammenarbeit der Agenten statt und legt die Protokolle fest, die ihre Interaktion während des gesamten Arbeitsablaufs regeln. Ein Mitarbeiter im telefonischen Kundenservice könnte beispielsweise die Kommunikation über Audiostreams aushandeln, während ein Mitarbeiter im Datenanalyse-Bereich strukturiertes JSON bevorzugen könnte. Der Verhandlungsprozess stellt sicher, dass beide Parteien Informationen effektiv in einem Format austauschen können, das ihren Fähigkeiten und den Anforderungen der jeweiligen Aufgabe entspricht.</p><p>Die im obigen JSON-Ausschnitt aufgeführten Funktionen verfügen alle über Eingabe- und Ausgabeschemata; diese legen fest, wie andere Agenten mit diesem Agenten interagieren sollen.</p><h4>3. Aufgaben- und Zustandsmanagement</h4><p>Kunden und Agenten benötigen Mechanismen, um während der gesamten Aufgabenausführung über Aufgabenstatus, Änderungen und Abhängigkeiten zu kommunizieren. Dies umfasst die Verwaltung des gesamten Lebenszyklus einer Aufgabe von der Erstellung und Zuweisung bis hin zu Fortschrittsaktualisierungen und Statusänderungen. Typische Status sind: ausstehend, in Bearbeitung, abgeschlossen oder fehlgeschlagen. Das System muss außerdem Abhängigkeiten zwischen Aufgaben verfolgen, um sicherzustellen, dass die erforderlichen Vorarbeiten abgeschlossen sind, bevor die abhängigen Aufgaben beginnen. Fehlerbehandlung und Wiederholungslogik sind ebenfalls wesentliche Bestandteile, die es dem System ermöglichen, sich nach Fehlern reibungslos zu erholen und weiterhin Fortschritte in Richtung des Hauptziels zu erzielen.</p><p>Beispiel einer Aufgabenmeldung:</p>{
  "message_id": "msg_789xyz",
  "message_type": "task_request",
  "sender": "news_chief",
  "receiver": "researcher_agent",
  "timestamp": "2025-09-30T10:15:00Z",
  "payload": {
    "task_id": "task_456abc",
    "capability": "fact_gathering",
    "parameters": {
      "query": "renewable energy adoption rates in Europe 2024",
      "sources": ["eurostat", "iea", "ember"],
      "depth": "comprehensive"
    },
    "context": {
      "story_id": "story_123",
      "deadline": "2025-09-30T18:00:00Z",
      "priority": "high"
    }
  }
}<p>Diese Beispiel-Aufgabennachricht veranschaulicht mehrere wichtige Aspekte der A2A-Kommunikation.</p><ul><li><p>Die <strong>Nachrichtenstruktur</strong> umfasst Metadaten wie eine eindeutige Nachrichtenkennung, die Art der gesendeten Nachricht, die Kennung von Absender und Empfänger sowie einen Zeitstempel zur Nachverfolgung und Fehlerbehebung.</p></li><li><p>Die <strong>Nutzlast</strong> enthält die eigentlichen Aufgabeninformationen, in denen angegeben wird, welche Funktion auf dem Remote-Agenten aufgerufen wird, und die notwendigen Parameter zur Ausführung dieser Funktion bereitgestellt werden.</p></li><li><p>Der Abschnitt <strong>„Kontext“</strong> liefert zusätzliche Informationen, die dem empfangenden Agenten helfen, den übergeordneten Arbeitsablauf zu verstehen, einschließlich Fristen und Prioritätsstufen, die Aufschluss darüber geben, wie der Agent seine Ressourcen einsetzen und seine Arbeit planen sollte.</p></li></ul><h4>4. Zusammenarbeit</h4><p>Kunden und Agenten <strong>müssen</strong> eine dynamische, aber dennoch strukturierte Interaktion unterstützen, die es den Agenten ermöglicht, Klärungen, Informationen oder Teilaktionen vom Kunden, anderen Agenten oder Benutzern anzufordern. Dadurch entsteht eine kollaborative Umgebung, in der Agenten bei unklaren Anfangsanweisungen Nachfragen stellen, zusätzlichen Kontext anfordern können, um bessere Entscheidungen zu treffen, Teilaufgaben an andere Agenten mit besser geeigneter Expertise delegieren und Zwischenergebnisse zur Rückmeldung liefern können, bevor sie mit der Gesamtaufgabe fortfahren. Diese multidirektionale Kommunikation stellt sicher, dass die Agenten nicht isoliert arbeiten, sondern in einen fortlaufenden Dialog eingebunden sind, der zu besseren Ergebnissen führt.</p><h3>Verteilte Peer-to-Peer-Kommunikation</h3><p>A2A ermöglicht verteilte Kommunikation, bei der Agenten von verschiedenen Organisationen gehostet werden können, wobei einige Agenten intern verwaltet werden, während andere von Drittanbietern bereitgestellt werden. Diese Agenten können auf verschiedenen Infrastrukturen ausgeführt werden – potenziell über mehrere Cloud-Anbieter oder lokale Rechenzentren hinweg. Sie verwenden möglicherweise unterschiedliche zugrunde liegende LLMs, wobei einige Agenten auf GPT-Modellen, andere auf Claude und wieder andere auf Open-Source-Alternativen basieren. Agenten könnten sogar über verschiedene geografische Regionen hinweg operieren, um den Anforderungen der Datensouveränität nachzukommen oder die Latenz zu reduzieren. Trotz dieser Vielfalt stimmen alle Agenten einem gemeinsamen Kommunikationsprotokoll für den Informationsaustausch zu, wodurch die Interoperabilität unabhängig von Implementierungsdetails gewährleistet wird. Diese verteilte Architektur bietet Flexibilität beim Aufbau und der Bereitstellung von Systemen und ermöglicht es Organisationen, die besten Agenten und Infrastrukturen für ihre spezifischen Bedürfnisse zu kombinieren.</p><p>Dies ist die endgültige Architektur der Newsroom-Anwendung:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt74d59cd9267f54d8/6a17f2de505ac31129ad8c71/82e01a0d9746038eafd69d11177042b5390507ae-1600x838.png" alt="" /><h2>Abschnitt 3: Modellkontextprotokoll (MCP)</h2><h3>Definition und Zweck</h3><p>Das Model Context Protocol (MCP) ist ein von Anthropic entwickeltes standardisiertes Protokoll, das dazu dient, ein einzelnes LLM mit benutzerdefinierten Werkzeugen, Ressourcen und Eingabeaufforderungen sowie anderen ergänzenden Codebasiserweiterungen zu erweitern und zu stärken. MCP bietet eine universelle Schnittstelle zwischen Sprachmodellen und den externen Ressourcen, die sie benötigen, um Aufgaben effektiv zu erledigen. Dieser <a href="https://www.elastic.co/search-labs/blog/mcp-current-state">Artikel</a> beschreibt den aktuellen Stand von MCP anhand von Anwendungsbeispielen, aufkommenden Trends und der Implementierung von Elastic.</p><h3>Kernkonzepte des MCP</h3><p>MCP arbeitet mit einer Client-Server-Architektur und besteht aus drei Hauptkomponenten:</p><ul><li><p><strong>Clients:</strong> Anwendungen (wie Claude Desktop oder kundenspezifische KI-Anwendungen), die sich mit MCP-Servern verbinden, um auf deren Funktionen zuzugreifen.</p></li><li><p><strong>Server</strong>: Anwendungen, die Ressourcen, Werkzeuge und Eingabeaufforderungen für Sprachmodelle bereitstellen. Jeder Server ist darauf spezialisiert, Zugriff auf bestimmte Funktionen oder Datenquellen zu bieten.</p><ul><li><p><strong>Tools</strong>: Benutzerdefinierte Funktionen, die Modelle aufrufen können, um Aktionen auszuführen, wie z. B. Datenbanken zu durchsuchen, externe APIs aufzurufen oder Datentransformationen durchzuführen.</p></li><li><p><strong>Ressourcen:</strong> Datenquellen, aus denen Modelle lesen können, die dynamische oder statische Daten liefern und über URI-Muster aufgerufen werden (ähnlich wie REST-Routen).</p></li><li><p><strong>Eingabeaufforderungen: </strong>Wiederverwendbare Eingabeaufforderungsvorlagen mit Variablen, die das Modell bei der Erfüllung spezifischer Aufgaben unterstützen.</p></li></ul></li></ul><h3>Anfrage-Antwort-Muster</h3><p>MCP folgt einem bekannten Anfrage-Antwort-Interaktionsmuster, ähnlich wie REST-APIs. Der Client (LLM) fordert eine Ressource an oder ruft ein Tool auf. Anschließend verarbeitet der MCP-Server die Anfrage und gibt das Ergebnis zurück, das der LLM zur Fortsetzung seiner Aufgabe verwendet. Dieses zentralisierte Modell mit peripheren Servern bietet im Vergleich zur Peer-to-Peer-Agentenkommunikation ein einfacheres Integrationsmuster.</p><h3>MCP im Newsroom</h3><p>In unserem Beispiel aus der Nachrichtenredaktion nutzen einzelne Mitarbeiter MCP-Server, um auf die benötigten Tools und Daten zuzugreifen:</p><ul><li><p><strong>Der Forscheragent</strong> verwendet:</p><ul><li><p>News API MCP Server (Zugriff auf Nachrichtendatenbanken)</p></li><li><p>Faktencheck-Server von MCP (Überprüfung von Behauptungen anhand vertrauenswürdiger Quellen)</p></li><li><p>Akademische Datenbank MCP-Server (wissenschaftliche Artikel und Forschungsergebnisse)</p></li></ul></li><li><p><strong>Reporteragent</strong> verwendet:</p><ul><li><p>Styleguide MCP Server (Schreibstandards für Redaktionen)</p></li><li><p>Template MCP Server (Artikelvorlagen und -formate)</p></li><li><p>Bildbibliothek MCP-Server (Stockfotos und Grafiken)</p></li></ul></li><li><p><strong>Redaktionsagenten</strong> verwenden:</p><ul><li><p>Grammatikprüfung MCP-Server (Tools zur Sprachqualitätsprüfung)</p></li><li><p>Plagiatserkennungsserver MCP (Originalitätsprüfung)</p></li><li><p>SEO-Analyse MCP-Server (Überschriften- und Keyword-Optimierung)</p></li></ul></li><li><p><strong>Verlagsagenten</strong> verwenden:</p><ul><li><p>CMS MCP Server (API für Content-Management-Systeme)</p></li><li><p>CI/CD MCP-Server (Bereitstellungspipeline)</p></li><li><p>Analytics MCP Server (Tracking und Monitoring)</p></li></ul></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt195fe0bd36d36a48/6a17f2e0b1e113afe479f36c/b67311e3b58b27f9eb1b42a7b1dbad47ef3be4ad-808x535.png" alt="" /><h2>
Abschnitt 4: Architekturvergleich</h2><h3>Wann sollte man A2A verwenden?</h3><p>Die A2A-Architektur ist besonders geeignet für <strong>Szenarien, die eine echte Zusammenarbeit mehrerer Agenten erfordern</strong>. Mehrstufige Arbeitsabläufe, die eine Koordination erfordern, profitieren stark von A2A, insbesondere wenn Aufgaben mehrere sequentielle oder parallele Schritte umfassen, Arbeitsabläufe Iteration und Verfeinerung erfordern und Prozesse Kontrollpunkte und Validierungsanforderungen haben. In unserem Beispiel aus der Nachrichtenredaktion sieht der Arbeitsablauf vor, dass der Reporter den Artikel schreibt, ihn aber gegebenenfalls an den Rechercheur zurückgeben muss, wenn das Vertrauen in bestimmte Fakten gering ist, bevor er ihn an den Redakteur und schließlich an den Verleger weiterleitet.</p><p><strong>Domänenspezifische Spezialisierung über mehrere Bereiche hinweg</strong> ist ein weiterer wichtiger Anwendungsfall für A2A. Wenn mehrere Experten aus verschiedenen Bereichen benötigt werden, um eine größere Aufgabe zu bewältigen, wobei jeder Experte über fundiertes Fachwissen und spezialisierte Denkfähigkeiten für unterschiedliche Aspekte verfügt, bietet A2A den Koordinierungsrahmen, der für die Herstellung dieser Verbindungen erforderlich ist. Die Redaktion ist dafür ein perfektes Beispiel: Der Rechercheur ist auf die Informationsbeschaffung spezialisiert, der Reporter auf das Schreiben und der Redakteur auf die Qualitätskontrolle – jeder mit einem besonderen Fachgebiet.</p><p>Die Notwendigkeit eines autonomen Agentenverhaltens macht A2A besonders wertvoll. Agenten, die<strong> selbstständig Entscheidungen treffen können, proaktives Verhalten auf der Grundlage sich ändernder Bedingungen zeigen und sich dynamisch an die Workflow-Anforderungen anpassen können,</strong> sind in einer A2A-Architektur besonders erfolgreich. Die horizontale Skalierung spezialisierter Funktionen ist ein weiterer entscheidender Vorteil – anstatt eines einzigen Alleskönners arbeiten mehrere spezialisierte Agenten koordiniert zusammen, und mehrere Instanzen desselben Agenten können Teilaufgaben asynchron bearbeiten. Bei Eilmeldungen in unserer Redaktion arbeiten beispielsweise mehrere Reporter gleichzeitig an verschiedenen Aspekten derselben Geschichte.</p><p>Schließlich eignen sich Aufgaben, die eine echte Zusammenarbeit mehrerer Agenten erfordern, ideal für A2A. Dies umfasst <a href="https://arxiv.org/abs/2404.18796">LLM-als-Jury-Bewertungsmechanismen</a> , Konsensfindungs- und Abstimmungssysteme sowie <strong>kollaborative Problemlösungsansätze, bei denen mehrere Perspektiven erforderlich sind,</strong> um das beste Ergebnis zu erzielen.</p><h3>Wann sollte MCP verwendet werden?</h3><p>Das Model Context Protocol eignet sich ideal zur Erweiterung der Fähigkeiten eines einzelnen KI-Modells. Wenn ein einzelnes KI-Modell Zugriff auf mehrere Tools und Datenquellen benötigt, bietet MCP die perfekte Lösung mit zentralisierter Datenverarbeitung in Verbindung mit verteilten Tools und unkomplizierter Tool-Integration. In unserem Beispiel aus der Nachrichtenredaktion benötigt der Rechercheagent (ein Modell) Zugriff auf mehrere Datenquellen, darunter die News-API, Faktencheck-Dienste und akademische Datenbanken – der Zugriff erfolgt über standardisierte MCP-Server.</p><p>Die Integration standardisierter Werkzeuge gewinnt dann an Bedeutung, wenn die breite Weitergabe und Wiederverwendbarkeit von Werkzeugintegrationen wichtig ist. MCP glänzt hier mit seinem Ökosystem aus vorkonfigurierten MCP-Servern, die die Entwicklungszeit für gängige Integrationen erheblich reduzieren. Wenn Einfachheit und Wartbarkeit gefordert sind, sind die Anfrage-Antwort-Muster von MCP den Entwicklern vertraut, leichter zu verstehen und zu debuggen als verteilte Systeme und weisen eine geringere betriebliche Komplexität auf.</p><p>Schließlich wird MCP häufig von Softwareanbietern angeboten, um die Fernkommunikation mit ihren Systemen zu vereinfachen. Diese vom Anbieter bereitgestellten MCP-Server reduzieren die Einarbeitungs- und Entwicklungszeit erheblich und bieten gleichzeitig eine standardisierte Schnittstelle zu proprietären Systemen, wodurch die Integration wesentlich einfacher wird als die Entwicklung kundenspezifischer APIs.</p><h3>Wann man beides verwendet (A2A ❤️'s MCP)</h3><p>Viele hochentwickelte Systeme profitieren von der Kombination von A2A und MCP, wie in der <a href="https://a2a-protocol.org/latest/topics/a2a-and-mcp/">A2A-Dokumentation zur MCP-Integration</a> beschrieben. Systeme, die sowohl Koordination als auch Standardisierung erfordern, sind ideale Kandidaten für einen hybriden Ansatz. A2A übernimmt die Agentenkoordination und Workflow-Orchestrierung, während MCP den einzelnen Agenten Zugriff auf die Tools ermöglicht. In unserem Beispiel aus der Redaktion koordinieren sich die Mitarbeiter über A2A; der Arbeitsablauf verläuft dabei vom Reporter über den Rechercheur zum Redakteur und schließlich zum Verleger. Allerdings nutzt jeder Agent MCP-Server für seine spezialisierten Tools, wodurch eine klare architektonische Trennung entsteht.</p><p>Mehrere spezialisierte Agenten, die jeweils MCP für den Werkzeugzugriff nutzen, stellen ein gängiges Muster dar, bei dem es eine Agentenkoordinierungsschicht gibt, die von A2A verwaltet wird, und eine Werkzeugzugriffsschicht, die von MCP verwaltet wird. Durch diese klare Trennung der Zuständigkeiten werden die Systeme leichter verständlich und wartungsfreundlicher.</p><p>Die Vorteile der Kombination beider Ansätze sind beträchtlich. Sie profitieren von den organisatorischen Vorteilen von Multiagentensystemen, einschließlich Spezialisierung, Autonomie und Parallelverarbeitung, und genießen gleichzeitig die Vorteile von MCP in Bezug auf Standardisierung und Ökosystem, wie z. B. Werkzeugintegration und Ressourcenzugriff. Zwischen Agentenkoordination (A2A) und Ressourcenzugriff (MCP) besteht eine klare Trennung, und vor allem ist A2A für kleinere Aufgaben wie den API-Zugriff allein nicht erforderlich – MCP erledigt diese effizient ohne den Aufwand einer Multi-Agenten-Orchestrierung.</p><p><strong>Häufig gestellte Fragen: A2A vs. MCP – Anwendungsfälle</strong></p><p>Feature</p><p>Agent2Agent (A2A)</p><p>Model Context Protocol (MCP)</p><p>Hybrid (A2A + MCP)</p><p>Hauptziel</p><p>Multi-Agent-Koordination: Ermöglicht es einem Team spezialisierter Agenten, gemeinsam an komplexen, mehrstufigen Arbeitsabläufen zu arbeiten.</p><p>Erweiterung für einzelne Agenten: Erweitert die Funktionalität eines einzelnen LLM/Agenten um externe Tools, Ressourcen und Daten.</p><p>Gemeinsame Stärke: A2A kümmert sich um den Workflow des Teams, während MCP jedem Teammitglied die nötigen Werkzeuge zur Verfügung stellt.</p><p>Beispiel eines Redaktionsteams</p><p>Der Arbeitsablauf: Nachrichtenchef → Reporter → Rechercheur → Redakteur → Verleger. Dies ist die Koordinationsebene.</p><p>Tools für den einzelnen Agenten: Der Reporter-Agent greift über MCP auf den Styleguide-Server und den Vorlagenserver zu. Dies ist die Werkzeugzugriffsschicht.</p><p>Das vollständige System: Der Reporter stimmt sich mit dem Redakteur ab (A2A) und nutzt den Image Library MCP Server, um ein Bild für den Artikel zu finden.</p><p>Wann welches Werkzeug verwenden?</p><p>Wenn Sie echte Zusammenarbeit, Iteration und Verfeinerung benötigen oder spezialisiertes Fachwissen auf mehrere Mitarbeiter verteilt ist.</p><p>Wenn ein einzelner Agent Zugriff auf mehrere Tools und Datenquellen benötigt oder eine standardisierte Integration mit proprietären Systemen erfordert.</p><p>Wenn Sie die organisatorischen Vorteile von Multiagentensystemen und die Standardisierungs- und Ökosystemvorteile von MCP benötigen.</p><p>Kernnutzen</p><p>Autonomie und Skalierbarkeit: Agenten können unabhängige Entscheidungen treffen, und das System ermöglicht die horizontale Skalierung spezialisierter Funktionen.</p><p>Einfachheit und Standardisierung: Durch die zentrale Logik ist die Fehlersuche und Wartung einfacher, und es wird eine universelle Schnittstelle für Ressourcen bereitgestellt.</p><p>Klare Trennung der Zuständigkeiten: Macht das System verständlicher: A2A = Teamarbeit, MCP = Werkzeugzugriff.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1735ea5de41e10fd/6a17f2e26864a4125cb688c4/ddf6a29b1107ac6a63e94ecef703abc561a29e1e-986x656.png" alt="" /><h2>Fazit</h2><p>Dies ist der erste von zwei Teilen, die die Implementierung von A2A-basierten Agenten behandeln, die durch MCP-Server unterstützt werden, um Support und externen Zugriff auf Daten und Tools zu ermöglichen. Im nächsten Abschnitt wird der konkrete Code untersucht, um zu demonstrieren, wie die einzelnen Elemente zusammenarbeiten, um die Abläufe in einer Online-Nachrichtenredaktion nachzubilden. Obwohl beide Frameworks für sich genommen äußerst leistungsfähig und flexibel sind, werden Sie erst im Zusammenspiel sehen, wie sehr sie sich ergänzen.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/a2a-protocol-mcp-llm-agent-newsroom-elasticsearch</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/a2a-protocol-mcp-llm-agent-newsroom-elasticsearch</guid>
    <category><![CDATA[Agentische KI]]></category>
    <category><![CDATA[KI]]></category>
    <dc:creator><![CDATA[Justin Castilla]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2716d804698ec878/6a17f2e41480095fd7b48888/9f938d8e2f0fdf7509edf028816c48bdbc8b3fc7-1600x900.png" length="0" type="image/png"/>
    <pubDate>Thu, 13 Nov 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>