本文从0到1实现一个自定义MCP Server的开发到调用实现的实践。

基础概念

Agent核心:感知(获取外部信息)、大脑(通过推理学习)、行动(控制组件完成任务)。

MCP协议:MCP(模型上下文协议,Model Context Protocol)是一种标准化的开源协议,旨在为大型语言模型(LLM)提供与外部工具和数据源高效交互的能力。

  • 架构: MCP主机、MCP客户端、MCP服务器、本地数据源、远程服务

在这里插入图片描述

环境准备

  • Python >= 3.10

本地开发调试

代码片段

  • 定义MCP TOOL方法
@mcp.tool(description="这是一个好学英语MCP测试的AI,能回答你关于阅读的问题")
def reading(message: str) -> str:
    """输入一个阅读相关问题,返回一个回答"""
    replies = [
        "Reading enhances your vocabulary and comprehension skills.",
        "The novel 'To Kill a Mockingbird' explores themes of racial injustice.",
        "Reading regularly can improve your focus and concentration.",
        "The book '1984' by George Orwell is a classic dystopian novel."
    ]
    return random.choice(replies)
  • 调用实现
# 创建 Starlette 应用并挂载 FastMCP 的 SSE 路由
app = Starlette(
    routes=[
        Mount('/', app=mcp.sse_app()),
    ]
)

if __name__ == "__main__":
    import uvicorn
    logger.debug("Starting FastMCP server with Starlette and Uvicorn")
    uvicorn.run(app, host="localhost", port=8000)

本地调试

  • SSE(Server-Sent Events)是一种基于 HTTP 的通信协议,允许服务端向客户端推送实时事件。在 MCP 中,它常用于支持流式响应(如逐步生成的文本)。
python main.py
mcp dev main.py

在这里插入图片描述

部署到Function AI

函数云服务

Function AI : https://functionai.console.aliyun.com/

创建MCP服务

  • 方式一:通过模版方式部署MCP服务
  • 方式二:基于空白项目自定义MCP服务

在这里插入图片描述

自定义MCP服务部署

  • 部署操作

在这里插入图片描述

  • WebIDE(线上代码编辑工具)
// 执行安装依赖
pip install starlette pydantic mcp uvicorn -t .

在这里插入图片描述

  • 依赖完成后,存储并重新部署
    • 部署日志错误:[Error]: SSE error: Non-200 status code (412) ,
      • WebIDE安装依赖,保存并重新部署启动
      • 再次部署失败,检查日志以及检查代码,定位具体报错原因。

在这里插入图片描述

  • 部署成功后测试

在这里插入图片描述

MCP广场

  • 百炼控制台:https://bailian.console.aliyun.com/?tab=home#/home

  • 自定义MCP服务

{
  "mcpServers": {
    "MCP应用名称": {
      "type": "sse",
      "url": "你的MCP服务的地址",
      "headers": {"Authorization": "Bearer ${your-api-key}"} //如果前面没做鉴权,就把这行删了,否则就把api-key填上,然后把这段中文注释删了
    }
  }
}

在这里插入图片描述

  • 调用自定义MCP服务

在这里插入图片描述

文档参考

【参考文档】

【其他应用实例】

【DEMO下载】下载

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐