不写一行代码,用 MCP+魔搭 API-Inference 搭建一个本地数据助手! 附所有工具和清单

转载自魔搭社区:mp.weixin.qq.com/s/tzDelu0W4...

一句话总结

本文介绍如何使用 MCP 和魔搭 ModelScope API,零代码搭建本地数据助手,实现自然语言数据库交互。

摘要

文章详细介绍了 MCP (模型上下文协议) 的概念、架构和在数据开发上的优势,并指导读者如何利用 MCP 和魔搭 ModelScope 上的开源工具,包括 xiyan-mcp-server 和 goose 客户端,零代码 搭建一个本地数据助手。该助手能够通过自然语言查询本地数据库,是当前 Text-to-SQL 公开基准上的 SOTA 方案,极大地降低了数据应用开发的门槛,解决了传统数据应用开发的复杂性问题。文章提供了详细的步骤和配置说明,降低了数据应用开发的门槛。

主要内容

    1. MCP 简化了 LLM 与外部数据源和工具的集成。

    MCP 作为一个标准协议,使得 LLM 可以方便地连接数据库、文件系统和 API 等,降低了集成复杂度。

    1. 使用 MCP 可以快速搭建本地数据助手,无需编写大量代码。

    通过配置 MCP server 和客户端,即可实现自然语言查询数据库,极大地提高了开发效率。

    1. 通过魔搭 ModelScope 和 MCP,可以快速实现 text-to-SQL 应用。

    文章展示了如何利用魔搭 ModelScope 上的模型和 MCP 协议,快速构建 text-to-SQL 应用,实现自然语言查询数据库。

不写一行代码,用 MCP+魔搭 API-Inference 搭建一个本地数据助手! 附所有工具和清单

00引言

还在为大模型开发的复杂技术栈、框架不兼容和工具调用问题头疼吗?MCP(Model Context Protocol servers)来拯救你了!它用统一的技术栈、兼容主流框架和简化工具调用的方式,让大模型开发变得简单高效。

本文将带你学习一下MCP是什么,以及如何用MCP打造一个数据助手,用自然语言与数据库交互。

01MCP是什么

MCP,全称是"模型上下文协议"(Model Context Protocol),是Anthropic开源的一个标准协议。打个比方,它就像是AI世界的"USB-C"接口。你知道USB-C吧?一根线就能连接手机、电脑、充电器,超级方便。MCP的作用也差不多,它让AI模型(比如Claude)可以轻松地跟外部的数据源和工具连接起来,比如数据库、文件系统、API等等。

MCP 帮助您在大型语言模型(LLMs)的基础上构建智能代理和复杂的工作流程。大型语言模型通常需要与数据和工具进行集成,而 MCP 提供了以下功能:

  • 一个不断扩展的预构建集成列表,您的 LLM 可以直接接入使用

  • 基于标准的模型上下文协议,可以方便的切换不同的LLM

  • 数据更加安全

MCP的核心架构

这张图展示了MCP的核心架构:host,client和server是独立的。host可以是客户端或者APP,client建立起跟server的连接,而server实现对data、resource的封装,可以看成工具调用。

MCP Hosts: 例如 Claude Desktop、集成开发环境(IDE)或希望通过 MCP 访问数据的 AI 工具等程序

MCP Clients: 协议客户端,负责和大模型进行输入输出交互

MCP Server: 协议服务端,负责和外部服务进行交互,暴露外部服务的接口,并且和客户端进行通信

Local Data Resource: 本地的文件,数据等

Remote Resource: 远程的服务,可以通过Server连接

MCP在数据开发上的优势

做过数据开发或者数据应用的同学都肯定被一堆问题困扰过,特别的是数据和模型的部署问题,数据在本地,模型在哪里?应用在哪里?很多时候我们的数据因为安全问题无法上云,只能在本地或者私有环境中,但模型很多时候在云上,而且我们还需要准备环境部署应用层代码。

而现在,MCP可以帮助你解决这个困扰。通过几个问题,我们来对比一下使用或者不使用MCP的情况下数据助手的开发和部署方案。

问题 不用MCP 用MCP
接入模型去做text-to-sql 自己去接入大模型平台 不用管,server封装了
接入数据schema帮助模型理解 在应用层手动开发一个适配器,从数据库拉schema 不用管,server封装了
前端与展示 开发一个前端页面,或者用gradio简单做一个 不用管,有用开源的应用
后端的开发 需要开发一个web服务,连接大模型,连接数据库 不用管,不需要后端服务
支持私有化? 需要完全开发一套,并且在本地使用ollama或者vllm接入模型 不用管,server封装了
支持agent和跟其他模型功能集成? 非常难搞,无法支持 非常简单,直接接入其他MCP server就好

02让我们构建一个数据集助手吧

我们在本地机器上构建数据助手,调用云上的模型,处理本地机器的数据。

本地开发环境:

-Macbook M3 Pro

-MySQL 5.8 (需要在本地有个数据库,如果没有的话可以提前装上mysql并构建一个虚拟的数据库)

准备一个MCP数据服务

我们需要一个MCP服务把数据库接入进来,现在有非常多的MCP server都可以帮我连接数据库,比如社区在维护的MCP server[1]、MCP server的平台(Smithery.AI[2]、MCP.run[3]),但基本上都只是提供了一个SQL执行接口。

为了更好的工具调用效果,选择支持自然语言接口的析言MCP服务(Xiyan-mcp-server[4]),可以用自然语言访问数据库,并从数据库获得答案,是当前Test-to-SQL公开基准上的SOTA。

step1: 如何安装和启动析言MCP数据服务
  • 安装xiyan-mcp-server

在终端上运行以下命令

vbscript 复制代码
pip install xiyan-mcp-server
  • 配置模型和数据库

需要将两类配置信息写入配置文件config.yml,模型配置(LLM )和数据库配置(Database)。

模型配置:魔搭上部署了XiYanSQL-QwenCoder-32B------xiyan_mcp_server官方提供的专属模型------的推理服务,在该模型页面[5](右侧的推理API- Inference部分),可找到配置信息(name、key、url)。

数据库配置:默认本地有mysql数据库,数据库的配置信息包括:本地数据库host、port、username、password和database名字。

整体的配置如下:

vbnet 复制代码
model:  name: "XGenerationLab/XiYanSQL-QwenCoder-32B-2412"  key: "xxxx"   # key可从https://www.modelscope.cn/my/myaccesstoken 页面获取  url: "https://api-inference.modelscope.cn/v1/"
database:  host: "localhost"  port: 3306  user: "root"  password: "123456"  database: "mydb"

将这个配置文件放在本地(假设为/path/to/config.yml)

step2: 如何使用mcp inspector调试服务

选择mcp inspector[6]作为调试器

  • 在终端安装node.js
复制代码
brew install node
  • 用终端启动inspector
typescript 复制代码
npx @modelcontextprotocol/inspector -e YML= /path/to/config.yml python -m xiyan_mcp_server

这个inspector会直接在本地拉起一个web服务供调试用,地址在http://localhost:5173

  • 打开inspector web服务,点击connect,绿灯亮起表示已连接
  • 切换到tools页面,点击list tools会跳出来文本到sql的工具
  • 点击get_data_via_natural_language工具,用自然语言取个数据看看

输入问题"查询年龄16岁以上的邮箱",点击"run tool"

输出是个markdown格式的数据

java 复制代码
| email || --- || alice@example.com || bob@example.com || charlie@example.com |

准备一个客户端

为了更方便交互,我们找一个客户端来调用后台的数据服务。目前有非常多支持MCP的客户端,比如开源的MCP的client[7]、闭源的claude desktop等等。这里我们选用的是goose,这是一个开源的支持MCP的client,原生支持MacOS。

step1: 如何在本地安装配置goose
  • goose[8]下载与安装

下载地址:

block.github.io/goose/docs/...

下载后根据提示一步步安装即可。

step2: 在goose后台配置LLM模型

为了能用起来chat,需要找一个大语言模型API。我们选择用通义千问2.5-72B-Instruct[9],魔搭社区上提供了兼容OpenAI接口的推理API,只需要在后台配置endpoint就好。

  • 在标签栏点击Goose- setting进入到设置页
  • 新增OpenAI的模型:Models------Browse------AddModel

这里我们选用通义千问2.5-72B的模型[9],模型名字填Qwen/Qwen2.5-72B-Instruct即可。

  • 配置模型endpoint和key: Models------Browse------Configure------OpenAI------"+"号

第一栏:Key从www.modelscope.cn/my/myaccess...

第二栏:通义千问2.5-72B的模型直接填"api-inference.modelscope.cn/"

第三栏:用默认的即可。

step3: 添加xiyan_mcp_server拓展
  • 点击Extensions------Add custon extension
  • 在拓展参数上填入启动命令,ID、Name和Description的内容自定义即可。
step4: 开启新的会话测试

回到goose主页面,新开一个会话测试,比如在会话栏输入"查询年龄16岁以上的邮箱"

03用新建的数据助手处理真实的数据库

我从云端拷贝了一份真正的数据库到本地,测试了更多问题,具体请看图。

依靠MCP的强大框架和各种开源工具,我们实现了没写一行代码就轻松搭建了一个完善的数据助手 ,可以用自然语言从数据库取数。未来甚至可以接入更多MCP,做更多更全面更有深度的数据分析,简直太棒啦!

04参考的网站

[1] awesome mcp server

github.com/punkpeye/aw...

[2] ****Smithery.AI

smithery.ai

[3] MCP.run

www.mcp.run/

[4] x iyan-mcp-server

github.com/XGeneration...

[5] XiYanSQL-QwenCoder-32B-2412

www.modelscope.cn/models/XGen...

[6] ****MCP inspector

github.com/modelcontex...

[7] awesome mcp client

github.com/punkpeye/aw...

[8] goose

github.com/block/goose

[9] Qwen2.5-72B-Instruct

www.modelscope.cn/models/Qwen...

相关推荐
饭勺oO8 小时前
AI 编程配置太头疼?ACP 帮你一键搞定,再也不用反复折腾!
ai·prompt·agent·acp·mcp·skills·agent skill
AlienZHOU9 小时前
MCP 是最大骗局?Skills 才是救星?
agent·mcp·vibecoding
Linux内核拾遗10 小时前
人人都在聊 MCP,它到底解决了什么?
aigc·ai编程·mcp
谷哥的小弟12 小时前
SQLite MCP服务器安装以及客户端连接配置
服务器·数据库·人工智能·sqlite·大模型·源码·mcp
tyw1514 小时前
解决 Trae MySQL MCP 连接失败(Fail to start)
mcp·trae·fail to start·mysql mcp·mcp兼容
谷哥的小弟14 小时前
File System MCP服务器安装以及客户端连接配置
服务器·人工智能·大模型·file system·mcp·ai项目
啊湘1 天前
vscode 使用 github (适用CURSOR等使用)
ide·vscode·github·cursor·mcp
小小呱呱蛙1 天前
Claude Code 自下而上分析(Slash/Sub Agents/Skills/MCP)带来的启发
agent·claude·mcp
callJJ1 天前
MCP配置与实战:深入理解现代开发工具链
javascript·node.js·vue·mcp·windsurf
谷哥的小弟2 天前
Brave Search MCP服务器安装以及客户端连接配置
搜索引擎·大模型·spring ai·mcp·brave search