Unit Converter MCP Server
Tutorial de API + MCP de Conversor de Unidades
construye la aplicación FastAPI, la envuelve con FastMCP, monta los endpoints HTTP/SSE de MCP, registra recursos y prompts, e inicia uvicorn.
requirements.txt – Dependencias de Python.
Requisitos previos
Python 3.10+ (probado con 3.12).
Entorno virtual.
Inspector de npm a continuación.
⸻
Related MCP server: Local Utilities MCP Server
Configuración desde esta carpeta
python -m venv .venv
# Mac or Gitbash
source .venv/bin/activate
# Windows powershell:
.venv\Scripts\activate
python -m pip install -r requirements.txt⸻
Ejecutar el servidor HTTP + MCP
# start the server
python converter_streamable_http_server.py
# or
python -m converter_streamable_http_server
Verás:
Swagger UI: http://localhost:8003/docs
ReDoc: http://localhost:8003/redoc
Endpoints MCP servidos por FastMCP:
streamable-http: http://localhost:8003/mcp
⸻
Probar los endpoints HTTP (curl)
curl -X POST "http://localhost:8003/miles-to-kilometers?miles=3.1" \
-H "Authorization: Bearer 143f4a46d74fee0d7918b2857577868cb3daf9e6e50ee91c2f7975ba26fdb8f7"
# If we use pydantic models
curl -X POST "http://localhost:8003/miles-to-kilometers" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Y658139cf61948208ed76a4b36122b9552ec5c3f6da5e02f7c5d85d995dede17dE" \
-d "3.1"# Celsius → Fahrenheit
curl -X POST "http://localhost:8003/celsius-to-fahrenheit" \
-H "Content-Type: application/json" \
-d "25"# Fahrenheit → Celsius
curl -X POST "http://localhost:8003/fahrenheit-to-celsius" \
-H "Content-Type: application/json" \
-d "86"# Kilometers → Miles
curl -X POST "http://localhost:8003/kilometers-to-miles" \
-H "Content-Type: application/json" \
-d "5"# Miles → Kilometers (rejects negative values)
curl -X POST "http://localhost:8003/miles-to-kilometers" \
-H "Content-Type: application/json" \
-d "3.1"Cada endpoint devuelve un JSON como:
{ "result": <número>, "operation": "..." } o { "error": "..." } para entradas no válidas.
Cabeceras y Autenticación (común a todos)
Añadir tipo de contenido JSON (y opcionalmente tu token de autenticación)
-H "Content-Type: application/json"
-H "Authorization: Bearer "
Nuestro servidor aún no requiere autenticación, podemos omitir la cabecera Authorization.
Uso con MCP (Ejemplo de VS Code)
Inicia el servidor como se indicó anteriormente.
Apunta tu cliente MCP al proceso.
// Example VS Code .vscode/mcp.json entry:
{
"servers": {
"UnitConverter": {
"command": "python",
"args": ["converter_api_tutorial.py"]
}
}
}Desde el cliente MCP, lista los artefactos. Deberías ver:
Herramientas: celsius_to_fahrenheit, fahrenheit_to_celsius, kilometers_to_miles, miles_to_kilometers
Recursos: resource://unit_reference, resource://troubleshooting_guide
Prompts: explain_conversion, api_usage
⸻
Inspeccionar con el Inspector MCP de npm
explora todo (herramientas, recursos, prompts) en un navegador.
con el servidor ya ejecutándose en http://localhost:8003
# If env error appears
npx @modelcontextprotocol/inspector@latest -e DUMMY=1 --url http://localhost:8003/mcp --transport streamable-http
# If you want to test the older HTTP:
npx @modelcontextprotocol/inspector@latest -e DUMMY=1 --url http://localhost:8003/mcp --transport http
# If you want to test the deprecated SSE:
npx @modelcontextprotocol/inspector@latest -e DUMMY=1 --url http://localhost:8003/sse --transport ssePara ejecutar solo el servidor STDIO
# If venv is ".venv", change to .\.venv\Scripts\python.exe
npx @modelcontextprotocol/inspector python converter_stdio_server.pyLa interfaz de usuario se ejecuta en localhost:5173 por defecto.
Cambia el puerto de la interfaz si es necesario: CLIENT_PORT=8080 npx @modelcontextprotocol/inspector --url http://localhost:8003/mcp --transport http
Añade cabeceras si es necesario: --header "Authorization: Bearer TOKEN".
Ejemplos de JSON-RPC para Prompts y Recursos
Listar todos los prompts
curl -s -X POST <SERVER_URL> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"prompts/list","params":{},"id":1}'⸻
Obtener un prompt específico
curl -s -X POST <SERVER_URL> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"prompts/get","params":{"name":"summarize"},"id":2}'⸻
Renderizar/ejecutar un prompt con variables
curl -s -X POST <SERVER_URL> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"prompts/render","params":{"name":"summarize","variables":{"text":"This is the content to summarize","tone":"neutral"}},"id":3}'Listar recursos disponibles
curl -s -X POST <SERVER_URL> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"resources/list","params":{},"id":4}'Leer un recurso por URI
curl -s -X POST <SERVER_URL> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"resources/read","params":{"uri":"file:///data/report.pdf"},"id":5}'Buscar recursos (si es compatible)
curl -s -X POST <SERVER_URL> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"resources/search","params":{"query":"error OR exception","limit":50},"id":6}'⸻
Manejo de errores
Error de análisis (-32700)
Solicitud no válida (-32600)
Método no encontrado (-32601)
Parámetros no válidos (-32602)
Error interno (-32603)
Notas
macOS/Linux (bash/zsh) • Los ejemplos anteriores funcionarán tal cual.
# Windows PowerShell
curl -Method POST <SERVER_URL> ` -Headers @{ "Content-Type"="application/json" }`
-Body '{"jsonrpc":"2.0","method":"prompts/list","params":{},"id":1}'Windows CMD
curl -s -X POST <SERVER_URL> -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"method\":\"prompts/list\",\"params\":{},\"id\":1}"This server cannot be deployed
Maintenance
Related MCP Connectors
OpenWeather MCP — wraps the OpenWeatherMap API (openweathermap.org)
Baking unit conversion (cups/grams/temp/recipe scaling). convert_amount, convert_temperature
60+ units, live FX, timezones, and date arithmetic for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables temperature conversion from Fahrenheit to Celsius through HTTP requests. Provides a simple MCP tool for temperature unit conversion with AWS Lambda deployment support.19 npm-
- AlicenseNot gradedqualityDmaintenanceProvides essential utility tools for text processing, file operations, hashing, temperature conversion, password generation, and date/time operations through a comprehensive MCP interface.MIT
- AlicenseAqualityDmaintenanceMCP server for converting cooking measurements (volume, weight, temperature) between common units like ml, cup, g, oz, and Celsius/Fahrenheit.31MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides deterministic unit conversions backed by Pint, enabling exact unit conversions, compatibility checks, and parsing of quantities for LLMs.5MIT