最近在看 AI Agent,想做 AI 助手。手搓了几个 MCP Server,业界有权威的“AI Agent 设计方法论”吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
fushall
V2EX    程序员

最近在看 AI Agent,想做 AI 助手。手搓了几个 MCP Server,业界有权威的“AI Agent 设计方法论”吗?

  •  
  •   fushall 277 天前 3619 次点击
    这是一个创建于 277 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,楼主最近想着用 AI 做几个助手,目前已经把工作中用到的一些东西,弄成 mcp server 了,

    (无非就是封装了几个 sql ,弄了一些 base64 的小工具。 )

    于是想着做点儿更好玩的,比如能自动采集新闻,提取单词,和我自己单词库做对比,

    或者自动生成 英文朗读语音之类的 “AI Agent”


    网上猛搜了一下,没有找到权威的“如何设计 AI Agent”类似的东西

    只有一些开源框架, 什么 autogen ,langgraph ,看了一下都太复杂了,

    于是来论坛提问,有知道的老哥可以帮指指路吗?

    其实核心需求就是能把手头的 mcp server 利用起来,让 ai agent 后台能完成一些事儿。

    像 cursor ,每次对话都让我点击确认按钮,才能运行 mcp tool ,

    需要人工参与有点繁琐。。。

    第 1 条附言    277 天前

    竟然有小伙伴不知道怎么写http版本的mpc server,楼主贴个例子 ,

    from mcp.server.fastmcp import FastMCP # Create an MCP server mcp = FastMCP( "Demo", debug=True, log_level='INFO', host="0.0.0.0", port=8000, ) # Add an addition tool @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b # Add a dynamic greeting resource @mcp.resource("greeting://{name}") def get_greeting(name: str) -> str: """Get a personalized greeting""" return f"Hello, {name}!" if __name__ == '__main__': mcp.run('sse') 
    22 条回复    2025-04-08 12:34:01 +08:00
    namonai
        1
    namonai  
       277 天前
    问 AI
    dapang1221
        2
    dapang1221  
       277 天前
    我到现在都没明白 MCP 是个啥,cursor 里配置的都是 npx 命令,不是持续的服务,每次运行才会通过 npx 启动吗,传入啥传出啥……
    fushall
        3
    fushall  
    OP
       277 天前   1
    @dapang1221
    mcp 说白了就是一些 http 接口,只不过这些 http 接口是规定好的,不能自己改。每个支持 mcp 协议的产品按照这个规范,可以从 mcp server 里拿数据,或者让 mcp server 完成一些功能。

    可以理解为你写了一个 web 服务器,有各种接口,并提供了 swagger ,别人可以用你提供的 swagger 规范调你的接口
    callmejoejoe
        4
    callmejoejoe  
       277 天前
    看了这个吗? https://v2ex.com/t/1119962
    感觉还好啊,晚点我也想做一些 agent 试试。
    ychost
        5
    ychost  
       277 天前   1
    @dapang1221 CP 有 Local/Remote 两种实现,你说的这个是 Local 实现,npx 启动之后会通过进程通信 stdin/stdout 与 Client 通信完成 list_tools 等调用
    rev1si0n
        6
    rev1si0n  
       277 天前   1
    @dapang1221 MCP 支持 stdio 和 sse 作为通信渠道,你说的 npx 这种都是 command 类型,都是使用的 stdio 进行通信,即持续的读取和写入标准输入和输出来进行通信。npx 只是一种,你写 python 用 python 命令也行,官方的有 sdk ,你自己手撸协议,用 C 写都行。另一种方式就是 SSE ,这就是比较常规的了,通过 HTTP 协议进行沟通。主要有两点,一点是需要有个 SSE 端点,这个 SSE 端点会保持连接,在浏览器打开的状态就是一直处于加载中的状态。这个端点用于保持长连接以及接收服务端的响应数据,另外,在 SSE 端点打开后,服务端会推送专门的命令端点,大模型应用会通过这个端点往服务端 POST 命令,包括 tool 执行等,命令执行完后,结果应该通过 SSE 端点进行下发。个人觉得,这个协议设计的不是那么规范好用甚至感觉就是拍屁股想出来的,搞不懂为什么不用 websocket 作为传输协议,虽然貌似后期这个东西应该会支持。总之就是这么回事,别问我为什么知道,因为刚自行实现了个 MCP 服务端。
    ychost
        7
    ychost  
       277 天前   1
    建议去参考 OpenAI 的 Agents 开源实现,这个比较简单
    yifangtongxing28
        8
    yifangtongxing28  
       277 天前
    mcp 楼主用的 http 么,他那个 demo 好像只支持 stdio 标准连接,你实现的是类似 http 端口号连接么
    fushall
        9
    fushall  
    OP
       277 天前
    @yifangtongxing28
    用的 sse 模式呀,其实就是 http 的
    fushall
        10
    fushall  
    OP
       277 天前
    @callmejoejoe 这个已经拜读过了,内容真的非常详细。只不过里面的例子是 mcp sdk 官方 demo ,有点过于“底层”了。不是我想要的
    yifangtongxing28
        11
    yifangtongxing28  
       277 天前
    @fushall 哈哈,我跟着 github 上官方文档写了个 stduio 版本的,你这个例子贴的太及时了,python 垃圾选手搜文档都没搜到
    JustW
        12
    JustW  
       277 天前
    你这个问题是不是配置那份官方代码里的 servers_config.json 就行了.
    min
        13
    min  
       277 天前
    要合理总结你的需求,这样才可以轻松 vibe coding

    你的需求是:
    *我需要实现一个 mcp client
    *可以支持配置多个 mcp server
    *可以选择哪些 mcp server 是可用的
    *支持通过 prompt 和 claude 3.7 llm 调度所需的 mcp server 完成任务
    *任务完成过程中的步骤,用户可以选择是否需要确认
    fushall
        14
    fushall  
    OP
       277 天前
    @JustW 不是的,我想实现一个“AI 助手,不用我操心就能干活的”


    @min 感觉也不是这个东西。我想要的不是具体代码,而是 “如何设计 AI Agent” 的思路,比如应该分成哪些概念,每个概念应该做什么,如何设计才是最佳实践等等
    min
        15
    min  
       277 天前
    知乎上面找对 manus 原理的拆解文章,然后看 openmanus 和 owl 是怎么实现的
    ChristopherWu
        16
    ChristopherWu  
       277 天前
    设计规划可以看看这个: https://www.aiprotocolshub.com
    把主流的 Function Calling 、ChatML 、MCP 、ReAct 等协议的标准、教程和实现示例都汇总了一下,还有测试工具
    foolishcrab
        17
    foolishcrab  
       277 天前 via iPhone   1
    业界连 agent 的定义都没折腾明白呢
    说白了工业界就是大力出奇迹,等到一个库或者框架足够流行的时候它就是最佳实践,它就是定义。现在 ai 显然没到这个地步,这会去学这些都是会马上过时的
    gy0624ww
        18
    gy0624ww  
       277 天前   1
    cursor 中 你设置 yolo 模式,就可以自动调用 mcp 了,不需要手动点
    jruing97
        19
    jruing97  
       275 天前
    /div>
    请教下大佬,cursor+MCP 支持文件处理吗?
    fushall
        20
    fushall  
    OP
       275 天前
    @jruing97 当然可以咯。自己手搓一个能处理文件的 mcpserver ,接入到 cursor 就行啦
    frank42a
        21
    frank42a  
       265 天前
    @rev1si0n 相比 SSE ,WebSocket 太重了,而且也不怎么需要双向通讯,SSE 单向的貌似足够了,而且 80/443 没有防火墙问题
    rev1si0n
        22
    rev1si0n  
       262 天前
    @frank42a 这个,MCP SSE 的实现并不是这样,对于防火墙的唯一优点也仅限在部分地方限制只能 GET+POST 。MCP 不是只有一个 SSE 连接,还有一个发布端点,通过 GET 连接 SSE 后获取发布端点,方法调用等都会使用 POST 发送到发布端点,而 SSE 仅仅是获取任务结果的。缺点不止一个,除了乱,还有如果代理在 nginx 路径后面还要正确重写到发布端点的 uri ,ws 直接就能做好而且只有一个连接还好管理。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2513 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 15:19 PVG 23:19 LAX 07:19 JFK 10:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86