Edison Watch
Desarrolladores

DSPy

Conecta un programa DSPy a Edison Watch usando el SDK Python de MCP y dspy.Tool.from_mcp_tool.

DSPy no incluye un objeto MCP remoto dedicado - configuras una ClientSession MCP básica a través del streamablehttp_client del SDK oficial de Python, luego conviertes cada herramienta con dspy.Tool.from_mcp_tool. Tu URL de conexión lleva tu clave API, por lo que no se necesita cabecera de autenticación.

pip install dspy mcp
import asyncio
import os

import dspy
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

dspy.configure(lm=dspy.LM("openai/gpt-5.6-luna"))

class Assistant(dspy.Signature):
    """Answer the user request using the available tools."""
    request: str = dspy.InputField()
    answer: str = dspy.OutputField()

async def main() -> None:
    url = os.environ["EDISON_MCP_URL"]
    async with streamablehttp_client(url) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            dspy_tools = [dspy.Tool.from_mcp_tool(session, t) for t in tools.tools]

            react = dspy.ReAct(Assistant, tools=dspy_tools)
            result = await react.acall(request="List my available tools.")
            print(result.answer)

asyncio.run(main())

Establece EDISON_MCP_URL con tu URL de conexión, p. ej. https://mcp.edison.watch/mcp/<your-api-key>/?client=dspy.

streamablehttp_client produce una 3-tupla (read, write, get_session_id) - no la 2-tupla que obtienes de stdio_client. Descarta el tercer valor como _. Copiar un ejemplo de stdio y desempaquetar dos valores es un error común. Las herramientas MCP son asíncronas, así que conduce el programa con react.acall(...).

Opcional: la cabecera de secretos cifrados

Para servidores con secretos cifrados de conocimiento cero, pasa headers a streamablehttp_client:

async with streamablehttp_client(
    url,
    headers={"x-edison-secret-key": os.environ["EDISON_SECRET_KEY"]},
) as (read, write, _):
    ...