写点什么

MCP 详解及手把手实战

作者:知识浅谈
  • 2025-04-20
    广东
  • 本文字数:3095 字

    阅读完需:约 10 分钟

MCP详解及手把手实战

MCP 详解及手把手实战

Model Context Protocol(MCP)是一个开放协议,旨在标准化大型语言模型(LLM)与外部数据源和工具之间的集成方式。它为 AI 应用程序提供了一种统一的接口,使得不同的系统和服务能够高效、安全地协同工作。

什么是 MCP?

MCP 可以被视为 AI 应用程序的“USB-C 接口” citeturn0search2。正如 USB-C 提供了连接各种设备的标准化方式,MCP 为 LLM 提供了访问多种数据源和工具的统一协议。这使得开发者能够构建更强大、灵活的 AI 驱动应用,如智能 IDE、聊天机器人和定制化的工作流程。

MCP 的核心架构

MCP 采用客户端-服务器架构,包括以下主要组件:

  • 主机(Host):如 Claude Desktop、IDE 或其他 AI 工具,负责发起连接。

  • 客户端(Client):在主机应用中与服务器保持一对一的连接。

  • 服务器(Server):提供上下文、工具和提示等功能。

这种架构允许主机应用程序连接到多个服务器,从而访问本地或远程的数据源和服务。

为什么选择 MCP?

MCP 提供了多项优势:

  • 标准化集成:通过统一的协议,简化了 LLM 与外部资源的连接过程。

  • 灵活性:支持在不同的 LLM 提供商和工具之间切换,增强了系统的可扩展性。

  • 安全性:通过在本地或受控环境中运行服务器,确保数据的安全访问。

如何开始使用 MCP?

MCP 提供了多种入门路径:

  • 快速入门:通过示例服务器连接到 Claude Desktop,快速体验 MCP 的功能。

  • 构建服务器:使用 Python 或 TypeScript 创建自定义的 MCP 服务器。

  • 开发客户端:构建与 MCP 服务器集成的客户端应用程序。

此外,MCP 还提供了调试工具和交互式检查器,帮助开发者测试和优化他们的集成方案。

开发一个 MCP 服务端

该服务端包含功能:

  • 查询数据库用户信息

  • 新增用户信息到数据库

MCP 服务端数据表

MCP 服务端代码

from mcp.server import FastMCPfrom selenium.webdriver import Remote, ChromeOptionsfrom selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnectionfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timeimport mysql.connectorfrom mysql.connector import errorcode
mcp = FastMCP("server")@mcp.tool()def get_user_info(name: str):    """    根据用户名查询用户信息        Args:        name (str): 用户名            Returns:        dict: 用户信息,包含id, name, age, address字段        None: 如果未找到用户    """    # 数据库连接参数    db_config = {        "host": "127.0.0.1",        "port": 3306,        "user": "root",  # 默认用户名,根据实际情况修改        "password": "password",  # 根据实际情况修改        "database": "test"    }        # 初始化连接变量    conn = None    cursor = None    try:        # 创建数据库连接        conn = mysql.connector.connect(**db_config)        # 创建游标        cursor = conn.cursor(dictionary=True)        # 查询SQL        sql = "SELECT id, name, age, address FROM user WHERE name = %s"        # 执行查询        cursor.execute(sql, (name,))        # 获取结果        result = cursor.fetchone()        return result    except Exception as e:        print(f"查询MySQL数据库出错: {e}")        return None    finally:        # 关闭游标和连接        if cursor:            cursor.close()        if conn:            conn.close()@mcp.tool()def create_user(name: str, age: int, address: str):    """    创建新用户        Args:        name (str): 用户名        age (int): 年龄        address (str): 地址            Returns:        dict: 包含操作结果的字典            - success (bool): 操作是否成功            - message (str): 操作结果消息            - user_id (int, 可选): 成功时返回的用户ID    """    # 数据库连接参数    db_config = {        "host": "127.0.0.1",        "port": 3306,        "user": "root",        "password": "chaiyinlei",        "database": "test"    }        # 初始化连接变量    conn = None    cursor = None    try:        # 创建数据库连接        conn = mysql.connector.connect(**db_config)        # 创建游标        cursor = conn.cursor()        # 检查用户名是否已存在        check_sql = "SELECT COUNT(*) FROM user WHERE name = %s"        cursor.execute(check_sql, (name,))        count = cursor.fetchone()[0]        if count > 0:            return {                "success": False,                "message": f"用户名'{name}'已经存在"            }                # 插入新用户        insert_sql = "INSERT INTO user (name, age, address) VALUES (%s, %s, %s)"        cursor.execute(insert_sql, (name, age, address))        # 提交事务        conn.commit()        # 获取新用户ID        user_id = cursor.lastrowid        return {            "success": True,            "message": "用户创建成功",            "user_id": user_id        }    except Exception as e:        print(f"创建用户出错: {e}")        return {            "success": False,            "message": f"创建用户错误: {str(e)}"        }    finally:        # 关闭游标和连接        if cursor:            cursor.close()        if conn:            conn.close()
if __name__ == "__main__":    mcp.run()

复制代码

编写代码之后运行

MCP 客户端

使用 vscode 中的 cline 作为 MCP 客户端在进行模型对话的时候调用 MCP 服务端

  1. 安装 cline 插件

  2. 编辑 cline 中 MCP 服务端的配置文件

  3. 使用查询用户信息的询问

  4. 使用新增用户信息的询问

结语

MCP 为 AI 应用程序提供了一个强大、灵活且安全的集成框架,使得 LLM 能够更高效地与各种数据源和工具协同工作。无论是构建智能助手、自动化工作流程,还是开发复杂的 AI 系统,MCP 都是一个值得考虑的解决方案。

参考资料:

发布于: 刚刚阅读数: 4
用户头像

知识浅谈

关注

公众号:知识浅谈 2022-06-22 加入

🍁 作者:知识浅谈,InfoQ签约作者,CSDN博客专家/签约讲师,华为云云享专家,阿里云签约博主,51CTO明日之星 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥网站:vip.zsqt.cc

评论

发布
暂无评论
MCP详解及手把手实战_MCP_知识浅谈_InfoQ写作社区