当前位置: 首页 > news >正文

从零搭建MCP Server:Python开发、部署与应用全流程实战

一、MCP协议简介

在AI应用和工具集成日益普及的今天,如何让不同系统、模型与外部服务高效、安全地交互,成为开发者关注的重点。MCP(Model Context Protocol,模型上下文协议)正是为此而生。它是一种开放协议,旨在标准化AI应用与外部工具、服务、数据源的连接方式。通过MCP,开发者可以快速构建可扩展、可复用的AI工具链,提升系统的智能化和自动化水平。

MCP协议的核心优势在于:

  • 标准化接口:统一的协议规范,降低集成成本。
  • 多语言支持:官方SDK覆盖Python等主流开发语言。
  • 易于扩展:支持自定义工具、资源和Prompt,满足多样化业务需求。
  • 安全性高:支持本地、云端等多种部署方式,灵活适配企业安全策略。

二、本地自定义MCP Server实现

1. 环境准备

首先,推荐使用uv作为Python包管理工具,安装步骤如下:

  • Windows平台:
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • 安装Python3(建议3.13及以上版本)。
  • 创建项目文件夹,如MCP-STDIO,在该目录下打开命令行。

UV工具官方文档:
https://astral.sh/uv/

2. 安装MCP SDK

在项目目录下执行:

uv init . -p 3.13
uv add "mcp[cli]"

这将自动安装MCP官方Python SDK。

MCP Python SDK官方文档:
https://github.com/modelcontextprotocol/python-sdk

3. VS Code开发环境配置

  • 打开项目文件夹,安装PythonPython Debugger扩展。
  • 新建main.py,粘贴官方示例代码。

4. 核心代码解析

以下是一个最简MCP Server示例:

from mcp.server.fastmcp import FastMCP# 创建MCP服务器实例
mcp = FastMCP("Demo")# 添加加法工具
@mcp.tool()
def add(a: int, b: int) -> int:"""Add two numbers"""return a + b# 添加动态问候资源
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:"""Get a personalized greeting"""return f"Hello, {name}!"# 添加Prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:"""Generate a greeting prompt"""styles = {"friendly": "Please write a warm, friendly greeting","formal": "Please write a formal, professional greeting","casual": "Please write a casual, relaxed greeting",}return f"{styles.get(style, styles['friendly'])} for someone named {name}."if __name__ == "__main__":mcp.run(transport='stdio')  # 启动MCP服务器

5. 启动与测试

  • 在VS Code中运行main.py,即可启动本地MCP Server。
  • 可通过MCP客户端或集成工具进行功能测试,如加法运算、个性化问候等。

三、PyPI自定义MCP Server实现

如果希望将自定义MCP Server作为Python包发布到PyPI,供团队或社区复用,可参考以下流程:

1. 项目初始化

  • 新建文件夹Anna-MCP-Pypi,进入目录。
  • 初始化项目并安装依赖:
    uv init . --package -p 3.13
    uv add "mcp[cli]"

2. 编写核心代码

将上述MCP Server代码放入__init__.py,并适当调整入口函数:

def main() -> None:
mcp.run(transport='stdio')

3. 打包与发布

  • 注册PyPI账号并开启2FA,生成Token。
  • 构建并发布包:
    uv build
    uv publish --token <your-own-pypi-token>
  • 发布成功后,可在PyPI官网查看项目。

PyPI MCP SDK页面:
https://pypi.org/project/mcp/

4. 集成与使用

  • 在其他项目中通过pip install安装自定义MCP包。
  • 按需配置VS Code等开发环境,实现快速集成。

四、Azure云端部署MCP Server

对于企业级应用或需要高可用、弹性扩展的场景,推荐将MCP Server部署在Azure等云平台。

1. 创建虚拟机

  • 在Azure Portal创建Ubuntu虚拟机。
  • 通过SSH连接:
    ssh username@<VM-IP>

Azure Portal:
https://portal.azure.com/

2. 安装UV工具

curl -LsSf https://astral.sh/uv/install.sh | sh

3. 部署MCP Server

  • main.pypyproject.toml上传至云端目录(如mcp_demo)。
  • 安装依赖并配置环境。
  • 启动MCP Server,支持SSE(Server-Sent Events)传输:
    if __name__ == "__main__":mcp.settings.host = "0.0.0.0"mcp.run(transport='sse')
    

4. 远程访问与集成

  • 配置VS Code远程开发插件,实现云端调试。
  • 通过公网IP和端口访问MCP Server,实现与外部系统的集成。

五、应用场景与实践建议

1. 典型应用场景

  • AI助手工具链:如智能问答、自动化办公、数据分析等。
  • 企业内部集成:连接ERP、CRM等业务系统,实现智能化升级。
  • 安全合规场景:通过本地或私有云部署,保障数据安全与合规性。
  • 开发者平台:快速构建可复用的AI工具,提升团队协作效率。

2. 实践建议

  • 优先本地开发,云端部署:本地调试更高效,云端部署更安全可靠。
  • 善用MCP SDK扩展性:根据业务需求自定义工具、资源和Prompt。
  • 关注安全与权限管理:尤其在云端部署时,务必做好访问控制和数据隔离。
  • 持续关注官方文档与社区动态:MCP协议和SDK持续迭代,建议定期更新依赖和学习新特性。

结语

MCP协议为AI应用与外部工具的集成提供了强大支撑。通过Python自定义MCP Server,无论是本地、PyPI还是Azure云端,都能实现高效、灵活的AI工具链搭建。希望本文能为广大开发者提供实用参考,助力智能化应用落地。

如果你有更多问题或实践经验,欢迎留言交流!

欢迎关注“安娜的信息安全说”!


文章转载自:

http://eVTNrAhh.tfgkq.cn
http://STy0tWWA.tfgkq.cn
http://cZ7C9r4t.tfgkq.cn
http://2iHjuf6l.tfgkq.cn
http://KdQQFuc7.tfgkq.cn
http://K75KCiaK.tfgkq.cn
http://AkP2VUuH.tfgkq.cn
http://RmqRPf7z.tfgkq.cn
http://hrz6g5y2.tfgkq.cn
http://YBRcFcNW.tfgkq.cn
http://z4IT115G.tfgkq.cn
http://8G9JLNpg.tfgkq.cn
http://81fW1NpT.tfgkq.cn
http://bOxofLEv.tfgkq.cn
http://lVX1GawS.tfgkq.cn
http://ovzwOOuB.tfgkq.cn
http://eFie6Fir.tfgkq.cn
http://LL2tYY9h.tfgkq.cn
http://jLrRogyG.tfgkq.cn
http://hGTE6LEB.tfgkq.cn
http://rxwvr3b4.tfgkq.cn
http://sAjmbJBn.tfgkq.cn
http://DS2BdvIU.tfgkq.cn
http://qUxKnjT6.tfgkq.cn
http://6JkjHEa9.tfgkq.cn
http://KGC1Jv6m.tfgkq.cn
http://3L1RvoQp.tfgkq.cn
http://SX0zGevg.tfgkq.cn
http://yajP04ma.tfgkq.cn
http://9tLgS5OY.tfgkq.cn
http://www.dtcms.com/a/384365.html

相关文章:

  • Mac本地Docker拉取镜像本地挂载项目
  • 购物车效果
  • 在Ubuntu 18.0.4 编译最新版Python-3.13.7
  • 如何在ubuntu下用pip安装aider,解决各种报错问题
  • Redis 高可用实战源码解析(Sentinel + Cluster 整合应用)
  • 测井曲线解读核心三属性(岩性 / 物性 / 含油气性)实用笔记
  • 【图像理解进阶】VLora参数融合核心原理与Python实现
  • Leetcode 169. 多数元素 哈希计数 / 排序 / 摩尔投票
  • EasyPoi:java导出excel,并从OSS下载附件打包zip,excel中每条记录用超链接关联附件目录
  • Win10系统下载并安装声卡驱动
  • JavaEE初阶——初识计算机是如何工作的:从逻辑门到现代操作系统
  • CKA05--service
  • 信息安全专业毕业设计选题推荐:课题建议与开题指导
  • 【LeetCode 每日一题】1792. 最大平均通过率——贪心 + 优先队列
  • 【深度学习计算机视觉】05:多尺度目标检测
  • Docker将镜像搬移到其他服务上的方法
  • WiseAI-百度研发的AI智能聊天产品
  • .NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)
  • 【JAVA接口自动化】JAVA如何读取Yaml文件
  • Redis全面指南:从入门到精通
  • Word在WPS和Office中给图片添加黑色边框
  • C++ Lua组合拳:构建高性能系统配置管理框架
  • 数据库编程--完成简单的信息登录系统+思维导图
  • Spring Boot 深入剖析:SpringApplicationRunListener
  • 【新手指南】解析Laf.run上的GET API接口
  • 如何批量删除 iPhone/iPad 上的照片 [7 种方法
  • Spring Boot 日志体系全面解析:从 SLF4J 到 Logback、Log4j2 与 Lombok 超详细!!
  • springboot创建请求处理
  • 08-Redis 字符串类型全解析:从命令实操到业务场景落地
  • 学习海康VisionMaster之字符缺陷检测