掘金 人工智能 04月28日 10:32
最通俗的Trae + MCP入门指南:轻松开发与使用
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

文章介绍了如何使用Claude推出的MCP(Model Collaboration Protocol)协议,通过字节的Trae AI编程工具构建一个加法计算器,实现AI模型之间的协作。文章详细讲解了MCP的开发与使用步骤,包括环境准备、MCP server代码编写、Trae MCP servers配置和Trae智能体配置,并介绍了内置MCP server、调试MCP以及远程调用等补充内容。通过实例演示,让读者了解如何利用MCP协议整合各类AI工具能力,提升大模型的实用性。

🛠️ **MCP协议概述**: MCP(Model Collaboration Protocol)是Claude为解决AI工具整合问题而设计的标准化交互方案,旨在促进不同AI模型之间的协作。

💻 **开发环境与工具**: 文章以加法计算器为例,展示了使用Python和Trae AI编程工具进行MCP服务开发的全过程,Trae既是代码编写工具,也是MCP客户端。

⚙️ **MCP服务构建**: MCP服务构建包括环境准备、MCP server代码编写(使用@MCP.tool和@MCP.resource装饰器定义工具和资源)、Trae MCP server配置和Trae智能体配置等步骤。

💡 **核心概念与原语**: MCP定义了三大类“原语”:Resources(资源)、Tools(工具)和Prompts(提示词模板),它们是构建MCP服务的基础组成部分。

📡 **远程调用与调试**: 除了本地调用,MCP还支持远程调用,文章介绍了通过HTTP的SSE(服务器发送事件)实现远程调用的方法,并提供了调试工具。

在人工智能技术快速发展的今天,如何有效整合各类工具能力成为提升大模型实用性的关键。Claude推出的MCP(Model Collaboration Protocol)协议正是为解决这一需求而设计的标准化交互方案。

这里通过一个加法计算器的完整实现案例,写代码之前需要选择一个编码工具。在 AI 盛行的当下自然要选择一款 AI 编程工具。 这里选择字节的 Trae 来开发MCP服务的技术实践。当然这里 Trae 除了作为写代码工具,还有就是当成 MCP client,目前像 Cursor、Trae、Cline、Claude Desktop 等都可以成为MCP Host,而这些工具里创建的智能体就可以成为 MCP Client。

以下是一个完整MCP服务的实现过程:

一、MCP 开发与使用

Step1:环境准备

安装最新版 python MCP 依赖包:

pip install "MCP[cli]"#当然你也可以使用uvuv add "MCP[cli]"

Step2:MCP server代码

创建 MCP_calculator_server.py:

# server.pyfrom MCP.server.fastMCP import FastMCP# 创建一个MCP服务器实例# Demo为服务器名称,用于标识这个MCP服务MCP = FastMCP("Demo")# 添加一个加法工具函数# @MCP.tool()装饰器将这个函数注册为MCP工具@MCP.tool()def add(a: int, b: int) -> int:    """实现两个数字相加的功能"""    return a + b# 添加一个动态问候资源# @MCP.resource装饰器定义了一个动态URL路由,其中{name}是一个变量部分@MCP.resource("greeting://{name}")def get_greeting(name: str) -> str:    """生成个性化的问候语"""    return f"Hello, {name}!"# 启动MCP服务器if __name__ == "__main__":    MCP.run()

@MCP.tool 注册为工具

@MCP.resource 注册为资源

协议原语 :MCP 定义了三大类“原语”

关于协议原语官方文档中也有相应的介绍。

代码使用了 MCP 官方的 python SDK,也就是使用 MCP 的话我们可以使用现存官方提供的 SDK 不需要我们自己去实现。官方有提供 ts、python、java、kotlin、C#的 SDK 及相应的 demo

这里使用的是 python 的 sdk 与 demo,当然你如果不想写代码也可以直接使用官方现存的 MCP server 程序。

后面也会具体在 Trae 上演示。

Step3:Trae MCP servers 配置

代码编写好后,在 Trae 里选择"设置",再选择 MCP

进入 MCP 后选择添加

选择手动配置

在这里参考示例进行配置

我是在 windows 下的代码,所以配置时路径是 \ 双斜杠

{  "MCPServers": {    "MCP_calculator_server": {      "command": "python",      "args": [        "D:\code\local\python\email\MCP_calculator_server.py"      ]    }  }}

配置好后,如果 显示为绿色的勾说明已经配置成功了

如果出现 “重试”,就是有错,这时可以看一下日志

日志文件为 MCP-servers-host.log,在 MCP 里 Trae 或 cursor 就是 host

Step4:Trae 智能体配置

再创建一个智能体来引用刚才的 MCP 服务

当然这里还会出现之前增加过的 MCP server 或内置的一些 MCP server。

可以看到

那当然 resource 也是可以触发调用的

到这里就已经完成 MCP 的开发与调用了。

二、补充内容

1、内置的 MCP server

在新建 MCP Server 时,这里会出现 Trae MCP 市场内置的 MCP server 可以看到官方提供的 MCP server 都在里面,如果需要使用也是非常的方便的。

2、调试 MCP

一般来说写完的代码可以使用 MCP 官方提供的测试工具先来调试自己的程序,这里可以直接调用和看日志

npx @modelcontextprotocol/inspector python MCP_calculator_server.py

运行命令后,在浏览器打开调试页面

http://127.0.0.1:6274/

3、调用方式

是否 mcp client 与 mcp server 必须在同一台电脑上?

这里演示的是使用命令直接调用本地文件的方式,一般来说函数很多都是通过接口的方式提供的。当然 MCP 也是支持的,也就是说是支持远程调用的。

MCP 传输层处理 clients 和 servers 之间的实际通信。MCP 支持多种传输机制:

    Stdio 传输
    通过 HTTP 的 SSE 传输

所有传输都使用 JSON-RPC 2.0 进行消息交换。

要实现远程调用,也就是这里说的 sse 的方式,但好像一般网上 sse 的方式都非常的少。

sse mcp server 程序

import argparsefrom mcp.server.fastmcp import FastMCPfrom starlette.applications import Starlettefrom mcp.server.sse import SseServerTransportfrom starlette.requests import Requestfrom starlette.routing import Mount, Routefrom mcp.server import Serverimport uvicorn # 初始化 FastMCP 实例mcp = FastMCP("api-mcp-calc") @mcp.tool()def add(a: float, b: float) -> float:    """Add two numbers"""    return a + b # 创建 Starlette 应用def create_starlette_app(mcp_server: Server, *, debug: bool = False) -> Starlette:    sse = SseServerTransport("/messages/")    async def handle_sse(request: Request) -> None:        async with sse.connect_sse(                request.scope,                request.receive,                request._send,        ) as (read_stream, write_stream):            await mcp_server.run(                read_stream,                write_stream,                mcp_server.create_initialization_options(),            )     return Starlette(        debug=debug,        routes=[            Route("/sse", endpoint=handle_sse),            Mount("/messages/", app=sse.handle_post_message),        ],    ) # 主程序入口if __name__ == "__main__":    # 创建并运行 Starlette 应用    starlette_app = create_starlette_app( mcp._mcp_server, debug=True)    uvicorn.run(starlette_app, host='0.0.0.0', port=18080)

然后启动程序:

python api_mcp_calc.py

trac 配置

{  "mcpServers": {    "api-mcp-calc": {      "url": "http://localhost:18080/sse"    }  }}

可以看到已经触发调用服务了

也可以通过inspector 调试http://localhost:18080/sse

我是栈江湖,如果你喜欢此文章,不要忘记点赞+关注

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

MCP协议 Trae AI协作 大模型 编程
相关文章