1. 什么是MCP:
Model Context Protocol(MCP)是由Anthropic公司于2024年11月推出的一种开放协议标准,目的在于标准化LLM与外部数据源,工具及服务之间的交互方式,MCP 被广泛类比为“AI 领域的 USB-C 接口”

2. 核心功能
MCP 提供三种关键能力:
• Resources(知识扩展):提供结构化数据(如数据库、文档)以增强 AI 的上下文理解。
• Tools(工具调用):允许 AI 执行外部操作(如发送邮件、查询 GitHub、调用智能合约等)。
• Prompts(提示模板):预定义的指令模板,优化 AI 的任务执行。
下面是一个关于MCP SDK的介绍:
Python MCP SDK
pip install mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
• 创建 MCP Server:提供标准化的 API,供 AI 模型调用外部功能(如文件操作、数据库查询等)。
• 注册工具(Tools):通过 @mcp.tool() 装饰器,将 Python 函数暴露给 AI 模型使用。
• 安全交互:支持权限控制,确保 AI 不会越权访问敏感数据。
• 跨平台兼容:支持与 OpenAI、Anthropic Claude 等 LLM 集成。
FastMCP 是 Python MCP SDK中的轻量级服务器框架:
• 简单易用:仅需几行代码即可启动 MCP Server。
• 支持多种传输方式:如 stdio(标准输入输出)、HTTP 等。
• 自动工具发现:通过 @mcp.tool() 注解自动注册函数,供 AI 调用
以下是桌面txt文件统计的简单代码示例。
运行前需要确保MCP服务工具安装好,这里会用到UV,Bun工具:
https://github.com/oven-sh/bun/releases
powershell -c "irm bun.sh/install.ps1|iex"
https://github.com/astral-sh/uv/releases
powershell -ExecutionPolicy Bypass -c "irm
https://github.com/astral-
sh/uv/releases/download/0.6.17/uv-installer.ps1 | iex"
import os
from pathlib import Path
from mcp.server.fastmcp import FastMCP
# 创建 MCP Server
mcp = FastMCP("桌面 TXT 文件统计器")
@mcp.tool()
def count_desktop_txt_files() -> int:
"""统计桌面上 .txt 文件的数量"""
# 获取桌面路径
desktop_path = Path(os.path.expanduser("~/Desktop"))
# 统计 .txt 文件
txt_files = list(desktop_path.glob("*.txt"))
return len(txt_files)
@mcp.tool()
def list_desktop_txt_files() -> str:
"""获取桌面上所有 .txt 文件的列表"""
# 获取桌面路径
desktop_path = Path(os.path.expanduser("~/Desktop"))
# 获取所有 .txt 文件
txt_files = list(desktop_path.glob("*.txt"))
# 返回文件名列表
if not txt_files:
return "桌面上没有找到 .txt 文件。"
# 格式化文件名列表
file_list = "\n".join([f"- {file.name}" for file in txt_files])
return f"在桌面上找到 {len(txt_files)} 个 .txt 文件:\n{file_list}"
@mcp.tool()
def read_txt_file(filename: str) -> str:
"""读取指定txt文件的内容
Args:
filename: txt文件的名称(例如:test.txt)
Returns:
文件内容,如果文件不存在则返回错误信息
"""
# 获取桌面路径
desktop_path = Path(os.path.expanduser("~/Desktop"))
file_path = desktop_path / filename
# 检查文件是否存在
if not file_path.exists():
return f"错误:文件 '{filename}' 不存在于桌面上。"
# 检查文件是否是txt文件
if file_path.suffix.lower() != '.txt':
return f"错误:文件 '{filename}' 不是txt文件。"
try:
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
return f"文件 '{filename}' 的内容:\n\n{content}"
except Exception as e:
return f"读取文件时发生错误:{str(e)}"
if __name__ == "__main__":
# 初始化并运行服务器
mcp.run()
850

被折叠的 条评论
为什么被折叠?



