大模型的得力干将MCP(3) - SSE服务
大模型的得力干将MCP(3) - SSE服务
麦金叔的AI之旅今天我们将继续学习,将了解MCP服务的另一种通信方式。当然这两种都是有不同的适用场景的,并非竞争的关系。后面也会说明,其各自的优缺点和场景。
等系列课学习完成,你将能了解什么是MCP,如何开发MCP和如何实际使用它(当然我们会回归到Dify中,配合LLM,更加完善我们的AI应用适用场景)。
**01.**动手准备
在我们动手写一个自己的SSE版本的MCP之前,又需要了解协议的一些概念,这样做起来就得心应手了。
Resoures:暴露结构化数据的内容给LLM。
Prompts:提供给LLM应用的可重用Prompt模板。
Tools:提供在服务端给LLM应用特别是Agent使用的工具。
Roots:定义API的接入点和访问路径
Sampling:允许服务器通过客户端请求LLM完成
当然以上不是全部都必须,比如可以只实现Tools功能,那我们同样从TypeScript的SDK开始。
上一课的例子是通过stdio传输数据,即数据是本地机器的进程间通信。适合AI助手工具来软件使用。
而今天我们来尝试实现远程通信。
**02.**动手做一做
复制一下上节课的项目,做以下修改:
1 | const app = express(); |
记得把express包依赖也加入到package.json。
1 | npm run build |
测试一下是否工作正常。使用API测试工具,访问http://localhost:3001/sse,如果成功,会出现如下图结果。
同时,刚刚启动node的窗口,也会打印”Received connection”的日志。
这样,就完成了SSE的MCP服务改造。
**03.**补充说明
看起来一切都是那么的简单。但是仅仅靠测试工具测试它工作,这才是第一步。而我们要让它服务大模型,所以还需要一个相对于的MCP client,让它们之间正常交互数据,才算完整。
不要着急,麦金叔接下来会继续介绍,请耐心等待。
总结
今天学习了MCP服务的SSE实现。理解stdio的方式与封装为远程服务之间的代码差异。但是,还有更多的MCP的模块没有引入,后面的文章将继续探讨,敬请期待。