MCP 介绍
MCP是一种模型上下文协议,主要是用来将各类大模型调用外部工具的接口进行统一,在实现AI Agent的过程中需要几个重要的步骤,其中最重要的就是通过大模型语言调用外部的工具将智能体联动起来。在没有MCP之前调用外部工具多数使用Open AI 的Function call方案,
OpenAI
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"tool_calls": [
{
"name": "get_current_stock_price",
"arguments": "{\n \"company\": \"AAPL\",\n \"format\": \"USD\"\n}"
}
]
},
"finish_reason": "tool_calls"
}
Claude
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "<thinking>To answer this question, I will: …</thinking>"
},
{
"type": "tool_use",
"id": "1xqaf90qw9g0",
"name": "get_current_stock_price",
"input": {"company": "AAPL", "format": "USD"}
}
]
}
Gemini
{
"functionCall": {
"name": "get_current_stock_price",
"args": {
"company": "AAPL",
"format": "USD"
}
}
}
LLaMA
{
"role": "assistant",
"content": null,
"function_call": {
"name": "get_current_stock_price",
"arguments": {
"company": "AAPL",
"format": "USD"
}
}
}
例如大模型想获取"苹果公司股票价格",需要调用外部工具(函数:get_current_stock_price)获取,但是上面四个大模型厂商Function call接口都不同,造成调用外部工具时就会比较混乱,不同的模型和不同工具都要开发相应接口,甚至外部函数的逻辑都有可能不用需要单独处理,代码量增大。看起来就像下图左边这样。

MCP的出现定义了统一的标准,实现在不同的模型及外部应用之间采用统一的接口,确保了在不同的模型及外部应用之间切换,具有很好的灵活性和扩展性。
MCP Host/MCP Client : 要通过MCP访问数据库应用客户端程序,当前支持的有:Claude、Cline、Cursor等,在这里可以看到完整的列表和支持情况:https://modelcontextprotocol.io/clients
MCP Server : 通过MCP协议连通外部工具实现具体的功能,当前已有的MCP Server已有很多:https://github.com/modelcontextprotocol/servers

工作流程是:
- 当用户在MCP Client中输入信息后,MCP Client会将用户输入信息和当前已存在的MCP Server信息发送给大模型,MCP Server信息会放到系统提示词中,包括了有哪些MCP Server、函数能力、使用方式、参数信息
- 大模型返回给MCP Client并告知需要调用对应MCP Server中的哪个函数
- 调用对应MCP Server中的函数
- 将输出返回给大模型,大模型根据返回信息进行整理返回给用户
可见第一步是比较关键,将MCP Server作为提示词告知大模型如何使用已有这些外部工具函数。
MySQL MCP Server尝试
社区中有很多开源的MCP Server,这里就拿MySQL作为一次尝试,MCP Client使用Cline。
部署步骤:
- 安装VScode及Cline插件并配置DeepSeek API
- 下载MySQL MCP Server
# Clone the repository
git clone https://github.com/designcomputer/mysql_mcp_server.git
cd mysql_mcp_server
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install development dependencies
pip install -r requirements-dev.txt
# Run tests
pytest
- 在Cline配置MCP Server及MySQL连接信息
{
"mcpServers": {
"mysql": {
"command": "uv",
"args": [
"--directory",
"path/to/mysql_mcp_server",
"run",
"mysql_mcp_server.py"
],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_username",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
- 在Cline中针输入一些自然语言通过大模型和MCP Server结合完成对数据库的操作,测试几个针对MySQL的问题和操作,下面是测试的几个问题都可以正常完成:
- 数据库中有多少表?

- sbtest1表上的索引及索引选择性?

- 当前数据库有多少连接?

- 创建一张订单表,字段名用英文,comment中文

- 返回订单表的表结构

- 向订单表中插入100条测试数据

- 数据库中有多少表?
完整的操作视频参考这篇文章中最后的视频:
https://mp.weixin.qq.com/s/uSJUwz0wI54_ecXVFpVWHg




