summaryrefslogtreecommitdiff
path: root/tests/test_mml_conformance.py
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-09-13 14:12:41 +0900
committertanaka takashi <isazaka@gmail.com>2026-09-13 14:13:04 +0900
commit97b34627667fd699f4e0e054533eb89a205a2878 (patch)
tree1d4549d56b7c53be9ecb583db9bb1a5593e54126 /tests/test_mml_conformance.py
parent3b5bd2f8fd15bcc13542ff5ffd3c35453af9a9df (diff)
feat: return composed WAV as MCP audio content
Replace the server-local wav_path result with a protocol-native multimedia response. - Split internal composition execution from MCP ToolResult serialization so filesystem paths never enter public payloads. - Return every successfully composed WAV as AudioContent with the audio/wav MIME type, regardless of file size. - Keep structured audio metadata, duration, note sequence, and validation details alongside the multimedia content. - Use CallToolResult.isError as the authoritative MCP execution status while retaining compose success and validate valid as domain fields. - Treat invalid compose/API requests and runtime failures as tool errors, while invalid MML discovered by validate remains a successful validation operation. - Sanitize synthesis, file-write, audio-serialization, and unexpected failure responses so internal paths and exception details are not exposed. - Add protocol-level coverage for base64 round trips, content block types, error semantics, ResourceLink absence, and path non-disclosure. - Update existing tests for the separated execution layer and path-free result contract. - Document AudioContent and isError behavior in the README, MCP schema, and design specification. - Require the tested FastMCP 3.4.4 API line and exclude the incompatible 4.x major version. Verification: 487 tests passed; ruff check passed; git diff --check passed; uv lock --check passed; and a manual MCP call returned TextContent plus AudioContent with no wav_path.
Diffstat (limited to 'tests/test_mml_conformance.py')
-rw-r--r--tests/test_mml_conformance.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/tests/test_mml_conformance.py b/tests/test_mml_conformance.py
index 82ec807..8c3822e 100644
--- a/tests/test_mml_conformance.py
+++ b/tests/test_mml_conformance.py
@@ -41,7 +41,11 @@ from mml_composemusic_mcp.parser_ppmck import parse_ppmck
from mml_composemusic_mcp.parser_pyxel import parse_pyxel
from mml_composemusic_mcp.semantic_ppmck import analyze_ppmck
from mml_composemusic_mcp.semantic_pyxel import analyze_pyxel
-from mml_composemusic_mcp.server import _parse_mml, compose_mml
+from mml_composemusic_mcp.server import _execute_compose_mml, _parse_mml
+
+
+def compose_mml(**kwargs):
+ return _execute_compose_mml(**kwargs).result
def parse_pipeline(source: str, mode: str):