# MCP_Tools **Repository Path**: ithanc/mcp_tools ## Basic Information - **Project Name**: MCP_Tools - **Description**: MCP_Tools是一个开源工具,允许用户使用自然语言查询数据库(增删改查等操作),发送邮件,桌面文件管理(适用于Windows系统),实时提取热榜新闻,双语翻译等。它通过模型上下文协议(MCP)利用AI能力来处理用户需求,调用最合适的工具并执行它们。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-08-20 - **Last Updated**: 2025-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: MCP, Python, AI ## README # 新手小白零基础搭建MCP教程 *作者:IT·陈寒* *发布时间:2025-08-21* *阅读时长:15 分钟* > 本文将带你从零开始了解并搭建MCP环境,无需专业知识,人人都能上手! ## 目录 - [一、MCP基础:什么是MCP?](#一mcp基础什么是mcp) - [二、环境准备:搭建你的MCP开发环境](#二环境准备搭建你的mcp开发环境) - [三、入门实践:创建你的第一个MCP工具](#三入门实践创建你的第一个mcp工具) - [四、功能扩展:丰富你的MCP工具集](#四功能扩展丰富你的mcp工具集) - [五、进阶应用:集成第三方API与服务](#五进阶应用集成第三方api与服务) - [六、常见问题与解决方案](#六常见问题与解决方案) - [七、未来展望:MCP的发展前景](#七未来展望mcp的发展前景) --- ## 一、MCP基础:什么是MCP? MCP (Model Control Protocol,模型控制协议) 是一个用于构建AI工具的框架,它允许开发者快速创建、部署和使用各种AI工具和服务。对于想要利用AI能力但又不想深入学习复杂技术的新手来说,MCP提供了一个简单易用的入口。 ### 1.1 MCP的核心价值 - **打通数据孤岛**:实现本地数据和AI模型的无缝连接 - **降低开发门槛**:无需深厚的编程基础即可上手 - **统一工具生态**:一次开发,多处使用 - **扩展AI能力**:让AI模型能够"看见"并"操作"更多外部资源 ### 1.2 MCP与传统方法的对比 | 特性 | 传统API调用 | RAG方案 | MCP方案 | |------|------------|---------|---------| | 开发难度 | 高 | 中 | 低 | | 适合人群 | 专业开发者 | 有技术基础者 | 零基础新手 | | 数据交互 | 需自行实现 | 局限于文本 | 多样化接口 | | 可扩展性 | 一般 | 有限 | 极强 | | 复用性 | 低 | 中 | 高 | > MCP的设计理念是:**让每个人都能轻松构建和使用AI工具,而不仅仅是程序员**。 ## 二、环境准备:搭建你的MCP开发环境 在开始构建MCP工具前,我们需要先准备好基础环境。这一步非常重要,正确的环境配置能让后续开发更加顺畅。 ### 2.1 安装Python Python是MCP开发的基础语言,我们需要先安装Python环境: 1. 访问[Python官网](https://www.python.org/downloads/)下载最新版本(推荐3.8+) 2. 安装时**务必勾选**"Add Python to PATH"选项 3. 验证安装:打开命令行,输入`python --version`,如显示版本号则表示安装成功 ```bash # 验证Python安装 python --version # 输出示例:Python 3.10.4 ``` ### 2.2 创建虚拟环境 虚拟环境可以帮助你隔离不同项目的依赖,是Python开发的最佳实践: ```bash # 创建名为venv的虚拟环境 python -m venv venv # Windows下激活虚拟环境 venv\Scripts\activate # macOS/Linux下激活虚拟环境 # source venv/bin/activate ``` 激活后,你的命令行前面会出现`(venv)`前缀,表示已进入虚拟环境。 ### 2.3 安装MCP及相关依赖 ```bash # 安装MCP核心库 pip install mcp==1.6.0 # 根据需要安装其他依赖 pip install requests # 网络请求库 pip install mysql-connector-python # MySQL数据库连接库 ``` > **小贴士**:如果下载速度较慢,可以尝试使用国内镜像源,如:`pip install mcp==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple` > > 一键安装 执行:`pip install -r requirements.txt` 即可 ## 三、入门实践:创建你的第一个MCP工具 现在,我们开始创建第一个简单的MCP工具,体验MCP的基本用法。 ### 3.1 编写基础MCP工具 创建一个名为`custom_mcp.py`的文件,写入以下代码: ```python # custom_mcp.py from mcp.server.fastmcp import FastMCP import os import platform mcp = FastMCP() @mcp.tool() def say_hello(name: str) -> str: """生成个性化问候语(中英双语版)""" return f"🎉 你好 {name}! (Hello {name}!)" if __name__ == "__main__": mcp.run(transport='stdio') ``` 这个简单的工具接收一个名字作为输入,返回中英双语的问候语。 ### 3.2 配置MCP服务 在AI编辑器(如Cursor)的配置目录下创建`mcp.json`文件,通常位于: - Windows: `c:\Users\用户名\.cursor\mcp.json` - macOS: `~/Library/Application Support/cursor/mcp.json` 配置内容如下: ```json { "mcpServers": { "my_first_mcp": { "command": "python", "args": [ "你的文件路径/custom_mcp.py" ] } } } ``` **重要提示:** 1. 将"你的文件路径"替换为你存放`custom_mcp.py`的实际绝对路径 2. Windows系统路径中的反斜杠需要写成双反斜杠或正斜杠,如:`C:/Users/你的用户名/Desktop/custom_mcp.py` ### 3.3 测试你的MCP工具 重启编辑器后,你可以通过AI聊天窗口测试你的MCP工具了!试着输入: "你好,请使用我的MCP工具向张三问好" 如果一切配置正确,AI将调用你创建的MCP工具,返回: ``` 🎉 你好 张三! (Hello 张三!) ``` ## 四、功能扩展:丰富你的MCP工具集 一个简单的问候语工具当然不能满足我们的需求,接下来我们会添加更多实用功能,展示MCP的强大之处。 ### 4.1 文件操作功能 添加一个读取桌面文件列表的工具: ```python @mcp.tool() def list_desktop_files() -> list: """获取当前用户桌面上的所有文件列表(适用于Windows系统)""" if platform.system().lower() == 'windows': desktop_path = os.path.join(os.environ["USERPROFILE"], "Desktop") else: desktop_path = os.path.expanduser("~/Desktop") return os.listdir(desktop_path) ``` ### 4.2 数据库查询功能 通过MCP连接本地数据库,执行查询操作: ```python @mcp.tool() def query_database(sql: str) -> str: """ 连接本地 MySQL 数据库,执行查询并返回结果。 注意: 1. 本功能仅用于执行查询操作(SELECT),请勿用于执行更新或删除等敏感操作; 2. 请确保数据库服务已启动,并根据实际环境修改数据库连接信息(用户名、密码、数据库名)。 """ import mysql.connector try: # 根据实际环境配置数据库连接信息 connection = mysql.connector.connect( host="localhost", user="root", # 替换为您的MySQL用户名 password="root", # 替换为您的MySQL密码 database="student_management" # 替换为您的数据库名 ) cursor = connection.cursor() cursor.execute(sql) results = cursor.fetchall() # 获取字段名称 columns = [desc[0] for desc in cursor.description] # 构造结果字符串,字段之间用 "|" 分隔 output = " | ".join(columns) + "\n" for row in results: output += " | ".join(str(item) for item in row) + "\n" cursor.close() connection.close() if not results: return "查询无结果" return output except Exception as e: return f"查询过程中出错: {e}" ``` ### 4.3 网络数据获取功能 获取掘金网站热门文章信息,展示网络数据爬取能力: ```python @mcp.tool() def get_juejin_hot() -> list: """ 获取掘金网站热门文章信息,返回前10篇文章的相关数据。 包含文章排名、标题、作者、互动数据(热度、浏览、点赞、收藏、评论)以及文章链接。 """ import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Referer': 'https://juejin.cn/' } url = "https://api.juejin.cn/content_api/v1/content/article_rank?category_id=1&type=hot" try: response = requests.get(url, headers=headers) response.raise_for_status() data = response.json() articles = data.get('data', [])[:10] if not articles: return [{"提示": "API返回数据格式异常,请检查接口有效性"}] result = [] for index, article in enumerate(articles, 1): content_data = article.get('content', {}) counter_data = article.get('content_counter', {}) author_info = article.get('author', {}) article_info = { '排名': index, '标题': content_data.get('title', '无标题'), '作者': author_info.get('name', '匿名用户'), '互动数据': { '热度': counter_data.get('hot_rank', 0), '浏览': counter_data.get('view', 0), '点赞': counter_data.get('like', 0), '收藏': counter_data.get('collect', 0), '评论': counter_data.get('comment_count', 0) }, '链接': f"https://juejin.cn/post/{content_data.get('content_id', '')}" } result.append(article_info) return result except Exception as e: return [{"错误": f"数据获取失败,错误类型:{type(e).__name__},详细信息:{str(e)}"}] ``` ### 4.4 邮件发送功能 添加邮件发送功能,实现信息推送: ```python @mcp.tool() def send_email(recipient: str, subject: str, content: str) -> str: """ 发送邮件的工具。 参数说明: recipient: 收件人的邮箱地址; subject: 邮件主题; content: 邮件内容,支持HTML格式。 请先根据您所使用的SMTP服务配置下列参数: - smtp_server: SMTP服务器地址 - smtp_port: SMTP服务器端口(常见端口587用于STARTTLS加密) - sender_email: 发件人邮箱地址 - sender_password: 发件人邮箱密码或授权码(注:为了安全建议不要在代码中明文写入) """ import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # QQ邮箱的 SMTP 配置 smtp_server = "smtp.qq.com" smtp_port = 587 sender_email = "your_email@qq.com" # 替换为您的 QQ 邮箱 sender_password = "your_authorization_code" # 替换为您在QQ邮箱中生成的授权码 try: # 构造MIME邮件对象 msg = MIMEMultipart() msg["From"] = sender_email msg["To"] = recipient msg["Subject"] = subject # 将邮件内容以HTML形式添加进去 msg.attach(MIMEText(content, "html")) # 连接SMTP服务器 server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 开启TLS加密传输 server.login(sender_email, sender_password) server.send_message(msg) server.quit() return "邮件发送成功" except Exception as e: return f"邮件发送失败,错误信息: {e}" ``` ## 五、进阶应用:集成第三方API与服务 除了基础功能,MCP还能轻松集成各种第三方API,让你的AI助手更加强大。 ### 5.1 集成百度地图API 在`mcp.json`中配置百度地图API服务: ```json { "mcpServers": { "baidu-maps": { "command": "python", "args": ["-m", "mcp_server_baidu_maps"], "env": { "BAIDU_MAPS_API_KEY": "你的百度地图API密钥" } }, "my_first_mcp": { "command": "python", "args": [ "你的文件路径/custom_mcp.py" ] } } } ``` 这样配置后,你的AI助手就能回答"北京三里屯附近有什么好吃的"这类地理位置相关的问题了。 ### 5.2 实战案例:自动获取热门文章并发送邮件报告 利用我们已经创建的MCP工具,可以实现一个简单但实用的自动化工作流:获取掘金热门文章,并通过邮件发送每日技术简报。 ```python @mcp.tool() def send_juejin_daily_report(recipient: str) -> str: """获取掘金热门文章并发送邮件简报""" try: # 调用已有的get_juejin_hot获取文章数据 articles = get_juejin_hot() if isinstance(articles, list) and len(articles) > 0 and '错误' in articles[0]: return f"获取掘金文章失败: {articles[0]['错误']}" # 构建HTML邮件内容 html_content = """