一个支持自然语言查询数据库的模型上下文协议(MCP)服务器
由 XiYan-SQL 提供支持,在开放基准测试中达到文本到SQL的SOTA水平
💻 XiYan-mcp-server |
🌐 XiYan-SQL |
📖 Arxiv |
🏆 XiYanSQL Model |
📄 PapersWithCode
🤗 HuggingFace |
🤖 ModelScope |
🌕 析言GBI
English | 中文 | 日本語
Ding Group钉钉群|
关注我的微博
有两种方式可以将此服务器集成到您的项目中,如下所示: 左侧是远程模式,这是默认模式。它需要一个API密钥来访问服务提供商的xiyanSQL-qwencoder-32B模型(见配置)。 另一种模式是本地模式,它更安全。它不需要API密钥。

"使用MCP + Modelscope API-Inference构建本地数据助手,无需编写一行代码"
下图展示了析言MCP服务器在MCPBench基准测试中的表现。析言MCP服务器相比MySQL MCP服务器和PostgreSQL MCP服务器表现出色,领先2-22个百分点。详细实验结果可在MCPBench和报告"MCP服务器评估报告"中找到。

工具get_data提供了一个自然语言接口,用于从数据库中检索数据。此服务器将使用内置模型将输入的自然语言转换为SQL,并调用数据库返回查询结果。
{dialect}://{table_name}资源允许在指定特定表名时从数据库中获取部分样本数据以供模型参考。
{dialect}://资源将列出当前数据库的名称
需要Python 3.11+。 您可以通过pip安装服务器,它将安装最新版本:
pip install xiyan-mcp-server
如果您想从源代码安装开发版本,可以从github安装:
pip install git+https://github.com/XGenerationLab/xiyan_mcp_server.git
参见 @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: ""

您可以将传输协议设置为stdio或sse。
对于stdio协议,您可以像这样设置:
mcp:
transport: "stdio"

对于sse协议,您可以像这样设置mcp配置:
mcp:
transport: "sse"
port: 8000
log_level: "INFO"

默认端口是8000。如果需要,您可以更改端口。
默认日志级别是ERROR。我们建议将日志级别设置为INFO以获取更详细的信息。
其他配置如debug, host, sse_path, message_path也可以自定义,但通常不需要修改它们。
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,例如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:

我们推荐XiYanSQL-qwencoder-32B (https://github.com/XGenerationLab/XiYanSQL-QwenCoder),这是文本到SQL的SOTA模型,参见Bird基准测试。 有两种方式可以使用该模型。您可以使用其中任何一种。 (1) Modelscope, (2) 阿里云DashScope.
您需要从Modelscope申请一个API-inference的key,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/"

阅读我们的模型描述以获取更多详细信息。
我们已在阿里云 DashScope 上部署了该模型,因此您需要设置以下环境变量:
请将您的电子邮件发送给我以获取 key(godot.lzl@alibaba-inc.com)。
在邮件中,请附上以下信息:
name: "您的姓名",
email: "您的电子邮件",
organization: "您的学校、公司或组织"

我们将根据您的电子邮件发送 key。您可以将 key 填写在 yml 文件中。
key 将在 1 个月或 200 次查询后失效,或受到其他法律限制。
model:
name: "xiyansql-qwencoder-32b"
key: "KEY"
url: "https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sql"

注意:此模型服务仅供试用,如果您需要在生产环境中使用,请联系我们。
您也可以在您自己的服务器上部署 XiYanSQL-qwencoder-32B 模型。 有关详细信息,请参阅本地模型。
host、port、user、password、database 是数据库的连接信息。
您可以使用本地或任何远程数据库。目前我们支持 MySQL 和 PostgreSQL(更多数据库类型即将推出)。
database:
host: "localhost"
port: 3306
user: "root"
password: ""
database: ""

步骤 1:安装 Python 包
pip install psycopg2
步骤 2:准备 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 Desktop 配置文件中,参考 Claude Desktop 配置示例
{
"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 Desktop 目前不支持 SSE 传输协议。
准备类似于 Claude Desktop 的配置
如果您使用 stdio,请在配置中添加以下命令,参考 Goose 配置示例
env YML=path/to/yml /xxx/python -m xiyan_mcp_server
否则,如果您使用 sse,将 Type 更改为 SSE 并将端点设置为 http://127.0.0.1:8000/sse
使用类似的命令如下。
对于 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"
}
}
}

在命令中添加以下内容:
/xxx/python -m xiyan_mcp_server
添加一个环境变量:键为 YML,值为您的 yml 文件路径。 参考 Witsy 配置示例
如果您对我们的研究或产品感兴趣,请随时联系我们。
Yifu Liu, zhencang.lyf@alibaba-inc.com
如果您觉得我们的工作有帮助,请随时引用我们。
@article{XiYanSQL, title={XiYan-SQL: A Novel Multi-Generator Framework For Text-to-SQL}, author={Yifu Liu and Yin Zhu and Yingqi Gao and Zhiling Luo and Xiaoxia Li and Xiaorong Shi and Yuntao Hong and Jinyang Gao and Yu Li and Bolin Ding and Jingren Zhou}, year={2025}, eprint={2507.04701}, archivePrefix={arXiv}, primaryClass={cs.CL}, url={https://arxiv.org/abs/2507.04701}, }
@article{xiyansql_pre, title={A Preview of XiYan-SQL: A Multi-Generator Ensemble Framework for Text-to-SQL}, author={Yingqi Gao and Yifu Liu and Xiaoxia Li and Xiaorong Shi and Yin Zhu and Yiming Wang and Shiqi Li and Wei Li and Yuntao Hong and Zhiling Luo and Jinyang Gao and Liyu Mou and Yu Li}, year={2024}, journal={arXiv preprint arXiv:2411.08599}, url={https://arxiv.org/abs/2411.08599}, primaryClass={cs.AI} }