V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pppwww
V2EX  ›  程序员

[讨论] 如何把现有服务改造支持 MCP

  •  
  •   pppwww · 3 天前 · 1581 次点击

    背景: 小弟所在的团队在考虑开放一部分现有项目中的接口,使其可以支持通过 MCP 协议来提供给其他团队的 AI Agent 进行调用。目前在考虑如何实现这个诉求

    目前网上能搜到的基本上是一些 demo 的验证,一般是从 0 开始,不涉及现有服务接口的迁移

    目前考虑了几种方案:

    1 、硬编码/注解驱动:对于每一个接口或者方法实现,都通过手动编码注册的方式,注册到 mcp server, mcp server 可以于现有服务在一起也可以单出部署;不过这种方式的问题就是每次有新功能要开放出去时,都需要手动编码注册。注解驱动的话,Java 可以很快支持,改动也较小,不过只支持 Java 项目,对 golang 不支持。

    2 、代码生成:通过解析原服务的 swagger 文档等方式,自动生成代理方法,这样后续有功能开放只需要提交 API 文档即可,感觉灵活性还是蛮高的。

    想问问大家是如何对现有服务的接口集成到 mcp server 的,小弟之前对 AI Agent 的了解不多,恳请大佬们赐教

    20 条回复    2025-03-27 15:35:44 +08:00
    moonlord
        1
    moonlord  
       3 天前
    给 AI 的接口怎么都要重新设计吧,AI 有这么智能?还知道调用哪个接口?
    gopheryi
        2
    gopheryi  
       3 天前
    看了一些客户端的实现,mcp server 的信息也是要加到提示词里的,如果用 2 方式实现,太多接口提示词很容易超出限制吧
    lambdaq
        3
    lambdaq  
       3 天前
    你向 AI 问这个问题吧。2333
    Depth
        4
    Depth  
       3 天前   ❤️ 1
    FriedRiceNoodles
        5
    FriedRiceNoodles  
       3 天前
    https://mcpify.ai/

    看看这个能不能解决你的问题,不对现有的服务和接口做改造,而是新起一个专门的 MCP 服务
    InkStone
        6
    InkStone  
       3 天前   ❤️ 1
    @moonlord MCP 的原理就是这个啊……AI 根据接口的描述(自然语言)决定是否调用以及怎么调用。只要中间做个适配 MCP 协议的 adapter 就可以。
    neptuno
        7
    neptuno  
       3 天前
    建议起一个 python 服务,转发一下接口
    neptuno
        8
    neptuno  
       3 天前
    就是公司内部做一个 mcp 网关,这样就不用管其他团队后端的架构了。
    Tink
        9
    Tink  
       3 天前
    @moonlord 这不就是 mcp 解决的问题吗
    Tink
        10
    Tink  
       3 天前
    我想知道的是 mcp 的 client 端怎么解决,现在主流的几个不都是集成到了编码工具或者 ai 聊天工具里面吗
    yrzs
        11
    yrzs  
       2 天前
    在现有服务的基础上实现一层 MCP 协议的 API Gateway,在 Gate 层实现 MCP 协议的支持,并且做鉴权和现有服务的对接、裁剪工作
    7gugu
        12
    7gugu  
       2 天前
    @moonlord AI 会根据上下文自动推断的,MCP 主要是给 AI 提供了一个标准化的操作接口,可以让 AI 操作后,拿到符合标准的上下文信息,便于后续的逻辑执行。
    pppwww
        13
    pppwww  
    OP
       2 天前
    @yrzs 这个是 client 调用 server 进行执行 tool 的时候么,这个我倒可以理解; mcp server 不是还要支持 toolList 这种的获取么,这种是如何把我们项目中的接口转换成 mcp server 认为的 tools 的呢
    pppwww
        14
    pppwww  
    OP
       2 天前   ❤️ 1
    @Tink 看了 openManus 中关于 client 端的调用实现以及官方给的使用示例( https://modelcontextprotocol.io/quickstart/client), 其实就是 client 向 server 查询 list_tools ,然后把这些 tools 转换成了 LLM 调用时的 tool 列表。对于不同的 LLM 模型,可能要自己做 adapter
    pppwww
        15
    pppwww  
    OP
       2 天前
    @yrzs 其实还一点困惑在于,sever 返回的 tools 列表,其中关于 input_schema 是不是没有严格要求,只要能返回 name, description 还有 inputSchema 的三元组就可以了,具体 inputSchema 的组织形式没有严格定义。因为还没看过 mcp 协议的原始论文规范,所以这一块有点模糊。
    pppwww
        16
    pppwww  
    OP
       2 天前
    @Depth 感谢 我看下一下
    pppwww
        17
    pppwww  
    OP
       2 天前
    @FriedRiceNoodles 感谢,我研究一下
    pppwww
        18
    pppwww  
    OP
       2 天前
    @lambdaq 就是问过了,然后感觉还是不太清晰,wwwww
    pppwww
        19
    pppwww  
    OP
       2 天前
    @neptuno 大佬你的想法应该和下面 yrzs 提出的类似?
    neptuno
        20
    neptuno  
       2 天前
    @pppwww 对呀,要做网关,不要侵入以前的业务了。而且你看 ai 现在的趋势,就是要有统一的协议。公司内部也要有统一的 ai 网关。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   931 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:24 · PVG 06:24 · LAX 15:24 · JFK 18:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.