1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
# MCP Server Tool Schema
本ドキュメントは `mml-composemusic-mcp` が提供するMCPツールのスキーマ定義です。
## ツール一覧
| ツール名 | 説明 |
|---------|------|
| `compose_mml` | レトロチップ音源風MMLの解析・合成・テンプレート生成を行う |
## `compose_mml`
### 概要
MML文字列を解析し、以下のいずれかの処理を実行します。
- `compose`: MMLをレトロAPU風音源で合成し、WAVファイルを出力する
- `validate`: MMLの構文を検証し、エラー・警告・チャンネル概要を返す
- `template`: 指定したモード用のテンプレートMMLを生成する
### 引数
| 引数名 | 型 | 必須 | デフォルト | 説明 |
|--------|-----|------|-----------|------|
| `action` | string | yes | - | `compose`, `validate`, `template` のいずれか |
| `mml` | string | compose/validate時 | `""` | MMLソース文字列 |
| `mode` | string | compose/validate時 | `""` | `ppmck` または `pyxel` |
| `template` | string | template時 | `"basic"` | `basic`, `melody`, `chord`, `drum`, `empty` |
| `sample_rate` | integer | no | `44100` | 出力WAVのサンプリングレート(Hz) |
| `normalize` | boolean | no | `true` | 出力振幅を正規化するか |
### 戻り値
#### action=`compose` の場合
```json
{
"success": true,
"wav_path": "./data/output.wav",
"duration_sec": 2.0,
"note_sequence": { ... },
"validation": {
"errors": [],
"warnings": []
}
}
```
| フィールド | 型 | 説明 |
|-----------|-----|------|
| `success` | boolean | 合成・WAV出力が成功したか |
| `wav_path` | string \| null | 生成されたWAVファイルのパス(失敗時はnull) |
| `duration_sec` | number | 生成された音声の長さ(秒) |
| `note_sequence` | object \| null | 中間表現(IR)のNoteSequence |
| `validation.errors` | array | エラーのリスト |
| `validation.warnings` | array | 警告のリスト |
#### action=`validate` の場合
```json
{
"valid": true,
"errors": [],
"note_sequence": { ... },
"channel_summary": [
{
"channel": "Pulse1",
"note_count": 4,
"octave_range": [4, 5],
"duration_ticks": 768
}
]
}
```
| フィールド | 型 | 説明 |
|-----------|-----|------|
| `valid` | boolean | MMLにerrorがないか |
| `errors` | array | エラーのリスト |
| `note_sequence` | object \| null | 中間表現(IR)のNoteSequence |
| `channel_summary` | array | チャンネルごとの統計情報 |
#### action=`template` の場合
```json
{
"mml": "0: T120 L8 O4 V100 @1\n C D E F | ...",
"description": "基本的な4ch構成(メロディ+和音+ベース+リズム)"
}
```
| フィールド | 型 | 説明 |
|-----------|-----|------|
| `mml` | string | 生成されたMMLテンプレート |
| `description` | string | テンプレートの説明 |
## エラー詳細
`errors` / `warnings` 配列の要素は以下の形式です。
```json
{
"code": "SYNTAX_INVALID_TOKEN",
"line": 1,
"column": 5,
"message": "未知のモード 'xyz' です。",
"severity": "error",
"hint": "mode は 'ppmck' または 'pyxel' を指定してください。",
"context": ""
}
```
| フィールド | 型 | 説明 |
|-----------|-----|------|
| `code` | string | エラーコード |
| `line` | integer | 発生行(0始まり) |
| `column` | integer | 発生列(0始まり) |
| `message` | string | 人間が読めるメッセージ |
| `severity` | string | `error` または `warning` |
| `hint` | string | 修正のヒント |
| `context` | string | 該当行のコンテキスト |
## サポートするMML形式
### ppmck
- トラック: `A`(Pulse1)、`B`(Pulse2)、`T`(Triangle)、`N`(Noise)
- コマンド例: `t120`(テンポ)、`l8`(音長)、`o4`(オクターブ)、`v15`(音量)、`q2`(デューティ)
### pyxel
- トラック: `0:`(Pulse1)、`1:`(Pulse2)、`2:`(Triangle)、`3:`(Noise)
- コマンド例: `T120`、`L8`、`O4`、`V100`、`@1`
## トランスポート
サーバ起動時に `--transport` で切り替え可能です。
| トランスポート | 用途 |
|---------------|------|
| `stdio` | 標準的なMCPクライアント接続(デフォルト) |
| `http` | HTTPエンドポイント |
| `sse` | Server-Sent Events |
| `streamable-http` | Streamable HTTP |
```bash
uv run mml-composemusic-mcp --transport sse --port 8080
```
|