Token导航 LogoToken导航TokenDH.com
Proyecto Summa MCP Agent logo
数据服务stdio官方级别未说明来源级核验

Proyecto Summa MCP Agent

MCP Server

一个基于Gradio界面的对话助手,允许用户通过自然语言查询Excel文件数据,利用OpenAI API和自定义工具集实现数据操作。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
数据分析Python自然语言查询

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

arleyserna

提供方

arleyserna

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv .venv

详细介绍

MCP Agent — Asistente para consultas en Excel

Resumen


Este proyecto proporciona un asistente conversacional (interfaz Gradio) que permite hacer consultas en lenguaje natural sobre los datos de un archivo Excel. Usa la API de OpenAI (client openai) y un conjunto de "herramientas" (funciones) que exponen operaciones sobre un DataFrame (leer esquema, filas, estadísticas, valores de columna, etc.).

Principales componentes


  • main.py — punto de entrada que arranca la interfaz Gradio y crea la instancia de LlmService con ExcelTools.
  • services/llm_service.py — clase LlmService que orquesta las llamadas al cliente OpenAI y ejecuta funciones sobre el Excel.
  • utils/excel_tools.py — clase ExcelTools que carga el archivo Excel en un pandas.DataFrame y expone métodos serializables a JSON:

- get_schema() - get_all_data() - get_head(n) - get_statistics() - get_column_values(column)

  • mcp_server/mcp_tools.py — descripción (spec) de las funciones accesibles por la LLM (parámetros y descripciones).
  • utils/config.py — construcción de la ruta absoluta al archivo Excel usado por defecto.
  • data/ — carpeta que contiene el Excel de prueba: cesancias_causadas.xlsx.
  • requirements.txt — dependencias del proyecto.

Estructura del proyecto


agent_app/
├─ .env                      # variables de entorno (no versionar)
├─ README.md                 # este fichero
├─ requirements.txt          # dependencias
├─ main.py                   # punto de entrada y UI Gradio
├─ data/
│  └─ cesancias_causadas.xlsx
├─ mcp_server/
│  ├─ __init__.py
│  └─ mcp_tools.py           # especificación de herramientas (function-calling)
├─ services/
│  └─ llm_service.py         # lógica de orquestación con OpenAI
└─ utils/
	├─ __init__.py
	├─ config.py              # construcción de rutas y configuración local
	├─ excel_tools.py         # lectura y operaciones sobre el Excel
	└─ execute_functions.py   # adaptadores/ejecutores auxiliares

Qué hace


  1. Carga un archivo Excel desde data/cesancias_causadas.xlsx en ExcelTools.
  2. Expone una interfaz web (Gradio) donde el usuario escribe consultas en lenguaje natural.
  3. LlmService envía la consulta a OpenAI usando el mecanismo de "function-calling" (herramientas definidas en mcp_tools).
  4. Si la LLM solicita ejecutar una función (por ejemplo get_head), el servicio ejecuta el método correspondiente de ExcelTools, serializa el resultado a JSON y lo pasa de vuelta a la LLM para generar la respuesta final.

Requisitos


  • Python 3.10+ (preferible 3.11).
  • Dependencias listadas en requirements.txt. Principalmente:

- pandas - openai - gradio - python-dotenv - openpyxl

Instalación (sugerida)


  1. Clona o descarga el repositorio.
  2. Crea y activa un entorno virtual (ejemplo con venv):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
  1. Instala dependencias:
pip install -r requirements.txt

Configuración


  1. Crea un archivo .env en la raíz de agent_app con la variable de entorno de OpenAI:
OPENAI_API_KEY=sk-xxxxx
  1. Asegúrate de que el archivo Excel existe en agent_app/data/cesancias_causadas.xlsx. Si el nombre del archivo es distinto, actualiza utils/config.py o pásalo explícitamente al crear ExcelTools.

Ejecución


Desde el directorio agent_app lanza:

python main.py

Esto abrirá la interfaz Gradio en el navegador (local). En la UI escribe preguntas y el sistema intentará responder usando las herramientas disponibles.

Notas de implementación


  • Las funciones que la LLM puede llamar están definidas en mcp_server/mcp_tools.py usando la especificación esperada por el cliente OpenAI.
  • LlmService inicializa un cliente OpenAI con la API key y manda las messages al endpoint de chat. Cuando la LLM solicita ejecutar una función, LlmService llama a _execute_function() que mapea el nombre de la función a un método de ExcelTools.
  • ExcelTools procesa valores especiales (NaN, pd.Timestamp, pd.Timedelta) y los transforma a valores serializables (None o strings) antes de invocar json.dumps().

Resolución de problemas comunes


  • ModuleNotFoundError: No module named 'agent_app'

- Ejecuta el script desde el directorio agent_app (o ajusta PYTHONPATH). Las importaciones usan rutas relativas como from utils.excel_tools import ExcelTools.

  • FileNotFoundError / pandas cannot read Excel

- Verifica que data/cesancias_causadas.xlsx existe y que la ruta en utils/config.py apunta correctamente al archivo. Si ejecutas desde otra carpeta, usa la ruta absoluta o modifica main.py para construir la ruta a partir de __file__.

  • Error con serialización JSON de Timestamp

- ExcelTools ya convierte pd.Timestamp a isoformat() y NaN a None. Si añades nuevas funciones que devuelvan objetos no serializables, conviértelos manualmente antes de json.dumps().

Sugerencias / siguientes pasos


  • Añadir tests unitarios para los métodos de ExcelTools.
  • Hacer más robusto el mapeo de funciones (validar parámetros entrantes).
  • Añadir paginación o límites cuando se devuelve get_all_data() para evitar respuestas muy grandes.
  • Mejorar manejo de errores y logging (por ejemplo con logging en lugar de prints).

Autor


Autor Hoover Serna Electronics Engineer | Contact: arleyserna@msn.com

目录标签

目录标签

数据分析Python自然语言查询Excel数据处理本地部署Gradio界面OpenAI集成数据分析工具

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP