Qwen3 + Qwen Agent 智能体开发实战:接入 MCP 工具
前言
近期阿里发布的 Qwen3 系列模型在开源界表现亮眼,凭借混合推理模式和强大的 MCP(Model Context Protocol)支持,迅速成为 AI Agent 开发的主流基座。很多开发者关心如何快速利用 Qwen3 构建具备工具调用能力的智能应用,这就需要用到 Qwen 官方推荐的开发框架——Qwen-Agent。
本期我们将聚焦于如何使用 Qwen3 配合 Qwen-Agent 接入 MCP 服务端,通过实战案例演示如何快速开发具备外部工具交互能力的 AI Agent。
一、获取 Qwen3 API-Key
本次实践基于阿里云百炼大模型服务平台进行 API 调用。获取 API Key 的步骤如下:
- 登录阿里云百炼控制台,若未开通服务需先点击开通。
- 进入 API-KEY 管理页面,创建新的 API Key。
- 复制生成的 API Key,这是请求 Qwen3 模型的重要凭证。
二、Qwen-Agent 快速入门
2.1 框架简介
Qwen-Agent 是通义团队推出的开源智能体开发框架,基于 Qwen 大语言模型构建。它提供了从底层原子组件到高级智能体抽象的完整工具链,支持指令遵循、工具调用、规划与记忆等能力。
核心特性包括:
- 更强的工具调用能力:支持自动调用外部工具或函数,包括内置的代码解释器、浏览器助手及自定义工具。
- 便捷的 MCP 接入流程:新版已集成 MCP 工具接入,仅需配置即可调用。
- 规划与记忆能力:能根据用户需求制定执行步骤,并在对话中保持上下文状态。
- 长文本处理:集成 RAG 机制,支持处理长文档。
2.2 构建多轮对话机器人
通过 Assistant 组件,我们可以快速实现工具调用和 Agent 编排。下面通过一个多轮对话机器人的案例来熟悉基本用法。
首先,使用 conda 创建虚拟环境并安装依赖库:
conda create -n qwen_agent python=3.12
pip install -U "qwen-agent[rag,code_interpreter,gui,mcp]"
pip install uv
接着导入必要的类和函数。Assistant 用于创建智能体对象,typewriter_print 负责格式化打印消息,处理函数调用与普通对话的逻辑差异,并支持推理类模型的输出格式。
from qwen_agent.agents import Assistant
from qwen_agent.utils.output_beautify import typewriter_print
配置模型服务参数,注意将 api_key 替换为实际获取的密钥:
llm_cfg = {
'model': 'qwen3-235b-a22b', # 可按需更换模型名称
'model_server': 'dashscope',
'api_key': '你的 api-key',
'generate_cfg': {'top_p': 0.8} # top_p 越高生成的文本越多样,范围 0-1.0
}
创建智能体对象:
bot = Assistant(
llm=llm_cfg,
system_message='你是一位乐于助人的小助理',
name='智能助理'
)
最后构建多轮对话循环:
messages = []
while True:
query = input('\n用户请求:输入 quit 终止对话')
if query == 'quit':
break
else:
messages.append({'role': 'user', 'content': query})
response_plain_text = ''
print('AI 回复:')
for response in bot.run(messages=messages):
response_plain_text = typewriter_print(response, response_plain_text)
messages.extend(response)
运行代码后,即可看到与 Qwen3 模型的对话结果。
三、Qwen-Agent 接入 MCP 工具
3.1 项目背景
熟悉基础操作后,我们开始深入 MCP 工具的接入。Qwen-Agent 采用 stdio 模式将 MCP 服务作为子进程运行,Agent 作为客户端与子进程通信。
本例将开发一个 SQLite 数据库小助手,接入 mcp-server-sqlite 服务端,实现通过自然语言指令对本地数据库进行操作。
3.2 接入 mcp-server-sqlite
首先导入相关包并初始化 Assistant 类。接入 MCP 需要定义一个 tools 数组存放 JSON Schema 格式的服务器配置,类似于 Function Calling 的配置方式。
from qwen_agent.agents import Assistant
from qwen_agent.utils.output_beautify import typewriter_print
def init_agent_service():
llm_cfg = {
'model': 'qwen3-235b-a22b',
'model_server': 'dashscope',
'api_key': '你的 api-key',
'generate_cfg': {'top_p': 0.8}
}
# 定义 MCP 服务配置
tools = [{
"mcpServers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "test.db"]
}
}
}]
bot = Assistant(
llm=llm_cfg,
name='数据库管理员',
description='你是一位数据库管理员,具有对本地数据库的增删改查能力',
system_message='你扮演一个数据库助手,你具有查询数据库的能力',
function_list=tools
)
return bot
接下来定义数据库助手逻辑,构造提示词让 Agent 创建学生表并插入数据:
def run_query(query=None):
bot = init_agent_service()
messages = []
messages.append({'role': 'user', 'content': [{'text': query}]})
previous_text = ""
print('数据库管理员:', end='', flush=True)
for response in bot.run(messages):
previous_text = typewriter_print(response, previous_text)
if __name__ == '__main__':
query = '帮我创建一个学生表,表名是 students,包含 id, name, age, gender, score 字段,然后插入一条数据,id 为 1,name 为张三,age 为 20,gender 为男,score 为 95'
run_query(query)
执行代码时,uvx 会自动检测并安装所需依赖。完成后,Qwen-Agent 会分析用户请求,生成思考过程,调用 sqlite-create_table 创建表,并使用 sqlite-write_query 插入数据。
程序运行结束后,本地目录会生成名为 test.db 的数据库文件。为了验证工具调用的正确性,可以使用 sqlite3 工具查看数据:
import sqlite3
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
# 查看数据库中有哪些表
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor.fetchall()
print("数据库中的表:", tables)
# 如果有表,则查询第一个表的数据
if tables:
table_name = tables[0][0]
cursor.execute(f"SELECT * FROM {table_name}")
print(f"{table_name} 表中的数据:", cursor.fetchall())
else:
print("数据库中没有表,需要先创建表并插入数据")
conn.close()
可以看到,Qwen-Agent 已成功创建数据表并插入了指定数据。
四、总结
本篇分享了如何利用 Qwen3 大模型和 Qwen-Agent 工具快速接入 MCP 服务端并开发 AI Agent 智能体。主要内容包括:
- 注册 Qwen3 API-Key:通过阿里云百炼平台获取密钥。
- Qwen-Agent 入门:介绍了核心功能,并演示了多轮对话机器人的构建。
- 接入 MCP 工具:以 SQLite 数据库助手为例,展示了配置 MCP 服务端及实现自然语言操作数据库的功能。
当然,这只是 Qwen3 + Qwen-Agent + MCP 智能体开发的初步案例。Qwen-Agent 还具备出色的前端交互展示能力,后续可以进一步探索更复杂的可视化应用场景。希望这篇内容能为开发者提供实用的参考路径。


