当前位置: 首页 > news >正文

通过MCP让LLM调用系统接口

场景

MCP的出现大大丰富了LLM的功能,对于存量系统,我们希望能让模型调用已有的接口,以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server,来支持模型到内部API的调用

实现方案

使用用标准的MCP协议,重写call_toollist_tool

  • call_tool
    在这里实现调用工具的逻辑,将请求信息转发给已有系统的后端接口调用
  • list_tool
    在这里实现工具列表的查询,返回以及配置的API即可

这样我们将工具列表封装为tool_message,传递给模型,即可让模型自动选择合适的API调用。


#[derive(Debug, Clone)]
pub struct McpService;impl McpService {pub fn new() -> Self {Self {}}/// 添加或更新APIfn add_or_update_api(&self, req: Api) -> Res<()> {}/// 删除APIfn remove_api(&self, req: RemoveApiReq) -> Res<()> {}/// 查询API列表fn list_api(&self, req: Option<ListApiReq>) -> Res<PageRes<Api>> {}
}impl ServerHandler for McpService {async fn call_tool(&self,request: CallToolRequestParam,_context: RequestContext<RoleServer>,) -> Result<CallToolResult, Error> {// 请求转发}fn list_tools(&self,_request: PaginatedRequestParam,_context: RequestContext<RoleServer>,) -> impl Future<Output = Result<ListToolsResult, Error>> + Send + '_ {//返回API列表}
}

配置API:
在这里插入图片描述

在模型中使用API:
在这里插入图片描述

相关文章:

  • HTML5 浮动(Float)详解
  • VastBase的日常操作记录
  • 计算机网络:手机和基站之间的通信原理是什么?
  • 解决SQL Server SQL语句性能问题(9)——合理使用表分区
  • Chrome浏览器实验性API computePressure的隐私保护机制如何绕过?
  • 位与运算
  • windows版redis的使用
  • 用Array.from实现创建一个1-100的数组
  • element基于表头返回 merge: true 配置列合并
  • Mixup
  • LeetCode热题100--234.回文链表--简单
  • 院校机试刷题第二天:1479 01字符串、1701非素数个数
  • 部署GraphRAG配置Neo4j实现知识图谱可视化【踩坑经历】
  • 用git下载vcpkg时出现Connection was reset时的处理
  • Yolov8的详解与实战-深度学习目标检测
  • 在Spark搭建YARN
  • [:, :, 1]和[:, :, 0] 的区别; `prompt_vector` 和 `embedding_matrix`的作用
  • Pinecone 向量数据库的连接以及增删改查操作讲解
  • 51单片机——交通指示灯控制器设计
  • Tailwind CSS 实战教程:从入门到精通
  • 青海省交通运输厅副厅长田明有接受审查调查
  • 问责!美国海军对“杜鲁门”号航母一系列事故展开调查
  • 回望乡土:对媒介化社会的反思
  • 书法需从字外看,书法家、学者吴本清辞世
  • 男子发寻母视频被警方批评教育,律师:发寻亲信息是正当行为
  • 人民币对美元即期汇率盘中创半年新高,离岸市场升破7.2