From ca35520338057512a71acd42bb116ffbb82cc192 Mon Sep 17 00:00:00 2001 From: tanaka takashi Date: Sat, 11 Jul 2026 19:02:14 +0900 Subject: feat: implement Famicom-style MML composer MCP server - Add FastMCP server with compose_mml tool - Support ppmck and pyxel MML syntax - Add lexer and parsers for both formats - Add NES APU-style synthesizer (pulse/triangle/noise) to WAV - Add MML templates (basic/melody/chord/drum/empty) for both modes - Add tests for lexer, parser, and server - Support stdio, http, sse, streamable-http transports - Update README, pyproject.toml, and .gitignore --- README.md | 55 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 20 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 7d1d26c..351c9c9 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,53 @@ # mml-composemusic-mcp -MML (Music Macro Language) を使った作曲支援 MCP サーバー向け Python パッケージ。 +ファミコン音源(2A03 APU)風のMMLをLLMに作曲させるためのMCPサーバ。 -## 開発環境 +## 機能 -- Python 3.14+ -- 依存管理: [uv](https://docs.astral.sh/uv/) +- `compose_mml` ツールを提供 +- ppmck 形式と pyxel 形式のMMLを解析・合成 +- MIDIノート番号に変換後、NES APU風の矩形波/三角波/ノイズでWAV出力 +- バリデーション、テンプレート生成に対応 -## セットアップ +## ツール引数 + +| 引数 | 説明 | +|------|------| +| `action` | `compose`, `validate`, `template` のいずれか | +| `mml` | MML文字列(compose/validate時必須) | +| `mode` | `ppmck` または `pyxel`(compose/validate時必須) | +| `template` | `basic`, `melody`, `chord`, `drum`, `empty`(action=template時) | +| `sample_rate` | WAV出力サンプリングレート(デフォルト44100) | +| `normalize` | 出力振幅の正規化(デフォルトtrue) | + +## 実行 ```bash -uv sync +uv run mml-composemusic-mcp --output-dir ./data ``` -## 主要コマンド +または ```bash -# テスト実行 -uv run pytest +uv run python -m mml_composemusic_mcp.server --output-dir ./data +``` + +## テスト -# リンター・フォーマッタ実行 +```bash +uv run pytest uv run ruff check . uv run ruff format . - -# 依存追加 -uv add - -# 開発依存追加 -uv add --dev ``` ## ディレクトリ構成 -``` -src/ # ソースコード -tests/ # テストコード -doc/ # ドキュメント \ No newline at end of file +- `src/mml_composemusic_mcp/` + - `server.py` - MCPサーバ + - `lexer.py` - MML字句解析 + - `parser_ppmck.py`, `parser_pyxel.py` - 構文解析 + - `ir.py` - 中間表現・エラー型 + - `synthesizer.py` - APU風合成・WAV出力 + - `templates.py` - テンプレート +- `tests/` - テスト +- `doc/` - 設計書 -- cgit v1.2.3