Remix.run Logo
simonw 5 days ago

I hacked around with this a bit and figured out a way to get it to spit out logging of the prompts and responses to the server: https://gist.github.com/simonw/54fc42ef9a7fb8f777162bbbfbba4...

Short-ish version:

    ANTHROPIC_API_KEY="$(llm keys get anthropic)" \
    uv run --with devtools --with pydantic-ai python -c '
    import asyncio
    from devtools import pprint
    from pydantic_ai import Agent, capture_run_messages
    from pydantic_ai.mcp import MCPServerStdio

    server = MCPServerStdio(
        "deno",
        args=[
            "run",
            "-N",
            "-R=node_modules",
            "-W=node_modules",
            "--node-modules-dir=auto",
            "jsr:@pydantic/mcp-run-python",
            "stdio",
        ],
    )

    agent = Agent("claude-3-5-haiku-latest", mcp_servers=[server])

    async def main():
        with capture_run_messages() as messages:
            async with agent.run_mcp_servers():
                result = await agent.run("How many days between 2000-01-01 and 2025-03-18?")
        pprint(messages)
        print(result.output)

    asyncio.run(main())'
Output here: https://gist.github.com/simonw/54fc42ef9a7fb8f777162bbbfbba4...

I got it running against Mistral Small 3.1 running locally too - notes on that here: https://simonwillison.net/2025/Apr/18/mcp-run-python/