fix(server): no input validation for numeric parameters — speed, vol, pitch, n, sample_rate, bitrate
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 68/100
Hướng nghiên cứu
Bắt đầu trong minimax_mcp/server.py tại text_to_audio(), text_to_image() và music_generation(), sau đó đọc const.py cùng với các giá trị mặc định đã được ghi rõ trong tài liệu. Theo dõi cách từng tham số đi đến API và kiểm tra cấu trúc test hiện có trước khi thực hiện thay đổi. Công việc được xem là hoàn tất khi mọi range và enum được liệt kê đều được kiểm tra trước một lệnh gọi API, các hằng số được định nghĩa trong const.py và lỗi xác định rõ các giá trị không hợp lệ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
Tool functions accept numeric parameters with documented valid ranges but perform zero validation before sending to the API. Invalid values are sent directly, resulting in cryptic API errors instead of clear user-facing messages.
Exact locations
minimax_mcp/server.py:
text_to_audio():speed(0.5-2.0),vol(0-10),pitch(-12 to 12),sample_rate(enum),bitrate(enum),channel(1-2)text_to_image():n(1-9),aspect_ratio(enum)music_generation():sample_rate(enum),bitrate(enum)
Example
# This sends invalid data to the API with no local validation:
text_to_audio(text="hello", speed=999, vol=-50, pitch=100)
Impact
- Users get opaque API errors instead of clear validation messages
- Wastes API calls (and money) on requests that will fail
- Docstrings document ranges but code does not enforce them
Proposed solution
Add validation at the start of each function:
VALID_SAMPLE_RATES = {8000, 16000, 22050, 24000, 32000, 44100}
VALID_BITRATES = {32000, 64000, 128000, 256000}
VALID_EMOTIONS = {"happy", "sad", "angry", "fearful", "disgusted", "surprised", "neutral"}
VALID_FORMATS = {"pcm", "mp3", "flac"}
VALID_ASPECT_RATIOS = {"1:1", "16:9", "4:3", "3:2", "2:3", "3:4", "9:16", "21:9"}
def _validate_range(name: str, value, min_val, max_val):
if not (min_val <= value <= max_val):
raise MinimaxValidationError(f"{name} must be between {min_val} and {max_val}, got {value}")
def _validate_enum(name: str, value, valid_values: set):
if value not in valid_values:
raise MinimaxValidationError(f"{name} must be one of {valid_values}, got {value}")
Move these constants to const.py alongside the defaults.
Acceptance criteria
- All documented parameter ranges are validated before API calls
- Clear error messages indicating the valid range/values
- Constants for valid values defined in
const.py
- Ngôn ngữ chính
- Python
- Star
- 1.6k
- Fork
- 283
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của MiniMax-AI/MiniMax-MCP
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
MiniMax-AI/MiniMax-MCP#89 · 1 bình luận ·
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 82/100
MiniMax-AI/MiniMax-MCP#88 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
MiniMax-AI/MiniMax-MCP#78 ·
-
fix(server): music_generation has inconsistent indentation — try block indented inside function bodyĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
MiniMax-AI/MiniMax-MCP#69 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
MiniMax-AI/MiniMax-MCP#105 · 1 bình luận ·
Tất cả issue của MiniMax-AI/MiniMax-MCP
Issue tương tự
-
customer-reported
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Azure/azure-cli#34150 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
community-request
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
NVIDIA-NeMo/Curator#2464 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
weblate-discover crashes with an unhandled FileNotFoundError when the directory does not existĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
WeblateOrg/translation-finder#1099 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
trezor/trezor-firmware#7997 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày