ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 164
Numărul 163 Numărul 162 Numărul 161 Numărul 160 Numărul 159 Numărul 158 Numărul 157 Numărul 156 Numărul 155 Numărul 154 Numărul 153 Numărul 152 Numărul 151 Numărul 150 Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 164
Abonamente

Model Context Protocol (MCP) Server

Petronel Tanco
Software Architect @ BMW TechWorks Romania



PROGRAMARE


Model Context Protocol (MCP) Server a fost dezvoltat de către Anthropic (este firma care a dezvoltat modelul AI Claude Sonnet) și a fost introdus în noiembrie 2024. Creșterea sa exponențială îl plasează între tehnologiile cu cel mai mare impact la nivel global și care este esențial să fie cunoscut de programatorii pasionați de proiectele bazate pe Inteligență Artificială.

MCP este un standard de comunicare între sistemele de inteligență artificială, cum ar fi Large Language Models (LLM) și datele pe care acestea le folosesc pentru a procesa informații și a răspunde cerințelor.

Arhitectura MCP este de tip Client-Server și standardul de comunicare este metaforic numit protocolul de comunicare "USB Type-C" pentru aplicațiile de inteligență artificială, bazat pe JSON-RPC 2.0.

Diagrama de mai jos ilustrează fluxul de calluri între un LLM, un MCP host & client(s) și unul sau mai multe MCP Server(e) care expun toolurile susținute de DB/API/Code.

Astfel se realizează conexiunea între:

Capacitățile unui MCP Server:

Mai departe ne propunem să configurăm un MCP Server folosind Quarkus.

Documentația oficială de la Quarkus este foarte ușor de urmărit și de implementat, astfel vom implementa următorii pași:

1. Adăugăm dependența pentru mcp-server folosind maven sau gradle (exemplu pentru maven):

<dependency>
   <groupId>
     io.quarkiverse.mcp
   </groupId>
   <artifactId>
      quarkus-mcp-server-http
   </artifactId>
    <version>${mcp.version}</version>
</dependency>

2. Adăugăm o configurație simplă:

## Use Server-Sent Events (SSE) for 
## MCP transport
quarkus.mcp.server.transport=sse
quarkus.http.port=3000

3. Definim o capacitate de tip Tool pentru MCP Server:

@ApplicationScoped
public class VehicleTools {

    @Tool(description = "Get vehicle details by VIN")
    public JsonObject getVehicleDetails(@ToolArg(description = "VIN Number") String vin) { }
}

4. Definim o capacitate de tip Resource pentru MCP Server:

@ApplicationScoped
public class VehicleResource {

    @Resource(
        uri = "file://manual.xml",
        name = "manual",
        title = "Car manual",
        description = "Read the car manual XML file",
        mimeType = "application/xml"
    )
    public TextResourceContents readManual() {}
}

5. Definim o capacitate de tip Prompt pentru MCP Server:

@ApplicationScoped
public class VehiclePrompt {

    @Prompt(description = " Find similar cars based on a short description")
    PromptMessage findSimilarCars(@PromptArg(description = "Short description", defaultValue = "3 series") String description) {}
}

După ce avem configurat un MCP Server, avem nevoie de un MCP Client ca să explorăm capabilitățile serverului. Există un MCP Client Inspector bazat pe React, care conține o aplicație Web și care poate fi folosită cu ajutorul următoarei comenzi:

npx @modelcontextprotocol/inspector mcp.json

Putem să definim o configurație a serverului nostru MCP, folosind format JSON și să o folosim ca argument pentru MCP Client-ul de mai sus.

{
  "mcpServers": {
    "vehicle": {
      "url": "http://localhost:3000/sse",
      "transport": "sse"
    }
  }
}

Concluzie

Adoptarea serverelor MCP este esențială pentru construirea de aplicații AI enterprise, sigure și scalabile, oferind o punte de legătură standardizată între capabilitățile cognitive ale LLM-urilor și datele specifice ale organizațiilor. 

Implementarea unui MCP Server folosind Quarkus este simplă, rapidă și eficientă. Având în vedere că multe aplicații enterprise folosesc Java ca limbaj de programare, viitorul automatizării acestor aplicații enterprise a devenit puțin mai standardizat și mult mai promițător.

Referințe:

  1. https://quarkus.io/blog/mcp-server/

  2. https://modelcontextprotocol.io/docs/getting-started/intro

  3. https://medium.com/

Conferință TSM

NUMĂRUL 164 - Academic 2 Business

Sponsori

  • BT Code Crafters
  • Betfair
  • MHP
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • BMW TechWorks Romania

INTERVIU