计算器API服务

一个基于Node.js和Fastify的API服务,提供基本算术运算功能,支持自动参数验证和OpenAPI文档生成。

  • by FakerVash
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 FakerVash/MCP-CALCULATOR-SERVER

使用说明

Informe Técnico – MCP Calculator Server

1. Introducción

El presente informe técnico documenta el desarrollo del MCP Calculator Server, una API construida con Node.js, TypeScript y Fastify. El objetivo del proyecto es exponer un endpoint que permita realizar operaciones aritméticas básicas con validación estricta de parámetros y documentación automática mediante OpenAPI 3.0.

El sistema fue diseñado siguiendo buenas prácticas de desarrollo backend, con énfasis en validación de datos, manejo de errores y claridad en la documentación técnica.


2. Descripción del Tool

Nombre: calculator Descripción: Realiza operaciones aritméticas básicas (suma, resta, multiplicación y división) con dos números.

Operaciones soportadas

  • add: Suma
  • subtract: Resta
  • multiply: Multiplicación
  • divide: División

3. Tecnologías utilizadas

  • Node.js
  • TypeScript
  • Fastify
  • AJV (JSON Schema Validator)
  • @fastify/swagger
  • @fastify/swagger-ui

4. Estructura del proyecto

MCP-CALCULATOR-SERVER/
│
├── src/
├   ├──routes/
│   │      └── calculator.routes.ts
│   ├──tools/
│   │      └──calculetor.tools.json
│   └── index.ts
│
├── fotos/
├── node_modules/
├── package.json
├── package-lock.json
├── tsconfig.json
└── README.md

5. Instalación

  1. Ubicar el proyecto en el sistema local.
  2. Abrir una terminal en el directorio raíz del proyecto.
  3. Instalar las dependencias.
npm install

6. Ejecución del servidor

Para iniciar el servidor en modo desarrollo:

npm run dev

El servicio quedará disponible en:

http://localhost:3000

7. Documentación OpenAPI

La documentación OpenAPI 3.0 se genera automáticamente utilizando Swagger y se encuentra disponible en:

http://localhost:3000/docs

Desde esta interfaz se puede consultar la definición del endpoint, los esquemas de entrada y salida, y ejecutar pruebas directamente sobre la API.

(Evidencia: capturas de pantalla almacenadas en la carpeta "fotos")


8. Endpoint implementado

POST /tools/calculator

8.1 Parámetros de entrada

{
  "operation": "add",
  "a": 10,
  "b": 5
}

Validaciones

  • operation: obligatorio, tipo string, valores permitidos: add, subtract, multiply, divide
  • a: obligatorio, tipo number
  • b: obligatorio, tipo number
  • No se permiten propiedades adicionales

La validación es realizada automáticamente por Fastify mediante JSON Schema.


9. Respuestas

9.1 Respuesta exitosa (200)

{
  "result": 15,
  "operation": "add"
}

9.2 Error por parámetros inválidos (400)

{
  "operation": "power",
  "a": 2,
  "b": 3
}

Respuesta:

{

  "error": "Operacion desconocida",

}

9.3 Error por división entre cero (400)

{
  "operation": "divide",
  "a": 10,
  "b": 0
}

Respuesta:

{
  "error": "División por cero no permitida"
}

9.4 Error interno del servidor (500)

{
  "error": "Error interno del servidor"
}

10. Pruebas realizadas

El endpoint fue probado utilizando herramientas de cliente HTTP como Thunder Client y Postman, verificando casos válidos e inválidos.

Ejemplo de prueba con curl:

curl -X POST http://localhost:3000/tools/calculator \
-H "Content-Type: application/json" \
-d '{"operation":"multiply","a":4,"b":6}'

Operacion Suma:

Operacion Resta:

Operacion Multiplicacion:

Operacion Division:

Operacion Division entre cero (400)

Error por parámetros inválidos (400)


11. Conclusiones

El MCP Calculator Server cumple con los requisitos técnicos establecidos, proporcionando un endpoint funcional con validación automática, manejo adecuado de errores HTTP y documentación clara mediante OpenAPI. El proyecto demuestra una implementación correcta de Fastify con TypeScript y una estructura adecuada para servicios backend.