Skip to content

Conversation

@JubSteven
Copy link
Contributor

Describe this PR

Adapted open-source tools from Mirothinker and add relevant docs on deploying open-source models.

Checklist for PR

Must Do

  • Write a good PR title and description, i.e. feat(agent): add pdf tool via mcp, perf: make llm client async and fix(utils): load custom config via importlib etc. CI job check-pr-title enforces Angular commit message format to PR title.
  • Run make precommit locally. CI job lint enforce ruff default format/lint rules on all new codes.
  • Run make pytest. Check test summary (located at report.html) and coverage report (located at htmlcov/index.html) on new codes.

Nice To Have

  • (Optional) Write/update tests under /tests for feat and test PR.
  • (Optional) Write/update docs under /docs for docs and ci PR.

- Resolved formatting conflicts in utils/extract_futurex_results.py
- Resolved formatting conflicts in utils/prepare_benchmark/gen_futurex.py
- Resolved formatting conflicts in utils/progress_check/check_futurex_progress.py

All conflicts were due to code formatting differences (whitespace, line breaks, trailing commas).
Functionality remains identical between branches.
@BinWang28 BinWang28 requested a review from Copilot October 2, 2025 01:48
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adapts and incorporates open-source tools from MiroThinker, adding three new MCP servers that provide vision, reasoning, and audio processing capabilities using open-source models.

  • Added three new open-source MCP servers (vision, reasoning, and audio) with robust error handling
  • Created comprehensive documentation for deploying and using the open-source models
  • Added YAML configuration files to integrate the new tools into the existing tool system

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/tool/mcp_servers/vision_mcp_server_os.py New vision MCP server for VQA using open-source models like Qwen2.5-VL
src/tool/mcp_servers/reasoning_mcp_server_os.py New reasoning MCP server with retry logic for complex problem solving
src/tool/mcp_servers/audio_mcp_server_os.py New audio transcription server using open-source Whisper models
docs/mkdocs/mkdocs.yml Updated navigation to include documentation for new open-source tools
docs/mkdocs/docs/tool_vqa_os.md Documentation for open-source vision tool deployment and usage
docs/mkdocs/docs/tool_reasoning_os.md Documentation for open-source reasoning tool deployment and usage
docs/mkdocs/docs/tool_audio_os.md Documentation for open-source audio tool deployment and usage
config/tool/tool-reasoning-os.yaml Configuration file for reasoning tool integration
config/tool/tool-image-video-os.yaml Configuration file for vision tool integration
config/tool/tool-audio-os.yaml Configuration file for audio tool integration

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.


payload = {"model": VISION_MODEL_NAME, "messages": messages_for_llm}

response = requests.post(VISION_BASE_URL, json=payload, headers=headers)
Copy link

Copilot AI Oct 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using synchronous requests.post in an async function can block the event loop. Consider using aiohttp.ClientSession().post() instead since you're already importing and using aiohttp elsewhere in the function.

Copilot uses AI. Check for mistakes.
if duration > 0:
return duration
except Exception as e:
return f"[ERROR]: Failed to get audio duration: {e}"
Copy link

Copilot AI Oct 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The function _get_audio_duration should return a float according to its type hint and usage context, but this exception handler returns a string. This could cause type errors when the returned value is used in calculations.

Suggested change
return f"[ERROR]: Failed to get audio duration: {e}"
return 0.0

Copilot uses AI. Check for mistakes.

@mcp.tool()
async def reasoning(question: str) -> str:
"""You can use this tool use solve hard math problem, puzzle, riddle and IQ test question that requires a lot of chain of thought efforts.
Copy link

Copilot AI Oct 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar error: 'use solve' should be 'to solve'. The sentence should read: 'You can use this tool to solve hard math problem...'

Suggested change
"""You can use this tool use solve hard math problem, puzzle, riddle and IQ test question that requires a lot of chain of thought efforts.
"""You can use this tool to solve hard math problem, puzzle, riddle and IQ test question that requires a lot of chain of thought efforts.

Copilot uses AI. Check for mistakes.
---

!!! info "Documentation Info"
**Last Updated:** January 2025 · **Doc Contributor:** Team @ MiroMind AI
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be "October 2025"

@BinWang28 BinWang28 merged commit 0b20ff3 into MiroMindAI:miroflow-v0.3 Oct 2, 2025
1 check passed
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.

2 participants