Skip to main content
Glama
README.md
# Math Lab: MCP + OpenAI Agents SDK

Este proyecto usa una misma lógica matemática desde dos adaptadores:

- Un servidor **MCP** para Codex, el MCP Inspector, o cualquier cliente compatible.
- Un agente construido con el **OpenAI Agents SDK** para conversar en lenguaje natural.

Empaquetado como paquete Python instalable (`pip install -e .`), con layout `src/` y arquitectura limpia por capas.

## Estructura

```text
pyproject.toml       # Metadata, dependencias y entry points del paquete
src/
└── math_assistant/
    ├── domain/          # Reglas matemáticas puras (sin dependencias externas)
    ├── application/     # Catálogo de capacidades públicas
    ├── infrastructure/  # Adaptadores para MCP (FastMCP) y OpenAI Agents SDK
    └── presentation/    # Interfaz de terminal
tests/
├── unit/            # Prueban dominio y catálogo
└── integration/     # Comprueban que los adaptadores se construyen
run_cli.py           # Entry point: interfaz amigable para aprender y probar
run_mcp.py           # Entry point: STDIO exclusivo para el cliente MCP
```

La dependencia siempre apunta hacia adentro:

```text
CLI / MCP / OpenAI SDK  →  application  →  domain
```

El dominio no conoce FastMCP, OpenAI, una API key, ni `print`. Por eso puede probarse rápido y sin red.

## Instalación

```powershell
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
```

Copia tu `OPENAI_API_KEY` en un archivo `.env` en la raíz (nunca se sube a git).

## Ejecutar la interfaz amigable

```powershell
.\.venv\Scripts\python.exe .\run_cli.py
```

El menú permite:

1. Hablar con el agente de OpenAI (usa `OPENAI_API_KEY` de `.env`).
2. Probar suma, resta, multiplicación y división localmente, sin costo de API.
3. Ver las herramientas que el servidor MCP publica.

## Ejecutar el servidor MCP

```powershell
.\.venv\Scripts\python.exe .\run_mcp.py
```

Para inspeccionarlo con [MCP Inspector](https://github.com/modelcontextprotocol/inspector):

```powershell
npx @modelcontextprotocol/inspector "C:\ruta\completa\a\math-mcp-lab\.venv\Scripts\python.exe" "C:\ruta\completa\a\math-mcp-lab\run_mcp.py"
```

Usa rutas absolutas: el Inspector no siempre respeta el directorio de trabajo actual.

No agregues `print()` dentro de `run_mcp.py` ni del adaptador MCP: el canal estándar de salida (`stdout`) se reserva para los mensajes JSON-RPC del protocolo. La interfaz amigable vive en `run_cli.py` por esa razón.

### Integración con Codex

`.codex/config.toml` (no versionado, es config local de máquina) apunta Codex al servidor MCP. Si usas Codex CLI, crea el tuyo:

```toml
[mcp_servers.math]
command = "C:\\ruta\\completa\\a\\math-mcp-lab\\.venv\\Scripts\\python.exe"
args = ["C:\\ruta\\completa\\a\\math-mcp-lab\\run_mcp.py"]
cwd = "C:\\ruta\\completa\\a\\math-mcp-lab"
```

## Pruebas

```powershell
.\.venv\Scripts\python.exe -m unittest discover -s tests -v
```

## Cómo añadir una herramienta matemática

1. Crea la función pura y su docstring en `src/math_assistant/domain/operations.py`.
2. Agrégala a `MATH_OPERATIONS` en `src/math_assistant/application/tool_catalog.py`.
3. Ejecuta las pruebas.

Los dos adaptadores la expondrán automáticamente: FastMCP la convierte en una herramienta MCP y el Agents SDK en una function tool.

TDQS

A3.7/5.0

Scored across 18 tools

Disambiguation5/5

Each tool maps to a distinct mathematical operation; even closely related functions like square_root and nth_root are clearly separated by their descriptions. There is no meaningful overlap or ambiguity among the eighteen tools.

Naming Consistency5/5

All tool names are lowercase, multi-word names use consistent snake_case, and each name directly reflects its operation. The naming style is uniform across arithmetic, statistics, and number theory functions.

Tool Count4/5

Eighteen tools is slightly above the ideal 3-15 range, but each function serves a distinct and commonly needed math purpose. The count is not bloated; it simply reflects a broad but focused math utility surface.

Completeness4/5

The set covers arithmetic, powers/roots, logarithms, basic trigonometry, descriptive statistics, and number theory well. Minor gaps like modulo, absolute value, or inverse trig exist, but agents can handle most common math tasks without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues