Skip to content

fix(stdio): iterate over decoded messages list#241

Open
b-serra wants to merge 1 commit intocloudwalk:mainfrom
b-serra:fix/stdio-process-messages-list
Open

fix(stdio): iterate over decoded messages list#241
b-serra wants to merge 1 commit intocloudwalk:mainfrom
b-serra:fix/stdio-process-messages-list

Conversation

@b-serra
Copy link

@b-serra b-serra commented Jan 16, 2026

Summary

Fixes #240

Message.decode/1 returns a list of messages, but process_message/2 expects a single message (map). This caused a BadMapError when processing any incoming stdio message.

Changes

  • Iterate over the decoded messages list using Enum.each/2 before calling process_message/2 for each message

Before (broken)

case Message.decode(data) do
  {:ok, messages} ->
    process_message(messages, state)  # messages is a list, crashes

After (fixed)

case Message.decode(data) do
  {:ok, messages} ->
    Enum.each(messages, &process_message(&1, state))  # properly handles list

Testing

  • All existing tests pass (442 tests, 1 unrelated failure in HTTP transport)
  • Manually tested with MCP stdio server - initialize requests now work correctly

Message.decode/1 returns a list of messages, but process_message/2
expects a single message (map). This caused a BadMapError when
processing any incoming stdio message.

The fix properly iterates over the decoded messages list using
Enum.each/2 before calling process_message/2 for each message.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[STDIO] BadMapError when processing incoming messages

1 participant