在东谈主工智能时刻快速发展的今天,怎样灵验整合各类用具才调成为普及大模子实用性的环节。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 界说了三大类“原语”
Resources(资源),资源非常于静态数据块
Tools(用具),资源非常于静态数据块
Prompts(提醒词模板),提醒词模板是一些预设的对话或责任过程。
对于条约原语官方文档中也有相应的先容。
代码使用了 MCP 官方的 python SDK,也即是使用 MCP 的话咱们不错使用现有官方提供的 SDK 不需要咱们我方去捣毁。官方有提供 ts、python、java、kotlin、C#的 SDK 及相应的 demo
这里使用的是 python 的 sdk 与 demo,固然你淌若不思写代码也不错径直使用官方现有的 MCP server 措施。
背面也会具体在 Trae 献技示。
Step3: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 传输
使用管事器发送事件进行管事器到客户端的音讯传递
使用 HTTP POST 进行客户端到管事器的音讯传递
通盘传输齐使用 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
我是栈江湖开云kaiyun.com,淌若你心爱此著述,不要健忘点赞+关心!