mcp-server-demo-ERPNEXT

Orm15/mcp-server-demo-ERPNEXT

3.2

If you are the rightful owner of mcp-server-demo-ERPNEXT and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This project demonstrates an MCP server for a chatbot integrated with ERPNext, showcasing how to expose Python functions as tools for intelligent assistants.

Tools
  1. add

    Add two numbers

Proyecto MCP Server Demo

Colaborador Axel Cuadros

Este proyecto es un ejemplo de servidor MCP para chatbot integrado con ERPNEXT(Para este proyecto ya se considera que tienes acceso a la ERP)

Configuraciones

Dirigete a la pagina principal haciendo uso de la ip obtenido de la VM con ifconfig

Dirigete a settings

Dezplazate hacia abajo, genera y copia la API key y API secret

Guarda las credenciales

Descarga o clona el repositorio

Instalación de python

Este documento explica cómo instalar Python entorno Windows usando winget.

Requisitos Previos

  • Windows 10 o superior
  • Tener habilitado el administrador de paquetes winget

Paso 1: Instalar Python

Abre una terminal de Windows (PowerShell o CMD) como administrador y ejecuta:

winget install Python.Python.3


## Instalación de dependencias con uv en Windows

1. Abre PowerShell.
2. Instala pipx si no lo tienes:
   ```powershell
   pip install pipx
  1. Instala uv usando pipx:

    pipx install uv
    

    O directamente con pip:

    pip install uv
    
  2. Verifica la instalación:

    uv --version
    
  3. Crea un entorno virtual con uv:

    uv venv .venv
    
  4. Activa el entorno virtual:

    .venv\Scripts\Activate.ps1
    
  5. Instala las dependencias del proyecto:

    uv pip install -r requirements.txt
    
  6. Si tienes problemas con la instalaciónde uv prueba como administrador:

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    

Configura tus variables de entorno

Crea un archivo llamado .env en la raíz del proyecto con el siguiente contenido (reemplaza los valores según tu ERPNext):

URL_ERPNext=http://192.168.52.128/
API_KEY=tu_api_key
API_SECRET=tu_api_secret

Asegúrate de que estos datos coincidan con los que obtuviste en la configuración de tu ERPNext.

Este repositorio contiene:

  • Código fuente del servidor
  • Imágenes y diagramas

Para más información, revisa la documentación en la carpeta Docs/.

¿Cómo funciona la herramienta para asignar profesor a una orden de venta?

La función asignar_profesor_a_orden_venta permite asignar un profesor (que debe existir previamente como "Sales Person" en ERPNext) a una orden de venta específica.

¿Qué hace?

  • Recibe el ID de la orden de venta (sales_order_id) y el nombre del profesor (profesor).
  • Actualiza el campo sales_team de la orden de venta en ERPNext, asignando el profesor con el 100% de participación.
  • Devuelve el resultado de la operación e imprime un mensaje indicando si la actualización fue exitosa o si hubo un error.

Ejemplo de uso:

asignar_profesor_a_orden_venta("SO-0001", "Juan Perez")

Esto asignará a "Juan Perez" como responsable de la orden de venta con ID "SO-0001".

Nota: El profesor debe existir previamente como "Sales Person" en ERPNext para que la asignación funcione correctamente.

¿Qué es MCP y cómo funciona en este proyecto?

MCP (Model Context Protocol) es un protocolo y framework que permite exponer funciones de Python como herramientas accesibles para asistentes inteligentes, chatbots o integraciones externas. En este proyecto, se utiliza la clase FastMCP para registrar y exponer funciones que interactúan con ERPNext.

  • Cada función decorada con @mcp.tool() se convierte en una herramienta disponible para el asistente o para ser llamada desde otros sistemas.
  • MCP gestiona la comunicación, el registro y la ejecución de estas funciones de manera estructurada y segura.
  • El servidor MCP puede ejecutarse en diferentes modos de transporte (por ejemplo, stdio, HTTP, etc.), facilitando la integración con otros servicios o interfaces conversacionales.

Ejemplo básico:

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Demo1")

@mcp.tool()
def mi_funcion(param):
    # lógica aquí
    return resultado

Esto permite que mi_funcion sea llamada desde un asistente o interfaz conectada al servidor MCP.

Para el uso en local con Github local debes usar el archivo mcp.json

Agrega la ruta del archivo main.py en tu equipo y luego selecciona restart o start

Luego da click en el simbolo de herramienta en el chat de Github copilot

Luego verás si tus herramientas estan disponibles

Running the standalone MCP development tools

To run the mcp command with uv:

uv run mcp

Quickstart

Let's create a simple MCP server that exposes a calculator tool and some data:

# server.py
from mcp.server.fastmcp import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")


# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b


# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"

You can install this server in Claude Desktop and interact with it right away by running:

mcp install server.py

Alternatively, you can test it with the MCP Inspector:

mcp dev server.py

Prueba

Luego de las configuraciones modifica tus funciones para mayor precisión, puedes probar el servidor desde el chat de Github copilot con este ejemplo:

Puedes validar la creación en Customer

BONUS - usando Claude desktop

You can install this server in Claude Desktop and interact with it right away by running:

mcp install server.py

Abre claude

Verifica que las herramientas estén presentes

Prueba creando un alumno

Te aparecerá una ventana emergente, autotiza el mcp

Luego revisa la salida y el ERP

ERPNEXT