Repository: promptfoo/promptfoo
Issue: Assistant always returns [object Object] when trying to invoke local MCP tools.
Root cause: Interface Contract Mismatch

I'm working on testing a local MCP server with full output from the LLM. Essentially an e2e test. The LLM is able to return the correct tool when asked. Something like this:

`[{"function":{"arguments":"{}","name":"list_resources"},"id":"call_G7iHuL3U30twnTusnDc8LlXn","type":"function"}]`

So that isolated test works. It finds the right tool. However, when I try to invoke the tool itself, it never seems able to do it. It continues to only return the above tool call when what I want is the output. When running a simulated user scenario I get this type of output

```
User: What kinds of token system resources do you have available?
---
Assistant: [object Object]
---
User: Could you give me a summary of those resources? Also, if I’m planning to build a button component, which resources would you recommend using?
---
Assistant: [object Object]
---
User: It looks like something went wrong with the list—could you clarify or provide a summary of the available token resources? That’ll help me understand which ones would be best for building a button component.
---
Assistant: [object Object]
---
User: I'm still seeing "[object Object]" instead of the resource details. Could you copy and paste or describe the token resources you have, so I can suggest the best ones for making a button component?
---
Assistant: [object Object]
---
User: It seems like the resources aren't displaying properly on my end. Can you share the names or descriptions of the token resources? That way, I can help you figure out which ones are best for buttons.
---
Assistant: [object Object]
---
User: I'm still not seeing the details of the resources. Do you have a list or a description you could share?
---
Assistant: [object Object]
---
User: It seems like there's still an issue with the information coming through. Could you try describing the token resources or listing them out in plain text? That will help me help you choose the best ones for your button component.
---
Assistant: [object Object]
---
User: It looks like the resource information still isn’t coming through. If you can, please type out the resource names or descriptions. That will help me give you a relevant summary and suggestion for your button component.
---
Assistant: [object Object]
---
User: It seems I’m still not receiving the actual resource details. If possible, please provide them in plain text, so I can help you pick the best options for your button component.
---
Assistant: [object Object]
```

This particular MCP server is being run as follows:
```
providers:
  - id: azure:chat:gpt-5-mini
    config:
      reasoning:
        effort: 'medium'
      max_completion_tokens: 25000
      isReasoningModel: true
      mcp:
        enabled: true
        server:
          command: npx
          args:
            - '@fluentui-contrib/token-analyzer-mcp'
          name: test-token-mcp
```

The MCP server is locally installed in the node environment on my machine and run through NPX. It works on other MCP hosts. If there's something I need to do differently I am having a hard time figuring it out and would love some guidance here.

Wow, thanks for the quick PR @mldangelo !

Hi @brandonthomas! Please let me know how this goes! Feel free to reach out if you encounter any other issues (or if you'd like some promptfoo swag).