aef8791151
- Added Appshell component with responsive navbar and main content area - Integrated ColorSchemeToggle for light/dark mode switching - Created Welcome component with styled title and introductory text - Developed ChatPage for LLM interaction with WebSocket support - Implemented Biblioteca for managing notes with rich text editor - Added LoginPage for user authentication with error handling - Introduced MessageList and MessageBubble components for chat messages - Styled components with CSS modules for consistent design
92 lines
2.6 KiB
Python
92 lines
2.6 KiB
Python
from fastmcp import FastMCP
|
|
|
|
mcp = FastMCP()
|
|
|
|
@mcp.tool(description="Suma dos números enteros.")
|
|
def add(a: int, b: int) -> int:
|
|
return a + b
|
|
|
|
@mcp.tool(description="Resta dos números enteros.")
|
|
def subtract(a: int, b: int) -> int:
|
|
return a - b
|
|
|
|
@mcp.tool(description="Multiplica dos números enteros.")
|
|
def multiply(a: int, b: int) -> int:
|
|
return a * b
|
|
|
|
@mcp.tool(description="Divide dos números y devuelve el resultado flotante.")
|
|
def divide(a: float, b: float) -> float:
|
|
if b == 0:
|
|
raise ValueError("No se puede dividir entre cero.")
|
|
return a / b
|
|
|
|
@mcp.tool(description="Calcula el módulo de dos números enteros.")
|
|
def modulo(a: int, b: int) -> int:
|
|
return a % b
|
|
|
|
@mcp.tool(description="Concatena dos cadenas de texto.")
|
|
def concat(a: str, b: str) -> str:
|
|
return a + b
|
|
|
|
@mcp.tool(description="Devuelve la longitud de una cadena.")
|
|
def string_length(s: str) -> int:
|
|
return len(s)
|
|
|
|
@mcp.tool(description="Convierte una cadena a mayúsculas.")
|
|
def to_upper(s: str) -> str:
|
|
return s.upper()
|
|
|
|
@mcp.tool(description="Convierte una cadena a minúsculas.")
|
|
def to_lower(s: str) -> str:
|
|
return s.lower()
|
|
|
|
@mcp.tool(description="Devuelve la suma de todos los elementos en una lista de enteros.")
|
|
def sum_list(numbers: list[int]) -> int:
|
|
return sum(numbers)
|
|
|
|
@mcp.tool(description="Devuelve el valor máximo en una lista de enteros.")
|
|
def max_in_list(numbers: list[int]) -> int:
|
|
return max(numbers)
|
|
|
|
@mcp.tool(description="Verifica si un número es par.")
|
|
def is_even(n: int) -> bool:
|
|
return n % 2 == 0
|
|
|
|
@mcp.tool(description="Verifica si una cadena es un palíndromo.")
|
|
def is_palindrome(s: str) -> bool:
|
|
return s == s[::-1]
|
|
|
|
@mcp.tool(description="Calcula el factorial de un número entero positivo.")
|
|
def factorial(n: int) -> int:
|
|
if n < 0:
|
|
raise ValueError("El factorial no está definido para negativos.")
|
|
if n == 0:
|
|
return 1
|
|
result = 1
|
|
for i in range(1, n + 1):
|
|
result *= i
|
|
return result
|
|
|
|
@mcp.tool(description="Devuelve los primeros n números de Fibonacci.")
|
|
def fibonacci(n: int) -> list[int]:
|
|
if n <= 0:
|
|
return []
|
|
seq = [0, 1]
|
|
while len(seq) < n:
|
|
seq.append(seq[-1] + seq[-2])
|
|
return seq[:n]
|
|
|
|
@mcp.tool(description="Devuelve si un número es primo.")
|
|
def is_prime(n: int) -> bool:
|
|
if n <= 1:
|
|
return False
|
|
for i in range(2, int(n**0.5) + 1):
|
|
if n % i == 0:
|
|
return False
|
|
return True
|
|
|
|
|
|
if __name__ == "__main__":
|
|
mcp.run(transport="streamable-http", host="127.0.0.1", port=4200, path="/math")
|
|
|
|
# mcp.run(transport="stdio") |