admin管理员组文章数量:1029799
MCP详解及手把手实战
MCP详解及手把手实战
Model Context Protocol(MCP)是一个开放协议,旨在标准化大型语言模型(LLM)与外部数据源和工具之间的集成方式。它为 AI 应用程序提供了一种统一的接口,使得不同的系统和服务能够高效、安全地协同工作。
什么是 MCP?
MCP 可以被视为 AI 应用程序的“USB-C 接口”。正如 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服务端代码
代码语言:javascript代码运行次数:0运行复制from mcp.server import FastMCP
from selenium.webdriver import Remote, ChromeOptions
from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection
from selenium.webdrivermon.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import mysql.connector
from 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": "password",
"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))
# 提交事务
connmit()
# 获取新用户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服务端
- 安装cline插件
- 编辑cline中MCP服务端的配置文件
- 使用查询用户信息的询问
- 使用新增用户信息的询问
结语
MCP 为 AI 应用程序提供了一个强大、灵活且安全的集成框架,使得 LLM 能够更高效地与各种数据源和工具协同工作。无论是构建智能助手、自动化工作流程,还是开发复杂的 AI 系统,MCP 都是一个值得考虑的解决方案。
参考资料:
- MCP 中文文档
- MCP 协议规范
- MCP 官方网站
保存为主题
全局属性
自定义样式
行数:216
字数:1355
字符数:5089
MCP详解及手把手实战
MCP详解及手把手实战
Model Context Protocol(MCP)是一个开放协议,旨在标准化大型语言模型(LLM)与外部数据源和工具之间的集成方式。它为 AI 应用程序提供了一种统一的接口,使得不同的系统和服务能够高效、安全地协同工作。
什么是 MCP?
MCP 可以被视为 AI 应用程序的“USB-C 接口”。正如 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服务端代码
代码语言:javascript代码运行次数:0运行复制from mcp.server import FastMCP
from selenium.webdriver import Remote, ChromeOptions
from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection
from selenium.webdrivermon.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import mysql.connector
from 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": "password",
"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))
# 提交事务
connmit()
# 获取新用户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服务端
- 安装cline插件
- 编辑cline中MCP服务端的配置文件
- 使用查询用户信息的询问
- 使用新增用户信息的询问
结语
MCP 为 AI 应用程序提供了一个强大、灵活且安全的集成框架,使得 LLM 能够更高效地与各种数据源和工具协同工作。无论是构建智能助手、自动化工作流程,还是开发复杂的 AI 系统,MCP 都是一个值得考虑的解决方案。
参考资料:
- MCP 中文文档
- MCP 协议规范
- MCP 官方网站
保存为主题
全局属性
自定义样式
行数:216
字数:1355
字符数:5089
本文标签: MCP详解及手把手实战
版权声明:本文标题:MCP详解及手把手实战 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747609118a2192737.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论