XiYan MCP Server
一个能够通过自然语言查询数据库的模型上下文协议(MCP)服务器
由 XiYan-SQL 驱动,在开放基准测试中处于文本到SQL技术的领先地位
💻 XiYan-mcp-server |
🌐 XiYan-SQL |
📖 Arxiv |
🏆 XiYanSQL Model |
📄 PapersWithCode
🤗 HuggingFace |
🤖 ModelScope |
🌕 析言GBI
English | 中文 | 日本語
Ding Group钉钉群|
Follow me on Weibo
目录
功能
- 🌐 通过 XiYanSQL 以自然语言获取数据
- 🤖 支持通用LLM(GPT,qwenmax)、文本到SQL SOTA模型
- 💻 支持纯本地模式(高安全性!)
- 📝 支持MySQL和PostgreSQL。
- 🖱️ 以资源形式列出可用表格
- 🔧 读取表格内容
预览
架构
有两种方法可以将此服务器集成到您的项目中,如下所示: 左边是远程模式,这是默认模式。它需要API密钥来访问服务提供商的xiyanSQL-qwencoder-32B模型(参见配置)。 另一种模式是本地模式,它更安全。它不需要API密钥。

最佳实践和报告
"使用MCP + Modelscope API-Inference构建本地数据助手,无需编写一行代码"
MCPBench评估
下图说明了XiYan MCP服务器在MCPBench基准测试中的性能。与MySQL MCP服务器和PostgreSQL MCP服务器相比,XiYan MCP服务器表现出卓越的性能,领先2-22个百分点。详细的实验结果可以在[MCPBench](https://github.com/modelscope/MCP Bench)中找到,报告《MCP服务器的评估报告》也提供了相关信息。

工具预览
-
工具
get_data提供了从数据库获取数据的自然语言接口。此服务器将输入的自然语言转换为SQL,并调用数据库返回查询结果。 -
{dialect}://{table_name}资源允许在指定了特定table_name时,从数据库获取部分样本数据,供模型参考。 -
{dialect}://资源将列出当前数据库的名称
安装
从pip安装
需要Python 3.11+。 您可以通过pip安装服务器,它会安装最新版本:
pip install xiyan-mcp-server
如果您想从源代码安装开发版本,可以安装github上的源代码:
pip install git+https://github.com/XGenerationLab/xiyan_mcp_server.git
从Smithery.ai安装
参见 @XGenerationLab/xiyan_mcp_server
未完全测试。
配置
您需要一个YAML配置文件来配置服务器。 默认配置文件config_demo.yml中提供了一个默认配置文件,如下所示:
mcp:
transport: "stdio"
model:
name: "XGenerationLab/XiYanSQL-QwenCoder-32B-2412"
key: ""
url: "https://api-inference.modelscope.cn/v1/"
database:
host: "localhost"
port: 3306
user: "root"
password: ""
database: ""
MCP配置
您可以设置传输协议为 stdio 或 sse。
STDIO
对于stdio协议,可以设置如下:
mcp:
transport: "stdio"
SSE
对于sse协议,可以设置mcp配置如下:
mcp:
transport: "sse"
port: 8000
log_level: "INFO"
默认端口是 8000。如有需要,可以更改端口。
默认日志级别是 ERROR。我们建议将日志级别设置为 INFO 以获取更详细的信息。
其他配置如 debug、host、sse_path、message_path 也可以自定义,但通常您不需要修改它们。
LLM配置
Name 是要使用的模型名称,key 是模型的API密钥,url 是模型的API URL。我们支持以下模型。
| 版本 | 通用LLM(GPT,qwenmax) | Modelscope的SOTA模型 | Dashscope的SOTA模型 | 本地LLM |
|---|---|---|---|---|
| 描述 | 基础,易于使用 | 最佳性能,稳定,推荐 | 最佳性能,用于试用 | 慢,高安全性 |
| 名称 | 官方模型名称(例如 gpt-3.5-turbo,qwen-max) | XGenerationLab/XiYanSQL-QwenCoder-32B-2412 | xiyansql-qwencoder-32b | xiyansql-qwencoder-3b |
| 密钥 | 服务提供商的API密钥(例如 OpenAI, 阿里云) | Modelscope的API密钥 | 通过电子邮件获取的API密钥 | "" |
| URL | 服务提供商的端点(例如"https://api.openai.com/v1") | https://api-inference.modelscope.cn/v1/ | https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sql | http://localhost:5090 |
通用LLM
如果您想使用通用LLM,例如gpt3.5,可以直接配置如下:
model:
name: "gpt-3.5-turbo"
key: "YOUR KEY "
url: "https://api.openai.com/v1"
database:
如果您想使用来自阿里的Qwen,例如Qwen-max,可以使用以下配置:
model:
name: "qwen-max"
key: "YOUR KEY "
url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
database:
文本到SQL SOTA模型
我们推荐使用XiYanSQL-qwencoder-32B(https://github.com/XGenerationLab/XiYanSQL-QwenCoder),它是文本到SQL领域的SOTA模型,参见[鸟基准](https://bird-bench.github.io/)。 使用该模型有两种方法。您可以选择其中任何一种。 (1) Modelscope, (2) 阿里云DashScope.
(1) Modelscope版本
您需要申请Modelscope的API-inference密钥,https://www.modelscope.cn/docs/model-service/API-Inference/intro 然后您可以使用以下配置:
model:
name: "XGenerationLab/XiYanSQL-QwenCoder-32B-2412"
key: ""
url: "https://api-inference.modelscope.cn/v1/"
阅读我们的模型描述以获取更多详细信息。
(2) Dashscope版本
我们在阿里云DashScope上部署了该模型,因此您需要设置以下环境变量:
将您的电子邮件发送给我以获取 key。 ( godot.lzl@alibaba-inc.com )
在电子邮件中,请附上以下信息:
name: "YOUR NAME",
email: "YOUR EMAIL",
organization: "your college or Company or Organization"
我们将根据您的电子邮件发送 key。然后您可以在yml文件中填写 key。
key 将在1个月内过期或200次查询或其他合法限制下过期。
model:
name: "xiyansql-qwencoder-32b"
key: "KEY"
url: "https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sql"
注意:此模型服务仅用于试用,如果您需要在生产环境中使用它,请联系我们。
(3) 本地版本
或者,您也可以在自己的服务器上部署XiYanSQL-qwencoder-32B模型。 参见本地模型以获取更多详细信息。
数据库配置
host、port、user、password、database 是数据库的连接信息。
您可以使用本地或任何远程数据库。目前我们支持MySQL和PostgreSQL(更多方言即将支持)。
MySQL
database:
host: "localhost"
port: 3306
user: "root"
password: ""
database: ""
PostgreSQL
第一步:安装Python包
pip install psycopg2
第二步:准备如下所示的config.yml:
database:
dialect: "postgresql"
host: "localhost"
port: 5432
user: ""
password: ""
database: ""
请注意,对于postgresql,dialect 应该是 postgresql。
启动
服务器启动
如果您想使用 sse 启动服务器,必须在终端中运行以下命令:
YML=path/to/yml python -m xiyan_mcp_server
然后您应该在浏览器中看到 http://localhost:8000/sse 的信息。(默认情况下,如果您的mcp服务器在其他主机/端口上运行,请更改)
否则,如果您使用 stdio 传输协议,通常您会在特定的mcp应用程序中声明mcp服务器命令,而不是在终端中启动它。
但是,如果需要,您仍然可以使用此命令进行调试。
客户端设置
Claude桌面版
在您的Claude桌面配置文件中添加此内容,参考 Claude桌面配置示例
{
"mcpServers": {
"xiyan-mcp-server": {
"command": "/xxx/python",
"args": [
"-m",
"xiyan_mcp_server"
],
"env": {
"YML": "PATH/TO/YML"
}
}
}
}
请注意,这里的Python命令需要Python可执行文件的完整路径(/xxx/python);否则,无法找到Python解释器。您可以通过命令 which python 确定此路径。其他应用程序也适用。
Claude桌面目前不支持SSE传输协议。
Cline
准备如Claude桌面版的配置
Goose
如果您使用 stdio,在配置中添加以下命令,参考 Goose配置示例
env YML=path/to/yml /xxx/python -m xiyan_mcp_server
否则,如果您使用 sse,将类型更改为 SSE 并将端点设置为 http://127.0.0.1:8000/sse
Cursor
使用以下类似命令。
对于 stdio:
{
"mcpServers": {
"xiyan-mcp-server": {
"command": "/xxx/python",
"args": [
"-m",
"xiyan_mcp_server"
],
"env": {
"YML": "path/to/yml"
}
}
}
}
对于 sse:
{
"mcpServers": {
"xiyan-mcp-server_1": {
"url": "http://localhost:8000/sse"
}
}
}
Witsy
在命令中添加以下内容:
/xxx/python -m xiyan_mcp_server
添加一个env:键是YML,值是您的yml文件路径。 参考 Witsy配置示例
无法工作!
联系我们: Ding Group钉钉群| Follow me on Weibo

