从零搭建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开发环境配置
- 打开项目文件夹,安装
Python
和Python 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.py
和pyproject.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工具链搭建。希望本文能为广大开发者提供实用参考,助力智能化应用落地。
如果你有更多问题或实践经验,欢迎留言交流!
欢迎关注“安娜的信息安全说”!