Waayo, waxaa laga yaabaaWaayo, waxaan ka soo bandhigo badanQalabkaQalabka 4JWaxaan ka heli karaa sida loo isticmaali karaa Server Model Context Protocol ee LangChain4J.
Qalabka 1 Beta
Waayo, waxa uu ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah.
Date |
Release |
---|---|
September 25th, 2024 |
0.35.0 |
December 22th, 2024 |
1.0.0-alpha1 |
February 10th, 2025 |
1.0.0-beta1 |
March 13th, 2025 |
1.0.0-beta2 |
April 12th, 2025 |
1.0.0-beta3 |
25 Eyl, 2024
0 0 0 0 0
22 Dhamaan, 2024
1.0.0-Alpha1 waaweyn
10 Pebrero, 2025
Haku: 1.0 beta1
13 Markuu, 2025
Marka: www.beta2
Tusaale 12 April, 2025
Marka: www.beta3
LangChain4J oo ku saabsanHakuWaayo, waxaan ka mid ahaysaa in ay ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah.
v0.35 |
v1.0.0-beta3 |
---|---|
val s = Sinks.many() |
val s = Sinks.many() |
Qalabka Qalabka Qalabka Qalabka
Haku(
.onBackpressureBuffer<String>()
chatBot.talk(m.sessionId, m.text)
.onNext(s::saxiixiixiixiixiix)
Waayo, waxaa laga yaabaa in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay.
Qalabka
Qalabka (
Haku(
Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka
Qalabka Qalabka Qalabka Qalabka
)
Qalabka Qalabka Qalabka Qalabka
Haku(
.onBackpressureBuffer<String>()
chatBot.talk(m.sessionId, m.text)
Waayo, waxaa loo yaabaa in aad u baahan tahay in ay u baahan tahay in ay u baahan tahay in ay u baahan tahay in ay u baahan tahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay.
Waayo, waxaa laga yaabaa in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay in ay u baahan yahay.
.onCompleteResponse {
Qalabka (
Haku(
Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka
Qalabka Qalabka Qalabka Qalabka
)
Shirkadda Reactor Integration
LangChain4J waxaa loo isticmaalaa Project Reactor integration; Waxaan ka heli karaa in aad u soo xiriir.a lot.
Waxaan isticmaali karaaAiServices
Sida loo yaabaa, waxaan ku yaalaa interface ee LangChain4J si ay u adeegsanayo at runtime:
interface ChatBot {
fun talk(@MemoryId sessionId: String, @UserMessage message: String): TokenStream
}
Waxaad ka mid ah soo xiriir in la soo xiriir:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-reactor</artifactId>
<version>1.0.0-beta3</version>
</dependency>
Waxaad ka soo xiriir in la soo xiriir aFlux<String>
Qalabka ATokenStream
Halkan waxaa laga yaabaa in la soo xiriir:
interface ChatBot {
fun talk(@MemoryId sessionId: String, @UserMessage message: String): Flux<String>
}
Waa in la aasaasay in la aasaasay.sink
Marka aad u baahan tahay in aad u isticmaali karaa codka ka mid ah:
val flux = chatBot.talk(m.sessionId, m.text)
ServerResponse.ok().bodyAndAwait(flux.asFlow())
Waayo, two day of debugging can easily save you two hours of reading the documentation!
Sida loo isticmaali karaa Server Context Protocol
Sida loo yaabaa, waxaan u baahan tahay in la xigtay <abbr title="Model Context Protocol">MCP</abbr> ee loo isticmaalo LangChain4J.
Retrieval-Augmented soo saarka
Ma rabtaa in ka badan oo dhan midabka si ay u baabuurta <abbr title="Large Language Model">LLM</abbr>: waxa ay ka mid ah in ka mid ah waqti iyo dhismaha. Si kastaba ha ahaatee, shirkadaha ku raaxeysan in ay ka mid ah warshadaha model cusub. Relevancy of a model ka mid ah ka mid ah waqti ay ku yaalaa si wax soo saarka iyo wax soo saarka, laakiin database of the LLM waa mid ka mid ah.
Retrieval-Augmented Generation waa nidaamka two-step.In dhismaha ugu horeysay, dhismaha ka soo xiriir data, vectorize ku saabsan LLM, iyo ku salaysan in database vector; in dhismaha ugu horeysay, dhismaha loo isticmaalaa database sida dhismaha dheeraad ah ka horumarka LLM.
Nala soo xiriir Protocol
Sida loo yaqaan 'MCP' waa mid ka mid ah macluumaadka oo ka mid ah macluumaadka.
MCP waa mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah.
-- Waayo, si loo yaqaan Model Context Protocol
MCP waa mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah.
-- Waayo, si loo yaqaan Model Context Protocol
MCP waxaa laga yaabaa 2 faahfaahfaahfaahfaahfaahfaahfaaha RAG:
-
Data processed by a RAG is tailored for a model. If one wants to use a new model, one must re-execute the parsing phase. MCP standardizes the interactions between a client and a server, making them technology-independent.
-
RAG allows the reading of data. MCP allows any API call to either access data dynamically or execute actions!
Qalabka MCP2 Qalabka TransportationSida loo isticmaali karaa Client-Server:
- stdio: Client la xiriyaan subprocess, iyo xawaaraha waxaa laga yaabaa in standard iyo out standard.
- HTTP iyo Server-Sent
Xafiiska Solution
Sida loo yaqaan 'MCP Server', waxaan ka mid ah ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah MCP Server.HakuWaxaa laga yaabaa in la soo bandhigay, laakiin waxaan ka heli karaaMacluumaadka GitHub MCP ServerSida loo yaqaan 'LangChain4J Documentation' waxaa loo yaqaan 'LangChain4J'.
GitHub MCP Server waxaa loo isticmaali karaaHakuWaxaa la mid ah in ay u baahan tahay in la soo saarka binary iyo loo soo saarka in la isticmaalo. Waxaa laga yaabaa si ay u soo saarka HTTP, laakiin ka mid ah waqti ugu badan oo ku yaalaa HTTP si ay u model iyo waqti macluumaadka ka mid ah, waxaa laga yaabaa.
Waayo, ka dib markii ay u baahan tahay in ay uQalabka ProxyProject. Waxaad ka heli karaa mid ka mid ah stdio si HTTP ama HTTP si stdio. Waxaad sidoo kale waxaa laga yaabaa sida image Docker. Waxaan sidoo kale la isticmaalaa sida server iyo proxy la soo bandhigay:Dockerfile
:
FROM ghcr.io/sparfenyuk/mcp-proxy:latest
ENV VERSION=0.2.0
ENV ARCHIVE_NAME=github-mcp-server_Linux_x86_64.tar.gz
RUN wget https://github.com/github/github-mcp-server/releases/download/v$VERSION/$ARCHIVE_NAME -O /tmp/$ARCHIVE_NAME \ #1
&& tar -xzvf /tmp/$ARCHIVE_NAME -C /opt \ #2
&& rm /tmp/$ARCHIVE_NAME #3
RUN chmod +x /opt/github-mcp-server #4
- Soo dejisan archive
- Haku
- Waayo, waxaa loo isticmaali karaa
- Qalabka dhismaha binary
Markaad ka mid ah in ay u definedCMD
Sida loo yaqaan 'binary' waxay ka mid ah loo isticmaalaa port iyo host oo ka mid ah macluumaadka.docker-compose.yaml
:
services:
mcp-server:
build:
context: github-mcp-server
env_file:
- .env #1
command:
- --pass-environment #2
- --sse-port=8080 #3
- --sse-host=0.0.0.0 #4
- -- #5
- /opt/github-mcp-server #6
- --toolsets
- all
- stdio
- Waayo, waxaa loo isticmaali karaa GITHUB_PERSONAL_ACCESS_TOKEN mid ka mid ah macluumaadka macluumaadka ee GitHub.
- Waayo, waxaa laga yaabaa in ay ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah.
- Qalabka Qalabka
- Qalabka IP
- The proxy "coneys" la server stdio MCP ka dib markii dhismaha
- Shuruudda server oo dhan oo ku habboon
Qalabka waxaa loo isticmaali karaa/sse
Ku saabsan port 8080
codka Solution
Shuruudaha ugu horeysay ee loo yaqaan 'Coding part is the easiest. Head down toLangChain4J dhismaha on MCPSida loo yaabaa, waxaa loo yaabaa in ay ku saabsan:
bean {
val transport = HttpMcpTransport.Builder()
.sseUrl(ref<ApplicationProperties>().mcp.url) //1
.logRequests(true) //2
.logResponses(true) //2
.build()
val mcpClient = DefaultMcpClient.Builder()
.transport(transport)
.build()
mcpClient.listTools().forEach { println(it) } //3
McpToolProvider.builder()
.mcpClients(listOf(mcpClient))
.build()
}
bean {
coRouter {
val chatBot = AiServices
.builder(ChatBot::class.java)
.streamingChatLanguageModel(ref<StreamingChatLanguageModel>())
.chatMemoryProvider { MessageWindowChatMemory.withMaxMessages(40) }
.contentRetriever(EmbeddingStoreContentRetriever.from(ref<EmbeddingStore<TextSegment>>()))
.toolProvider(ref<McpToolProvider>()) //4
.build()
POST("/")(PromptHandler(chatBot)::handle)
}
}
- Waxaan la soo bandhigiyaa class ConfigurationProperty si ay u isticmaali karaa URL SSE
- Protokollada MCP waa mid ka mid ah in ay ku soo saarka logs ka mid ah client.
- Ma waxaad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan yahay.
- Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka
Waayo, model waa in la soo xiriir oo ku saabsan mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah.
curl -N -H 'Content-Type: application/json' localhost:8080 -d '{ "sessionId": "1", "text": "What are my top three most popular GitHub repos?" }'
Waayo, waxaan u baahan tahay in ay ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah.
Unfortunately, the provided text does not contain any information about your top three most popular GitHub repositories. The text appears to be a blog post or a personal website, and it mentions some of your projects and experiences with GitHub, but it does not provide any metrics or statistics on the popularity of your repositories.
If you want to know more about the popularity of your GitHub repositories, I would recommend checking out GitHub's own analytics tools, such as GitHub Insights or the Repository Insights API. These tools can provide information about the number of followers, stars, and forks for each repository, as well as other metrics like engagement and activity.
Model waxaa lagu soo bandhigay in ay ka mid ah wax soo saarka oo ka mid ah wax soo saarka.
Qalabka Solution
Waxa uu ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah.
Shuruudaha ugu soo saarka waaweyn ee shuruudaha waaweyn ee shuruudaha waaweyn ee shuruudaha waaweyn ee shuruudaha waaweyn ee shuruudaha waaweyn ee shuruudaha waaweyn.github-mcp-server
ku saabsan codsiga iyo codsiga iyo codsiga iyo codsiga iyo codsiga.
I was about to give up when I decided to come back to the roots. Waxaan ka soo xiriirXubin ka mid ah dokumentationQalabka ugu horeysay ee ay ka mid ah mid ka mid ah mid ah mid ka mid ah.
Waxaa la isticmaali karaa OpenAI, laakiin waxaan la isticmaali karaa Ollama. Waxaan u isticmaali karaa MCP iyo OpenAI, Mistral AI, iyo Ollama. Only model OpenAI works with MCP.
curl -N -H 'Content-Type: application/json' localhost:8080 -d '{ "sessionId": "1", "text": "What are my top three most popular GitHub repos?" }'
Tani, OpenAI ka mid ah loo soo xiriir in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u hesho:
Here are my findings regarding your top three most popular GitHub repositories:
1. **[opentelemetry-tracing](https://github.com/nfrankel/opentelemetry-tracing)**
- **Description**: Demo for end-to-end tracing via OpenTelemetry.
- **Stars**: 68
- **Forks**: 25
- **Open Issues**: 10
2. **[kaadin](https://github.com/nfrankel/kaadin)**
- **Description**: Kotlin DSL for Vaadin.
- **Stars**: 44
- **Forks**: 12
- **Open Issues**: 3
3. **[jvm-controller](https://github.com/nfrankel/jvm-controller)**
- **Description**: Example on how to write a Kubernetes controller in Java.
- **Stars**: 33
- **Forks**: 10
- **Open Issues**: 0
These repositories demonstrate a range of your interests and contributions in the areas of observability, Kotlin development, and Kubernetes.%
Waayo, sidoo kale waxaa loo yaqaan "MCP server" oo loo yaqaan "GitHub API" oo loo yaqaan "MCP server" oo loo yaqaan "GitHub API" oo loo yaqaan "GitHub API" oo loo yaqaan "GitHub".my reposSidee waa mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah.
Qalabka ugu badan,QEEBEMarka aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan yahay.
Qalabka
Qalabka ugu weyn ee post this waa integration of a MCP server in a LangChain4J app. Haddii loo soo saarka waa mid ka mid ah dhismaha, waxaa ka mid ah mid ka mid ah wax soo saarka.
Sida loo yaqaan MCP Server waa mid ka mid ah macluumaadka aad.mcp-proxy
Sidaas, LangChain4J waxaa loo yaqaan 'abstraction leaky'. Waxaa la sameeyaan oo dhan in ay ku bixiyaan in ay ku saabsan layer abstraction ah, laakiin loo yaqaan 'implementations under it shields you from are not equal. I wish the documentation would mention it, although I understand the current version is in beta.
Waxa uu ku saabsan MCP oo dhan, oo ay ka dhigi karaa in ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah.
Codka soo saarka ah ee post this can be found onHaku.
To go further:
- Sida loo yaqaan Model Context Protocol
- Hadda MCP Server iyo Client
- LangChain4J - Model Context Protocol (MCP)
Warbixinta oo ku saabsan A Java Geek on April 27th, 2025
Marka: Java Geek