Probar herramientas MCP dentro del proceso
Guarda el módulo completo siguiente en tests/integration/test_greeting_mcp.py del proyecto generado (crea los directorios si hacen falta). La declaración de servidor es local a la prueba: no requiere añadir una ruta HTTP ni ejecutar otro servidor MCP.
El cliente MCP envía JSON-RPC codificado al dispatcher real y abre un scope nuevo por llamada. Es una prueba de integración del protocolo y del contenedor, sin sockets. No sustituye una prueba de un proxy HTTP, origen autorizado o transporte stdio. La declaración del servidor siguiente pertenece al módulo de prueba y se ejecuta bajo el runner de Orionis.
Ejemplos
Sección titulada «Ejemplos»Ejercitar una herramienta MCP real
Sección titulada «Ejercitar una herramienta MCP real»from orionis.mcp import McpResponse, Server, Toolfrom orionis.schemas import Schemafrom orionis.test import TestCase
class GreetingInput(Schema): name: str
class HelloTool(Tool[GreetingInput]): name = "hello"
def handle(self, payload: GreetingInput) -> McpResponse: return McpResponse.text(f"Hello, {payload.name}")
class GreetingServer(Server): name = "greetings" tools = (HelloTool,)
class TestGreetingServer(TestCase): async def testHello(self) -> None: client = await self.mcp(GreetingServer) response = await client.tool("hello", {"name": "Ada"}) response.assertOk() response.assertTextContains("Hello, Ada")Ejecutar e interpretar la prueba
Sección titulada «Ejecutar e interpretar la prueba»uv run python -B reactor test --start-dir tests/integration --file-pattern "test_greeting_mcp.py"El resultado esperado es una prueba aprobada y código de salida 0. assertOk() rechaza errores JSON-RPC y resultados de herramienta marcados isError=True; assertTextContains() comprueba el texto devuelto. La herramienta debe devolver McpResponse, no un diccionario ni string de Python sin envolver. Para probar una herramienta de tu aplicación, importa su servidor real en vez de declarar el servidor del ejemplo y llámala con entradas representativas.