参考资料:
https://blog.csdn.net/2401_84204207/article/details/149294973
https://juejin.cn/post/7538733004224774186
如何开发一个MCP
我们从0开始开发一个MCP,需要做的工作本身并不复杂。
- 创建一个MCP项目
- 在服务器端运行我们的MCP服务项目
- 在LLM中配置MCP信息,实现功能的调用。
只要有变成基础,我一直把所有的变成过程,都拆解成2个部分,
- 如何和外界交互,包括如何读取解析外部数据,以及保存和写入结果文件。
- 一个是使用语言内部的逻辑进行数据的处理。当然复杂的项目,需要考虑项目结构,模块划分,功能服用,结构优化,以及基于项目逻辑的并行串行和效率提升,但这都是跨越具体语言的编码思维,不是要给初学者需要考虑到,随着任何一门语言的深入应用,你都会一点点发现这些工作的意义和价值,并建立自己的逻辑,而且这些逻辑往往是可以通用的。
一步步实现自己的第一个MCP
创建一个MCP项目代码
在这里我们提供一个简单的模块功能,计算两个数的和。
1 | from mcp.server.fastmcp import FastMCP |
本地调用MCP
配置MCP服务
在支持MCP的 AI工具(如 trae)中,可以通过简单的JSON配置来注册和使用本地服务。
1 | { |
配置完成后,可以在工具中看到服务状态。
试MCP服务
这时候,我们就可以提交一个任务,来看看能否成功的调用我们开发的MCP服务。
可以看到大模型识别到了我们新创建的MCP服务,并使用MCP协议进行了调用,完成了我们需要的功能。
远程调用MCP服务
MCP 支持三种数据传输方式:stdio、sse、streamable-http。
stdio (标准输入/输出)
这是最基础和通用的传输方式。它通过标准输入流读取数据,并向标准输出流写入结果,非常适合本地开发、命令行工具 (CLI) 和代理插件的集成。sse (服务器发送事件)
SSE 基于标准的 HTTP 协议,用于解决远程服务的访问问题。在此模式下,MCP 服务作为一个独立的 Web 服务器运行,能够处理来自多个客户端的并发连接。streamable-http (可流式传输的HTTP)
这是MCP协议在新版本中引入的新传输机制,作为 SSE 的强大替代方案。它同样基于 HTTP POST/GET 请求,并利用服务器发送事件 (SSE) 的能力来高效地流式传输多条服务器消息。
在我们测试阶段,使用的是stdio模式,更适合开发和访问,但是在需要远程启用MCP服务时,我们可以切换到sse 或者streamable-http模式。
切换传输方式
只需在服务入口文件中修改一行代码,即可切换传输协议。1
2
3# 启动MCP服务,使用HTTP作为传输方式
mcp.run(transport='http')
mcp.run(transport='sse')