新手小白零基础搭建MCP教程

文章目录

博主介绍:全网粉丝10w+、CSDN合伙人、华为云特邀云享专家,阿里云专家博主、星级博主,51cto明日之星,热爱技术和分享、专注于Java技术领域

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

作者:IT·陈寒
发布时间:2025-08-21
阅读时长:15 分钟

本文将带你从零开始了解并搭建MCP环境,无需专业知识,人人都能上手!

目录


一、MCP基础:什么是MCP?

MCP (Model Control Protocol,模型控制协议) 是一个用于构建AI工具的框架,它允许开发者快速创建、部署和使用各种AI工具和服务。对于想要利用AI能力但又不想深入学习复杂技术的新手来说,MCP提供了一个简单易用的入口。

开源项目地址:https://gitee.com/ithanc/mcp_tools.git

1.1 MCP的核心价值

  • 打通数据孤岛:实现本地数据和AI模型的无缝连接
  • 降低开发门槛:无需深厚的编程基础即可上手
  • 统一工具生态:一次开发,多处使用
  • 扩展AI能力:让AI模型能够"看见"并"操作"更多外部资源

1.2 MCP与传统方法的对比

特性 传统API调用 RAG方案 MCP方案
开发难度
适合人群 专业开发者 有技术基础者 零基础新手
数据交互 需自行实现 局限于文本 多样化接口
可扩展性 一般 有限 极强
复用性

MCP的设计理念是:让每个人都能轻松构建和使用AI工具,而不仅仅是程序员

二、环境准备:搭建你的MCP开发环境

在开始构建MCP工具前,我们需要先准备好基础环境。这一步非常重要,正确的环境配置能让后续开发更加顺畅。

2.1 安装Python

Python是MCP开发的基础语言,我们需要先安装Python环境:

  1. 访问Python官网下载最新版本(推荐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 = """
        <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                h1 { color: #0066ff; }
                .article { margin-bottom: 20px; padding: 10px; border-bottom: 1px solid #eee; }
                .title { font-size: 18px; font-weight: bold; color: #333; }
                .author { color: #666; }
                .stats { color: #888; font-size: 14px; }
            </style>
        </head>
        <body>
            <h1>今日掘金热门文章简报</h1>
        """
        
        for article in articles:
            html_content += f"""
            <div class="article">
                <div class="title"><a href="{article['链接']}">{article['标题']}</a></div>
                <div class="author">作者: {article['作者']}</div>
                <div class="stats">
                    浏览: {article['互动数据']['浏览']} | 
                    点赞: {article['互动数据']['点赞']} | 
                    收藏: {article['互动数据']['收藏']}
                </div>
            </div>
            """
        
        html_content += """
        </body>
        </html>
        """
        
        # 发送邮件
        return send_email(
            recipient=recipient,
            subject="掘金每日技术文章简报",
            content=html_content
        )
    
    except Exception as e:
        return f"生成简报过程中出错: {str(e)}"

六、常见问题与解决方案

在使用MCP的过程中,你可能会遇到一些常见问题,这里提供了相应的解决方案:

6.1 安装与配置问题

  1. 依赖安装失败

    • 尝试使用pip install --upgrade pip更新pip
    • 检查网络连接或尝试使用国内镜像源
    • 确认Python版本兼容性(建议3.8+)
  2. MCP工具无法运行

    • 检查路径配置是否正确,特别注意Windows系统的路径分隔符
    • 确保已激活虚拟环境
    • 重启编辑器或IDE,让配置生效

6.2 API与服务问题

  1. API调用失败

    • 检查API密钥是否正确配置
    • 查看API文档确认请求参数格式
    • 通过日志或调试模式查看详细错误信息
  2. 邮件发送失败

    • 确保SMTP服务器地址和端口正确
    • 检查邮箱账号和授权码是否有效
    • 确认网络环境允许SMTP连接
  3. 数据爬取受限

    • 添加更多的请求头信息,模拟真实浏览器
    • 实现请求间隔和重试机制
    • 考虑使用代理IP避免被封禁

资源与参考

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

相关推荐
闲人编程1 小时前
Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
开发语言·python·去中心化·内存·寻址·存储·ipfs
计算机编程小咖2 小时前
《基于大数据的农产品交易数据分析与可视化系统》选题不当,毕业答辩可能直接挂科
java·大数据·hadoop·python·数据挖掘·数据分析·spark
zhangfeng11333 小时前
以下是基于图论的归一化切割(Normalized Cut)图像分割工具的完整实现,结合Tkinter界面设计及Python代码示
开发语言·python·图论
flashlight_hi4 小时前
LeetCode 分类刷题:2529. 正整数和负整数的最大计数
python·算法·leetcode
Ashlee_code4 小时前
香港券商櫃台系統跨境金融研究
java·python·科技·金融·架构·系统架构·区块链
Jia-Hui Su5 小时前
GDSFactory环境配置(PyCharm+Git+KLayout)
git·python·pycharm
学习3人组6 小时前
手写数字识别代码
人工智能·python
Always_Passion6 小时前
一、对于MCP的理解
mcp
古译汉书6 小时前
蓝桥杯算法之基础知识(2)——Python赛道
数据结构·python·算法·蓝桥杯
少陵野小Tommy6 小时前
Python能用古诗词数据库做什么7:根据标题、诗句查找诗歌
开发语言·数据库·python