diff options
| author | tanaka takashi <isazaka@gmail.com> | 2026-07-11 19:02:14 +0900 |
|---|---|---|
| committer | tanaka takashi <isazaka@gmail.com> | 2026-07-11 19:02:14 +0900 |
| commit | ca35520338057512a71acd42bb116ffbb82cc192 (patch) | |
| tree | 9faa2428aeb71b62497f21ceec93b99ef7f2a5ac /README.md | |
| parent | 7dca1616b8c891f5e140c7267323d1fcdde6741a (diff) | |
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
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 55 |
1 files changed, 35 insertions, 20 deletions
@@ -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 <package> - -# 開発依存追加 -uv add --dev <package> ``` ## ディレクトリ構成 -``` -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/` - 設計書 |
