feat(convo): support MCP servers under MLLM - #16
Merged
Conversation
Agora's newer MLLM schema attaches MCP to the mllm block (properties.mllm.mcp_servers[]) since MLLM replaces the LLM. atem previously only handled MCP under the cascaded LLM. - ServiceConfig gains `mcp_servers: Vec<McpServer>`, so [[agent.mllm.mcp_servers]] parses (reuses the existing McpServer type). - service_to_json emits mcp_servers → properties.mllm.mcp_servers[]. - enable_tools auto-set now fires for the MLLM pipeline too when the mllm block declares MCP servers (unless pinned in [advanced_features]). - convo.example.toml documents [[agent.mllm.mcp_servers]] and updates the LLM-section note (MLLM no longer "ignores" MCP). Cascaded-LLM MCP behavior is unchanged; llm-parked mcp_servers still don't leak into MLLM mode. New unit test covers the MLLM path. 🤖 Built with SMT <smt@agora.build>
Add three scenario tests for MCP-under-MLLM: - full real-world /join body shape (auto-injected enable/modalities alongside mcp_servers + top-level advanced_features.enable_tools; no llm block) - multiple MCP servers preserve order + per-server headers/timeout_ms - explicit advanced_features.enable_tools = false overrides the auto-set (parity with cascaded-LLM behavior) 🤖 Built with SMT <smt@agora.build>
- convo_config.rs: fix the LlmConfig.mcp_servers doc (no longer "MLLM ignores this" — point to ServiceConfig.mcp_servers) and broaden the McpServer doc to cover both llm + mllm. - AGENTS.md: remove the stale "MCP is LLM-pipeline only — ignored in MLLM mode" line; document [[agent.mllm.mcp_servers]]. 🤖 Built with SMT <smt@agora.build>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
atem serv convocan now forward MCP servers under MLLM — Agora's newer MLLM schema attaches MCP to the mllm block (properties.mllm.mcp_servers[]) since MLLM replaces the LLM. atem previously only handled MCP under the cascaded LLM (properties.llm.mcp_servers[]).Enables configs like:
→
properties.mllm.mcp_servers[]+advanced_features.enable_tools: true.Changes
ServiceConfiggainsmcp_servers: Vec<McpServer>(reuses the existingMcpServertype +mcp_server_to_json), so[[agent.mllm.mcp_servers]]parses.service_to_jsonemitsmcp_serverswhen present →properties.mllm.mcp_servers[].enable_toolsauto-set convenience now fires for the MLLM pipeline too (previously cascaded-only) when the mllm block declares MCP servers — unless pinned in[advanced_features].convo.example.toml: documents[[agent.mllm.mcp_servers]]and updates the stale LLM-section note ("MLLM mode ignores MCP" → now supported).Compatibility
mcp_servers_not_emitted_in_mllm_modestill passes — llm-parked MCP does not leak into MLLM mode; only the mllm block's own MCP is emitted.Tests
New
join_payload_emits_mcp_servers_under_mllm_and_auto_enables_tools. Full suite: 701 passed / 0 failed.Generated with SMT smt@agora.build