MCP Kalkulačka Tutorial pro Začátečníky
July 3, 2026 · View on GitHub
Obsah
- Co se Naučíte
- Požadavky
- Porozumění Struktuře Projektu
- Vysvětlení Hlavních Komponent
- Spuštění Příkladů
- Jak To Všechno Funguje Dohromady
- Další Kroky
Co se Naučíte
Tento tutoriál vysvětluje, jak vytvořit kalkulační službu pomocí Model Context Protocol (MCP). Pochopíte:
- Jak vytvořit službu, kterou může AI využít jako nástroj
- Jak nastavit přímou komunikaci se službami MCP
- Jak modely AI mohou automaticky vybírat, které nástroje použít
- Rozdíl mezi přímými voláními protokolu a interakcemi asistovanými AI
Požadavky
Než začnete, ujistěte se, že máte:
- Nainstalovanou Javu 21 nebo vyšší
- Maven pro správu závislostí
- Nasazení modelu Azure AI Foundry (zprovozněte příkazem
azd up— viz Kapitola 2) - Azure CLI, přihlášený příkazem
az login(autentizace bez klíče) - Základní znalost Javy a Spring Boot
Porozumění Struktuře Projektu
Projekt kalkulačky obsahuje několik důležitých souborů:
calculator/
├── src/main/java/com/microsoft/mcp/sample/server/
│ ├── McpServerApplication.java # Main Spring Boot app
│ └── service/CalculatorService.java # Calculator operations
└── src/test/java/com/microsoft/mcp/sample/client/
├── SDKClient.java # Direct MCP communication
├── LangChain4jClient.java # AI-powered client
└── Bot.java # Simple chat interface
Vysvětlení Hlavních Komponent
1. Hlavní Aplikace
Soubor: McpServerApplication.java
Toto je vstupní bod naší kalkulační služby. Je to standardní Spring Boot aplikace s jedním speciálním doplňkem:
@SpringBootApplication
public class McpServerApplication {
public static void main(String[] args) {
SpringApplication.run(McpServerApplication.class, args);
}
@Bean
public ToolCallbackProvider calculatorTools(CalculatorService calculator) {
return MethodToolCallbackProvider.builder().toolObjects(calculator).build();
}
}
Co to dělá:
- Spouští webový server Spring Boot na portu 8080
- Vytváří
ToolCallbackProvider, který zpřístupňuje naše kalkulační metody jako MCP nástroje - Anotace
@Beanříká Springu, aby tuto komponentu spravoval a aby ji mohly používat ostatní části aplikace
2. Kalkulační Služba
Soubor: CalculatorService.java
Zde se děje veškerá matematika. Každá metoda je označena anotací @Tool, aby byla dostupná přes MCP:
@Service
public class CalculatorService {
@Tool(description = "Add two numbers together")
public String add(double a, double b) {
double result = a + b;
return formatResult(a, "+", b, result);
}
@Tool(description = "Subtract the second number from the first number")
public String subtract(double a, double b) {
double result = a - b;
return formatResult(a, "-", b, result);
}
// Další operace kalkulačky...
private String formatResult(double a, String operator, double b, double result) {
return String.format("%.2f %s %.2f = %.2f", a, operator, b, result);
}
}
Hlavní vlastnosti:
- Anotace
@Tool: Umožňuje MCP, aby tuto metodu volali externí klienti - Jasné popisy: Každý nástroj má popis, který pomáhá AI modelům pochopit, kdy jej použít
- Konzistentní formát návratové hodnoty: Všechny operace vracejí lidsky čitelné řetězce jako "5.00 + 3.00 = 8.00"
- Zpracování chyb: Dělení nulou a odmocnina z negativního čísla vrací chybová hlášení
Dostupné operace:
add(a, b)- Sčítá dvě číslasubtract(a, b)- Odečítá druhé číslo od prvníhomultiply(a, b)- Násobí dvě čísladivide(a, b)- Dělí první číslo druhým (kontrola nulou)power(base, exponent)- Umocňuje základ na exponentsquareRoot(number)- Vypočítá druhou odmocninu (kontrola na záporné číslo)modulus(a, b)- Vrací zbytek po děleníabsolute(number)- Vrací absolutní hodnotuhelp()- Vrací informace o všech operacích
3. Přímý MCP Klient
Soubor: SDKClient.java
Tento klient komunikuje přímo se serverem MCP bez použití AI. Ručně volá specifické kalkulační funkce:
public class SDKClient {
public static void main(String[] args) {
McpClientTransport transport = WebFluxSseClientTransport.builder(
WebClient.builder().baseUrl("http://localhost:8080")
).build();
new SDKClient(transport).run();
}
public void run() {
var client = McpClient.sync(this.transport).build();
client.initialize();
// Vypsat dostupné nástroje
ListToolsResult toolsList = client.listTools();
System.out.println("Available Tools = " + toolsList);
// Zavolat konkrétní funkce kalkulačky
CallToolResult resultAdd = client.callTool(
new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0))
);
System.out.println("Add Result = " + resultAdd);
CallToolResult resultSqrt = client.callTool(
new CallToolRequest("squareRoot", Map.of("number", 16.0))
);
System.out.println("Square Root Result = " + resultSqrt);
client.closeGracefully();
}
}
Co to dělá:
- Připojuje se k serveru kalkulačky na
http://localhost:8080pomocí builder patternu - Vypisuje všechny dostupné nástroje (naše kalkulační funkce)
- Volá konkrétní funkce s přesnými parametry
- Tiskne výsledky přímo
Poznámka: Tento příklad používá závislost Spring AI 1.1.0-SNAPSHOT, která zavedla builder pattern pro WebFluxSseClientTransport. Pokud používáte starší stabilní verzi, možná budete muset použít přímý konstruktor.
Kdy použít: Když přesně víte, jaký výpočet chcete provést, a chcete ho volat programově.
4. Klient Pohlížený Umělou Inteligencí
Soubor: LangChain4jClient.java
Tento klient používá AI model (GPT-4o-mini), který může automaticky rozhodnout, které kalkulační nástroje použít:
public class LangChain4jClient {
public static void main(String[] args) throws Exception {
// Nastavte AI model (Azure AI Foundry, autentizace bez klíče přes Microsoft Entra ID)
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
String baseUrl = (endpoint.endsWith("/") ? endpoint : endpoint + "/") + "openai/v1";
String token = new DefaultAzureCredentialBuilder().build()
.getToken(new TokenRequestContext().addScopes("https://ai.azure.com/.default"))
.block().getToken();
ChatLanguageModel model = OpenAiOfficialChatModel.builder()
.baseUrl(baseUrl)
.apiKey(token)
.modelName("gpt-4o-mini")
.build();
// Připojte se k našemu serveru kalkulačky MCP
McpTransport transport = new HttpMcpTransport.Builder()
.sseUrl("http://localhost:8080/sse")
.logRequests(true) // Zobrazuje, co AI právě dělá
.logResponses(true)
.build();
McpClient mcpClient = new DefaultMcpClient.Builder()
.transport(transport)
.build();
// Dejte AI přístup k našim kalkulačkovým nástrojům
ToolProvider toolProvider = McpToolProvider.builder()
.mcpClients(List.of(mcpClient))
.build();
// Vytvořte AI bota, který může používat naši kalkulačku
Bot bot = AiServices.builder(Bot.class)
.chatLanguageModel(model)
.toolProvider(toolProvider)
.build();
// Nyní můžeme požádat AI, aby prováděla výpočty v přirozeném jazyce
String response = bot.chat("Calculate the sum of 24.5 and 17.3 using the calculator service");
System.out.println(response);
response = bot.chat("What's the square root of 144?");
System.out.println(response);
}
}
Co to dělá:
- Vytváří připojení k AI modelu s autentizací bez klíče (Microsoft Entra ID)
- Připojuje AI ke kalkulačnímu MCP serveru
- Dává AI přístup ke všem kalkulačním nástrojům
- Umožňuje přirozené jazykové požadavky jako „Vypočítej součet 24.5 a 17.3“
AI automaticky:
- Chápe, že chcete sčítat čísla
- Vybere nástroj
add - Zavolá
add(24.5, 17.3) - Vrátí výsledek v přirozené odpovědi
Spuštění Příkladů
Krok 1: Spusťte Server Kalkulačky
Nejdříve se přihlaste a nastavte svůj Azure AI Foundry endpoint (potřebné pro AI klienta — autentizace bez klíče, bez API klíče):
Windows:
az login
set AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
Linux/macOS:
az login
export AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
Spusťte server:
cd 04-PracticalSamples/calculator
mvn clean spring-boot:run
Server se spustí na http://localhost:8080. Měli byste vidět:
Started McpServerApplication in X.XXX seconds
Krok 2: Otestujte s Přímým Klientem
V NOVÉM terminálu, zatímco server běží, spusťte přímého MCP klienta:
cd 04-PracticalSamples/calculator
mvn test-compile exec:java -Dexec.mainClass="com.microsoft.mcp.sample.client.SDKClient" -Dexec.classpathScope=test
Uvidíte výstup jako:
Available Tools = [add, subtract, multiply, divide, power, squareRoot, modulus, absolute, help]
Add Result = 5.00 + 3.00 = 8.00
Square Root Result = √16.00 = 4.00
Krok 3: Otestujte s AI Klientem
mvn test-compile exec:java -Dexec.mainClass="com.microsoft.mcp.sample.client.LangChain4jClient" -Dexec.classpathScope=test
Uvidíte, jak AI automaticky používá nástroje:
The sum of 24.5 and 17.3 is 41.8.
The square root of 144 is 12.
Krok 4: Ukončete MCP Server
Až skončíte s testováním, AI klienta zastavíte stiskem Ctrl+C v jeho terminálu. MCP server poběží dál, dokud ho nezastavíte.
Pro zastavení serveru stiskněte Ctrl+C v terminálu, kde běží.
Jak To Všechno Funguje Dohromady
Zde je kompletní průběh, když se AI zeptáte „Kolik je 5 + 3?“:
- Vy se ptáte AI přirozeným jazykem
- AI analyzuje požadavek a pochopí, že chcete sčítat
- AI zavolá MCP server:
add(5.0, 3.0) - Kalkulační Služba provede:
5.0 + 3.0 = 8.0 - Kalkulační Služba vrátí:
"5.00 + 3.00 = 8.00" - AI přijme výsledek a vytvoří přirozenou odpověď
- Vy dostanete: „Součet 5 a 3 je 8“
Další Kroky
Pro více příkladů viz Kapitola 04: Praktické ukázky
Prohlášení o omezení odpovědnosti: Tento dokument byl přeložen pomocí AI překladatelské služby Co-op Translator. Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.