序
本文主要研究一下langchain4j对Model Context Protocol (MCP) 的支持
MCP
MCP协议规定了两种传输方式:
- HTTP:客户端请求一个SSE(Server-Sent Events)通道以从服务器接收事件,然后通过HTTP POST请求发送命令。这种方式适用于需要跨网络通信的场景,通常用于分布式系统或需要高并发的场景。
- stdio:客户端可以将MCP服务器作为本地子进程运行,并通过标准输入/输出直接与其通信。这种方式适用于本地集成和命令行工具,适合简单的本地批处理任务。
如果需要让ChatModel或AI service运行由MCP服务器提供的工具,则需要创建一个MCP tool provider
McpToolProvider
McpTransport
McpTransport transport = new StdioMcpTransport.Builder()
.command(List.of("/usr/bin/npm", "exec", "@modelcontextprotocol/server-everything@0.6.2"))
.logEvents(true) // only if you want to see the traffic in the log
.build();
对于HTTP方式则如下:
McpTransport transport = new HttpMcpTransport.Builder()
.sseUrl("http://localhost:3001/sse")
.logRequests(true) // if you want to see the traffic in the log
.logResponses(true)
.build();
McpClient
McpClient mcpClient = new DefaultMcpClient.Builder()
.transport(transport)
.logMessageHandler(new MyLogMessageHandler())
.build();
基于McpTransport创建McpClient,可以指定logMessageHandler来打印相关信息,可以通过client.listResources()、client.listResourceTemplates()来返回MCP的resources
LangChain4j对MCP协议的支持

最低0.47元/天 解锁文章
722





