ਇਹ ਪ੍ਰੋਜੈਕਟ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਇੱਕ Java ਕਲਾਇੰਟ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਜੋ MCP (Model Context Protocol) ਸਰਵਰ ਨਾਲ ਜੁੜਦਾ ਹੈ ਅਤੇ ਇਸ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਦਾ ਹੈ। ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ ਚੈਪਟਰ 01 ਦੇ ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਨਾਲ ਜੁੜ ਕੇ ਵੱਖ-ਵੱਖ ਗਣਿਤੀ ਕਾਰਜ ਕਰਾਂਗੇ।
ਇਸ ਕਲਾਇੰਟ ਨੂੰ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ:
- ਚੈਪਟਰ 01 ਤੋਂ ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਸ਼ੁਰੂ ਕਰੋ:
- ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਜਾਓ:
03-GettingStarted/01-first-server/solution/java/ - ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਬਣਾਓ ਅਤੇ ਚਲਾਓ:
cd ..\01-first-server\solution\java .\mvnw clean install -DskipTests java -jar target\calculator-server-0.0.1-SNAPSHOT.jar - ਸਰਵਰ
http://localhost:8080'ਤੇ ਚੱਲ ਰਿਹਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ
- ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਜਾਓ:
`
- Java 21 or higher installed on your system
- Maven (included via Maven Wrapper)
The `SDKClient ਇੱਕ Java ਐਪਲੀਕੇਸ਼ਨ ਹੈ ਜੋ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਿਵੇਂ:
- Server-Sent Events (SSE) ਟਰਾਂਸਪੋਰਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ MCP ਸਰਵਰ ਨਾਲ ਜੁੜਿਆ ਜਾਵੇ
- ਸਰਵਰ ਤੋਂ ਉਪਲਬਧ ਟੂਲਾਂ ਦੀ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾਵੇ
- ਵੱਖ-ਵੱਖ ਕੈਲਕੂਲੇਟਰ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਦੂਰੇ ਤੌਰ 'ਤੇ ਕਾਲ ਕੀਤਾ ਜਾਵੇ
- ਜਵਾਬਾਂ ਨੂੰ ਹੈਂਡਲ ਕਰਕੇ ਨਤੀਜੇ ਦਿਖਾਏ ਜਾਣ
ਕਲਾਇੰਟ Spring AI MCP ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ:
- ਕਨੈਕਸ਼ਨ ਸਥਾਪਿਤ ਕਰਨਾ: ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਲਈ WebFlux SSE ਕਲਾਇੰਟ ਟਰਾਂਸਪੋਰਟ ਬਣਾਉਂਦਾ ਹੈ
- ਕਲਾਇੰਟ ਸ਼ੁਰੂ ਕਰਨਾ: MCP ਕਲਾਇੰਟ ਸੈੱਟਅਪ ਕਰਦਾ ਹੈ ਅਤੇ ਕਨੈਕਸ਼ਨ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ
- ਟੂਲਾਂ ਦੀ ਖੋਜ: ਸਾਰੇ ਉਪਲਬਧ ਕੈਲਕੂਲੇਟਰ ਆਪਰੇਸ਼ਨਾਂ ਦੀ ਸੂਚੀ ਦਿਖਾਉਂਦਾ ਹੈ
- ਕਾਰਜ ਕਰਵਾਉਣਾ: ਉਦਾਹਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਗਣਿਤੀ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ
- ਨਤੀਜੇ ਦਿਖਾਉਣਾ: ਹਰ ਗਣਨਾ ਦੇ ਨਤੀਜੇ ਵੇਖਾਉਂਦਾ ਹੈ
src/
└── main/
└── java/
└── com/
└── microsoft/
└── mcp/
└── sample/
└── client/
└── SDKClient.java # Main client implementation
ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਮੁੱਖ dependencies ਹਨ:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>ਇਹ dependency ਮੁਹੱਈਆ ਕਰਦਾ ਹੈ:
McpClient- The main client interfaceWebFluxSseClientTransport- ਵੈੱਬ-ਅਧਾਰਿਤ ਸੰਚਾਰ ਲਈ SSE ਟਰਾਂਸਪੋਰਟ- MCP ਪ੍ਰੋਟੋਕੋਲ schemas ਅਤੇ request/response ਕਿਸਮਾਂ
Maven wrapper ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰੋਜੈਕਟ ਬਣਾਓ:
.\mvnw clean installjava -jar .\target\calculator-client-0.0.1-SNAPSHOT.jarNote: ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ http://localhost:8080 'ਤੇ ਚੱਲ ਰਿਹਾ ਹੈ
- ਟੂਲਾਂ ਦੀ ਸੂਚੀ - ਸਾਰੇ ਉਪਲਬਧ ਕੈਲਕੂਲੇਟਰ ਆਪਰੇਸ਼ਨਾਂ ਨੂੰ ਦਿਖਾਉਂਦਾ ਹੈ
- ਗਣਨਾਵਾਂ ਕਰਵਾਉਣਾ:
- ਜੋੜ: 5 + 3 = 8
- ਘਟਾਓ: 10 - 4 = 6
- ਗੁਣਾ: 6 × 7 = 42
- ਭਾਗ: 20 ÷ 4 = 5
- ਘਾਤ: 2^8 = 256
- ਵਰਗਮੂਲ: √16 = 4
- ਪਰਮਾਣੂ ਮੁੱਲ: |-5.5| = 5.5
- ਮਦਦ: ਉਪਲਬਧ ਕਾਰਜ ਦਿਖਾਉਂਦਾ ਹੈ
Available Tools = ListToolsResult[tools=[Tool[name=add, description=Add two numbers together, ...], ...]]
Add Result = CallToolResult[content=[TextContent[text="5,00 + 3,00 = 8,00"]], isError=false]
Subtract Result = CallToolResult[content=[TextContent[text="10,00 - 4,00 = 6,00"]], isError=false]
Multiply Result = CallToolResult[content=[TextContent[text="6,00 * 7,00 = 42,00"]], isError=false]
Divide Result = CallToolResult[content=[TextContent[text="20,00 / 4,00 = 5,00"]], isError=false]
Power Result = CallToolResult[content=[TextContent[text="2,00 ^ 8,00 = 256,00"]], isError=false]
Square Root Result = CallToolResult[content=[TextContent[text="√16,00 = 4,00"]], isError=false]
Absolute Result = CallToolResult[content=[TextContent[text="|-5,50| = 5,50"]], isError=false]
Help = CallToolResult[content=[TextContent[text="Basic Calculator MCP Service\n\nAvailable operations:\n1. add(a, b) - Adds two numbers\n2. subtract(a, b) - Subtracts the second number from the first\n..."]], isError=false]
Note: Maven ਚਲਾਉਂਦੇ ਸਮੇਂ ਅੰਤ ਵਿੱਚ ਕੁਝ lingering threads ਬਾਰੇ ਵਾਰਨਿੰਗ ਆ ਸਕਦੀ ਹੈ - ਇਹ reactive ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਸਧਾਰਣ ਗੱਲ ਹੈ ਅਤੇ ਕੋਈ ਗਲਤੀ ਨਹੀਂ ਹੈ।
var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));ਇਹ ਇੱਕ SSE (Server-Sent Events) ਟਰਾਂਸਪੋਰਟ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਨਾਲ ਜੁੜਦਾ ਹੈ।
var client = McpClient.sync(this.transport).build();
client.initialize();ਇੱਕ synchronous MCP ਕਲਾਇੰਟ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਕਨੈਕਸ਼ਨ ਸੈੱਟਅਪ ਕਰਦਾ ਹੈ।
CallToolResult resultAdd = client.callTool(new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0)));"add" ਟੂਲ ਨੂੰ ਪੈਰਾਮੀਟਰ a=5.0 ਅਤੇ b=3.0 ਨਾਲ ਕਾਲ ਕਰਦਾ ਹੈ।
ਜੇ ਤੁਸੀਂ ਕਨੈਕਸ਼ਨ ਵਿੱਚ ਗਲਤੀ ਪਾਉਂਦੇ ਹੋ, ਤਾਂ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਚੈਪਟਰ 01 ਤੋਂ ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਚੱਲ ਰਿਹਾ ਹੈ:
Error: Connection refused
Solution: ਪਹਿਲਾਂ ਕੈਲਕੂਲੇਟਰ ਸਰਵਰ ਸ਼ੁਰੂ ਕਰੋ।
ਜੇ ਪੋਰਟ 8080 ਬਿਜੀ ਹੈ:
Error: Address already in use
Solution: 8080 ਪੋਰਟ ਵਰਤ ਰਹੀਆਂ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਬੰਦ ਕਰੋ ਜਾਂ ਸਰਵਰ ਨੂੰ ਵੱਖਰਾ ਪੋਰਟ ਵਰਤਣ ਲਈ ਬਦਲੋ।
ਜੇ ਤੁਹਾਨੂੰ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀਆਂ ਮਿਲਦੀਆਂ ਹਨ:
.\mvnw clean install -DskipTestsਇਸ ਗੱਲ ਦੀ ਸੂਚਨਾ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਜਾਣੋ ਕਿ ਸਵੈਚਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮਰੱਥਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੇ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੀ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।