XiYan MCP Server
Un servidor que permite consultas en lenguaje natural a bases de datos usando XiyanSQL.
Documentación
XiYan MCP Server
Un servidor de Protocolo de Contexto de Modelo (MCP) que permite consultas en lenguaje natural a bases de datos
impulsado por XiYan-SQL, SOTA de texto a SQL en benchmarks abiertos
💻 XiYan-mcp-server |
🌐 XiYan-SQL |
📖 Arxiv |
🏆 XiYanSQL Model |
📄 PapersWithCode
🤗 HuggingFace |
🤖 ModelScope |
🌕 析言GBI
English | 中文 | 日本語
Ding Group钉钉群|
Follow me on Weibo
Tabla de Contenidos
Características
- 🌐 Obtén datos mediante lenguaje natural a través de XiYanSQL
- 🤖 Soporta LLMs generales (GPT, qwenmax), modelo SOTA de texto a SQL
- 💻 Soporta modo completamente local (¡alta seguridad!)
- 📝 Soporta MySQL y PostgreSQL.
- 🖱️ Lista las tablas disponibles como recursos
- 🔧 Lee el contenido de las tablas
Vista Previa
Arquitectura
Hay dos formas de integrar este servidor en tu proyecto, como se muestra a continuación: La izquierda es el modo remoto, que es el modo predeterminado. Requiere una clave API para acceder al modelo xiyanSQL-qwencoder-32B del proveedor de servicios (ver Configuración). Otro modo es el modo local, que es más seguro. No requiere la clave API.

Mejores prácticas e informes
Evaluación en MCPBench
La siguiente figura ilustra el rendimiento del servidor XiYan MCP medido por el benchmark MCPBench. El servidor XiYan MCP demuestra un rendimiento superior en comparación con el servidor MySQL MCP y el servidor PostgreSQL MCP, logrando una ventaja de 2 a 22 puntos porcentuales. Los resultados detallados del experimento se pueden encontrar en MCPBench y el informe "Informe de Evaluación de Servidores MCP".

Vista Previa de Herramientas
-
La herramienta
get_dataproporciona una interfaz de lenguaje natural para recuperar datos de una base de datos. Este servidor convertirá el lenguaje natural de entrada en SQL usando un modelo integrado y llamará a la base de datos para devolver los resultados de la consulta. -
El recurso
{dialect}://{table_name}permite obtener una porción de datos de muestra de la base de datos para referencia del modelo cuando se especifica un table_name concreto. -
El recurso
{dialect}://listará los nombres de las bases de datos actuales
Instalación
Instalación desde pip
Se requiere Python 3.11+. Puedes instalar el servidor a través de pip, y se instalará la última versión:
pip install xiyan-mcp-server
Si deseas instalar la versión de desarrollo desde el código fuente, puedes instalarla desde el código fuente en github:
pip install git+https://github.com/XGenerationLab/xiyan_mcp_server.git
Instalación desde Smithery.ai
Ver @XGenerationLab/xiyan_mcp_server
No completamente probado.
Configuración
Necesitas un archivo de configuración YAML para configurar el servidor. Se proporciona un archivo de configuración predeterminado en config_demo.yml que se ve así:
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: ""
Configuración de MCP
Puedes configurar el protocolo de transporte a stdio or sse.
STDIO
Para el protocolo stdio, puedes configurarlo así:
mcp:
transport: "stdio"
SSE
Para el protocolo sse, puedes configurar mcp de la siguiente manera:
mcp:
transport: "sse"
port: 8000
log_level: "INFO"
El puerto predeterminado es 8000. Puedes cambiar el puerto si es necesario.
El nivel de registro predeterminado es ERROR. Recomendamos configurar el nivel de registro a INFO para obtener información más detallada.
Otras configuraciones como debug, host, sse_path, message_path también se pueden personalizar, pero normalmente no necesitas modificarlas.
Configuración de LLM
Name is the name of the model to use, key is the API key of the model, url es la URL de API del modelo. Soportamos los siguientes modelos.
| versiones | LLMs generales (GPT, qwenmax) | Modelo SOTA por Modelscope | Modelo SOTA por Dashscope | LLMs locales |
|---|---|---|---|---|
| descripción | básico, fácil de usar | mejor rendimiento, estable, recomendado | mejor rendimiento, para prueba | lento, alta seguridad |
| nombre | el nombre oficial del modelo (p. ej. gpt-3.5-turbo, qwen-max) | XGenerationLab/XiYanSQL-QwenCoder-32B-2412 | xiyansql-qwencoder-32b | xiyansql-qwencoder-3b |
| clave | la clave API del proveedor de servicios (p. ej. OpenAI, Alibaba Cloud) | la clave API de modelscope | la clave API por correo electrónico | "" |
| url | el endpoint del proveedor de servicios (p. ej. "https://api.openai.com/v1") | https://api-inference.modelscope.cn/v1/ | https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sql | http://localhost:5090 |
LLMs Generales
Si deseas usar los LLMs generales, p. ej. gpt3.5, puedes configurarlo directamente así:
model:
name: "gpt-3.5-turbo"
key: "YOUR KEY "
url: "https://api.openai.com/v1"
database:
Si deseas usar Qwen de Alibaba, p. ej. Qwen-max, puedes usar la siguiente configuración:
model:
name: "qwen-max"
key: "YOUR KEY "
url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
database:
Modelo SOTA de Texto a SQL
Recomendamos el XiYanSQL-qwencoder-32B (https://github.com/XGenerationLab/XiYanSQL-QwenCoder), que es el modelo SOTA en texto a SQL, ver benchmark Bird. Hay dos formas de usar el modelo. Puedes usar cualquiera de ellas. (1) Modelscope, (2) Alibaba Cloud DashScope.
(1) Versión de Modelscope
Necesitas solicitar una key de API-inference de Modelscope, https://www.modelscope.cn/docs/model-service/API-Inference/intro
Luego puedes usar la siguiente configuración:
model:
name: "XGenerationLab/XiYanSQL-QwenCoder-32B-2412"
key: ""
url: "https://api-inference.modelscope.cn/v1/"
Lee nuestra descripción del modelo para más detalles.
(2) Versión de Dashscope
Desplegamos el modelo en Alibaba Cloud DashScope, por lo que necesitas configurar las siguientes variables de entorno:
Envíame tu correo electrónico para obtener la key. ( godot.lzl@alibaba-inc.com )
En el correo, adjunta la siguiente información:
name: "YOUR NAME",
email: "YOUR EMAIL",
organization: "your college or Company or Organization"
Te enviaremos una key according to your email. And you can fill the key en el archivo yml.
La key expirará en 1 mes o 200 consultas u otras restricciones legales.
model:
name: "xiyansql-qwencoder-32b"
key: "KEY"
url: "https://xiyan-stream.biz.aliyun.com/service/api/xiyan-sql"
Nota: este servicio de modelo es solo para prueba; si necesitas usarlo en producción, contáctanos.
(3) Versión Local
Alternativamente, también puedes desplegar el modelo XiYanSQL-qwencoder-32B en tu propio servidor. Ver Modelo Local para más detalles.
Configuración de Base de Datos
host, port, user, password, database son la información de conexión de la base de datos.
Puedes usar bases de datos locales o remotas. Ahora soportamos MySQL y PostgreSQL (más dialectos próximamente).
MySQL
database:
host: "localhost"
port: 3306
user: "root"
password: ""
database: ""
PostgreSQL
Paso 1: Instala los paquetes de Python
pip install psycopg2
Paso 2: prepara el config.yml así:
database:
dialect: "postgresql"
host: "localhost"
port: 5432
user: ""
password: ""
database: ""
Ten en cuenta que dialect should be postgresql para postgresql.
Lanzamiento
Lanzamiento del Servidor
Si deseas lanzar el servidor con sse, debes ejecutar el siguiente comando en una terminal:
YML=path/to/yml python -m xiyan_mcp_server
Luego deberías ver la información en http://localhost:8000/sse en tu navegador. (Por defecto, cámbialo si tu servidor mcp se ejecuta en otro host/puerto)
De lo contrario, si usas el protocolo de transporte stdio, normalmente declaras el comando del servidor mcp en la aplicación mcp específica en lugar de lanzarlo en una terminal.
Sin embargo, aún puedes depurar con este comando si es necesario.
Configuración del Cliente
Claude Desktop
Agrega esto en tu archivo de configuración de Claude Desktop, ref Ejemplo de configuración de Claude Desktop
{
"mcpServers": {
"xiyan-mcp-server": {
"command": "/xxx/python",
"args": [
"-m",
"xiyan_mcp_server"
],
"env": {
"YML": "PATH/TO/YML"
}
}
}
}
Ten en cuenta que el comando de Python aquí requiere la ruta completa al ejecutable de Python (/xxx/python); de lo contrario, no se puede encontrar el intérprete de Python. Puedes determinar esta ruta usando el comando which python. Lo mismo aplica para otras aplicaciones.
Claude Desktop actualmente no soporta el protocolo de transporte SSE.
Cline
Prepara la configuración como Claude Desktop
Goose
Si usas stdio, agrega el siguiente comando en la configuración, ref Ejemplo de configuración de Goose
env YML=path/to/yml /xxx/python -m xiyan_mcp_server
De lo contrario, si usas sse, cambia el Tipo a SSE y configura el endpoint a http://127.0.0.1:8000/sse
Cursor
Usa el comando similar como sigue.
Para stdio:
{
"mcpServers": {
"xiyan-mcp-server": {
"command": "/xxx/python",
"args": [
"-m",
"xiyan_mcp_server"
],
"env": {
"YML": "path/to/yml"
}
}
}
}
Para sse:
{
"mcpServers": {
"xiyan_mcp_server_1": {
"url": "http://localhost:8000/sse"
}
}
}
Witsy
Agrega lo siguiente en el comando:
/xxx/python -m xiyan_mcp_server
Agrega una variable de entorno: la clave es YML y el valor es la ruta a tu archivo yml. Ref Ejemplo de configuración de Witsy
Contáctanos:
Si estás interesado en nuestra investigación o productos, no dudes en contactarnos.
Información de Contacto:
Yifu Liu, zhencang.lyf@alibaba-inc.com
Únete a Nuestro Grupo de DingTalk
Otros Enlaces Relacionados
Citación
Si encuentras nuestro trabajo útil, no dudes en citarnos.
@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},
}

