01 背景:MCP协议介绍

在AI蓬勃发展的当下,大型语言模型(LLM)虽展现出强大潜力,却受困于与外部资源连接的难题。数据分散、接口繁杂,致使AI模型难以灵活对接本地资源与远程服务,极大限制了其响应质量与工作效率。而就在这一关键时刻,MCP Server强势登场,成为破局的关键力量。尤其随着Manus的火爆出圈,MCP Server也备受瞩目,迎来了飞速发展,短短1个多月时间,数量已超5000个。

MCP Server,即模型上下文协议服务器,基于Anthropic公司2024年11月开源的模型上下文协议(MCP)构建,是一款轻量级服务程序。MCP协议采用客户端-服务器(Client-Server)架构。客户端(MCP Client)负责与服务器建立稳固连接,并按需发起各类请求;服务器端则精准解析请求,调用对应资源或工具处理任务,再将处理结果及时反馈给客户端。MCP协议的诞生,旨在攻克AI应用中的数据与接口难题,为开发者提供标准化接口,让AI模型能够自由穿梭于本地与远程资源之间,显著提升AI助手的表现。下图是MCP协议的基本交互关系示意图:

02 OpenAPI2MCPTools开源项目

仔细翻阅当前公开的MCP Server清单可以发现,目前主要的MCP Server集中在桌面端软件,更多是方便个人用户和开发者。对企业内部广泛存在的现有软件系统,并没有高效兼容的方案。比如OpenAPI2MCPTools开源项目,看似只需要下面这样三十行代码,就可以将现存软件的OpenAPI规范,快速封装成MCP Server 的Tools,供AI调用。

import { Server } from '@modelcontextprotocol/sdk/server/index.js';import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';import { Converter } from 'openapi2mcptools';import * as fs from 'fs';import * as yaml from 'js-yaml';const converter = new Converter({ });const yamlContent = fs.readFileSync('Api_5.3_schema.yaml', 'utf8');const my_specs = yaml.load(yamlContent);await converter.load(my_specs);const tools = converter.getToolsList();const toolCaller = converter.getToolsCaller();const server = new Server({ name: 'my_server', version: '1.0.0',}, { capabilities: { tools: {}, },});server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools, };});server.setRequestHandler(CallToolRequestSchema, async (request) => { return await toolCaller(request);});const transport = new StdioServerTransport();await server.connect(transport);

然而,在实际的大规模系统环境下,这个项目存在一个核心问题:当API数量较大时,MCP Server的Tools数量急剧膨胀,远超大模型能有效处理的上下文窗口极限,会导致AI对话完全不可用。以日志易为例,日志易平台OpenAPI规范中一共包含了555个API,经过OpenAPI2MCPTools转换后,就是555个Tools,直接导致问话全部报错。如下图所示:

03 日志易MCP Server实现路径

为了解决这个问题,日志易MCP Server采用了模块化设计思路,利用OpenAPI规范中的Tag对象作为语义抽象层,构造了MCP Server的模块初筛和功能复筛工具,实现了对OpenAPI规范的动态加载与按需调用。最终,使得AI对话能够流畅进行,任意调用日志易API功能,而不会因为上下文窗口的限制而中断。

日志易MCP Server效果如下图,AI自主完成了对提问涉及哪些模块,哪些接口的识别和反思,最终组合Agent和AgentGroup两个API的查询结果,给出了正确回答:

04 日志易MCP Server典型应用场景和演进方向

有了MCP Server,系统维护人员只需要在统一的AI会话界面,准确的提出自己的要求,让AI来自主安排不同MCP Server相互配合,调用适合的Tools,实现最终目的。比如日志易平台维护工作中,最常见的几类需求,都可以尝试MCP Server方案:

NO.1 

涉及用户及权限管理类的API操作。

NO.2 

数据处理流程中,综合调用Agent采集、字段提取类API进行一站式处理。

NO.3 

辅助用户在AI分析过程中,快速查看已存搜索查询结果,创建对应的统计分析图表、监控告警规则,甚至联合其他ITSM系统的MCP Server,响应工单,添加评论等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91494.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91494.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91494.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django-3模型操作

from django.db import modelsclass Book(models.Model):title models.CharField(max_length200) # 书名author models.CharField(max_length100) # 作者publish_date models.DateField() # 出版日期price models.DecimalField(max_digits10, decimal_places2) # 价格s…

【绘制图像轮廓】——图像预处理(OpenCV)

目录 1 什么是轮廓 2 寻找轮廓 2.1 mode参数 2.2 method参数 3 绘制轮廓 1 什么是轮廓 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形。轮廓是连续的,边缘不一定连续。轮廓是一个闭合的、封闭的形状。 轮廓的作用: 形状分析 目…

嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)

嵌入式 Linux 深度解析:架构、原理与工程实践(增强版) 目录嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)第一章 嵌入式 Linux 基础概念1.1 定义与核心特征1.2 典型架构栈深度解析第二章 Linux 文件…

xcode swift项目运行、连接真机运行报错,引入文件夹失败

最近乱七八糟解决了很多报错,看着记录点吧 xcode版本:16 failed to emit precompiled header ‘/Users/yuqing/Library/Developer/Xcode/DerivedData/cloudspace-ios-ejldldcfhouqnretchuzoewmsqkg/Build/Intermediates.noindex/PrecompiledHeaders/spic…

[python][selenium] Web UI自动化8种页面元素定位方式

测试工程师必备!Selenium自动化测试全攻略 | 手写POM框架数据驱动,轻松搞定UI自动化!简单的加个前置知识: 第一:webdriver.Chrome()这句话,通过WebDriver的构造方法,拿到浏览器驱动的对象&…

丝杆支撑座在电子装配中的关键作用

丝杆支撑座是电子装配过程中不可或缺的组件,主要用于支撑和固定丝杆,确保其稳定性和精度。在高速、高精度装配场景中,丝杆支撑座的作用尤为突出。稳定性与精度保障:丝杆支撑座采用高品质钢材制作,具有高刚性和高强度&a…

微信小程序页面间通信的实现方式

微信小程序中页面间的通信是指不同页面之间的数据传递、状态同步或交互操作,常见于多页面协作场景。根据通信方向和场景不同,主要有以下几种实现方式:一、基于页面跳转的参数传递1. 正向传递(A页面到B页面)通过URL参数…

uniapp开发微信小程序(新旧版本对比:授权手机号登录、授权头像和昵称)

目录标题授权手机号新旧版本核心差异对比强制使用新版的情况代码实现方案特殊处理逻辑企业账号要求最佳实践建议授权头像和昵称新旧版本核心差异对比强制使用新版的情况代码实现方案最佳实践建议注意事项授权手机号 新旧版本核心差异对比 触发方式 旧版(2023年前&…

Java函数式编程之【Stream终止操作】【下】【三】【收集操作collect()与分组分区】【下游收集器】

分组收集器groupingBy():groupingBy()收集器用于按条件对元素象进行分组,并将结果存储在Map实例中。其作用与数据库的SQL语句的group by的用法有异曲同工之妙。 分区收集器partitioningBy():partitioningBy()可以看作是分组groupingBy()的特殊…

python设计模式-工厂模式

工厂模式的核心思想:封装对象创建过程、解耦对象使用与创建 。示例代码:from enum import Enum# 基类:人类 class Person:species Homo sapiensdef __init__(self, name):self.name namedef __str__(self):return f"{self.__class__._…

Rust:anyhow::Result 与其他 Result 类型转换

当函数返回的不是 anyhow::Result 而是其他 Result 类型时(如 std::io::Result、serde_json::Result 或自定义 Result),可通过以下方法统一处理错误类型,确保与 anyhow 兼容或实现错误传播:🛠️ 一、错误类…

PLC-梯形图编程

1.位运算,比较 如&#xff1a;>,<,, 2.定时器 生成脉冲TP&#xff0c;常开触点闭合触发&#xff0c;赋值10秒时长&#xff0c;PT配置参数&#xff0c;ET运行时已PT计时 接通延时TON&#xff0c;常开触点闭合触发&#xff0c;延时10秒后赋值 关断延时TOF&#xff0c;常开触…

LLM学习笔记5——InstructGPT

系列文章目录 参考文献 参考文献 参考文献 参考视频 文章目录系列文章目录前言目前大模型不同的技术流派与框架路线&#xff1a;1. ​​BERT&#xff1a;Encoder-only架构​​​​1&#xff09; 架构特点​​​​2&#xff09; 训练目标​​3&#xff09; ​​​​应用场景2. …

热能小车cad【12张】三维图+设计说明书

摘要 无碳小车来自全国大学生工程能力训练大赛题目&#xff0c;根据“节能减排&#xff0c;绿色出行”的环保理念&#xff0c;提出了一种基于热力驱动的具有方向自动控制的无碳小车。 本文设计的无碳小车主要是将热能转化成机械能&#xff0c;用来驱动小车前进的装置&#xff0…

云原生 DevOps 实战之Jenkins+Gitee+Harbor+Kubernetes 构建自动化部署体系

技术背景​ 在云原生生态中&#xff0c;工具链的选择直接决定 CI/CD 流水线的效率与稳定性。本次方案的工具组合并非偶然&#xff0c;而是基于各组件的核心优势与生态适配性&#xff1a;​ 代码管理层&#xff1a;Gitee 作为国内主流的代码托管平台&#xff0c;支持 Git 分布…

二建机电工程专业都考哪些知识点?

二建机电工程专业需要考《建设工程施工管理》《建设工程法规及相关知识》和《机电工程管理与实务》三个科目。其中《机电工程管理与实务》是专业科目&#xff0c;也是考试重点&#xff0c;主要考查机电工程技术、机电工程相关法规与标准、机电工程项目管理实务等内容。具体如下…

React + ts + react-webcam + CamSplitter 实现虚拟摄像头解决win摄像头独占的问题

一、安装 CamSplitter 这块网上有很多教程了&#xff0c;这里不再赘述&#xff0c;就一点&#xff0c;需要分几个虚拟摄像头&#xff0c;就要在CamSplitter 的安装目录下 driver_install.cmd 执行几次。二、React ts react-webcam 调用虚拟摄像头import { useState, useEffec…

【深度学习①】 | Numpy数组篇

0 序言 本文为NumPy数组库的系统学习笔记&#xff0c;将自己先前的笔记做一个总结归纳。内容涵盖数组基础、创建、索引、变形、运算、函数、布尔型数组及与张量的衔接等内容。通过具体示例解析核心概念与操作&#xff0c;帮助读者掌握NumPy的使用逻辑与方法&#xff0c;为后续深…

5.实现 call

call 是 JavaScript 中非常核心的函数方法之一。它能改变函数的执行上下文&#xff08;也就是 this 的指向&#xff09;&#xff0c;在日常开发和面试中都极其常见。本文将带你一步步实现一个 Function.prototype.call 的自定义版本&#xff0c;真正理解它的底层原理。✨ 一、c…

Go语言中的盲点:竞态检测和互斥锁的错觉

&#x1f9e0; Go语言中的盲点&#xff1a;竞态检测和互斥锁的错觉 使用 -race 就能发现所有并发问题&#xff1f;加了 mutex 就万无一失&#xff1f; 这篇文章揭示了 Go 并发编程中的一个“危险盲区” —— 互斥锁并不能总能保护你免受数据竞争的影响&#xff0c;尤其是在 -ra…