MML处理服务器

一个处理MML(Music Macro Language)文本的服务器,提供MML解析、MIDI文件转换和MIDI设备演奏功能。

  • by karaage0703
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 karaage0703/mcp-mml-server

使用说明

MML MCP服务器

MML(Music Macro Language)处理Model Context Protocol (MCP)服务器。

概要

此项目包括:MML文本分析MIDI转换为文件MIDI提供设备上的演奏功能MCP服务器。LLM中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长。

机能

MCP服务器基本功能

  • JSON-RPC over stdio基本MCP服务器
  • MCP符合标准协议API端点
  • 错误处理和记录

MML处理机能

  • MML从…开始MIDI转换: MML打开文本MIDI转换为文件并保存
  • MIDI演奏: MIDI打开文件MIDI用设备演奏
  • MML演奏: MML直接演奏文本(内部MIDI转换)
  • MML构文検证: MML检查语法准确性
  • MIDI设备列表:可用MIDI显示设备

所需环境

  • Python 3.10以上
  • pip 在工作空间的边缘uv
  • MIDI设备(使用演奏功能时)

安装

安装相关性

uv(建议)

# uvがインストールされていない場合は先にインストール
# curl -LsSf https://astral.sh/uv/install.sh | sh

# 依存関係のインストール
uv sync

pip中所述修改相应参数的值

# リポジトリをクローン
git clone <repository-url>
cd mcp-mml-server

# 依存関係をインストール
pip install -e .

使用方法

MCP启动服务器

uv(建议)

uv run python -m src.main

选项:

uv run python -m src.main --name "mml-server" --version "1.0.0" --description "MML Processing Server"

正常Python中所述修改相应参数的值

python -m src.main

选项:

python -m src.main --name "mml-server" --version "1.0.0" --description "MML Processing Server"

Cline/Cursor中的设置

Cline/Cursor等的AI在动态输入提示中单击MCP单击功能区上mcp_settings.json在文件中添加以下设置:

"mml-mcp-server": {
  "command": "uv",
  "args": [
    "run",
    "--directory",
    "/path/to/mcp-mml-server",
    "python",
    "-m",
    "src.main"
  ],
  "env": {},
  "disabled": false,
  "alwaysAllow": []
}

/path/to/mcp-mml-server将替换为此存储库的安装目录。

MML工具

1. MML从…开始MIDI转换为mml_to_midi)

MML打开文本MIDI来修改标记元素的显示属性。

参数:

  • mml_text (string): 转换MML文本
  • output_path (string): 输出MIDI文件路径

例:

{
  "mml_text": "O4L4CDEFGAB",
  "output_path": "output.mid"
}

2. MIDI演奏 (play_midi)

MIDI打开文件MIDI用设备演奏。

参数:

  • midi_path (string): 演奏MIDI文件路径
  • device_name (string, optional): 使用,使用MIDI设备名称

例:

{
  "midi_path": "music.mid",
  "device_name": "MIDI Device"
}

3. MML演奏 (play_mml)

MML直接演奏课文。

参数:

  • mml_text (string): 演奏MML文本
  • device_name (string, optional): 使用,使用MIDI设备名称

例:

{
  "mml_text": "O4L4CDEFGAB>C",
  "device_name": "MIDI Device"
}

4. MML构文検证(validate_mml)

MML检查语法的准确性。

参数:

  • mml_text (string): 验证MML文本

例:

{
  "mml_text": "O4L4CDEFGAB"
}

5. MIDI设备列表(list_midi_devices)

可用的MIDI获取设备列表。

参数: 的下界

MML记法

此服务器支持MML符号:

基本音符

  • C, D, E, F, G, A, B:德雷米法索拉西
  • C#, D#, F#, G#, A#:锐化
  • C-, D-, E-, G-, A-, B-:平面

音长指定

  • C4:4分音符
  • C8:8分音符
  • C2:2分音符
  • C1:全音符
  • C4.:附点4分音符的D

休符

  • R4: 4分休符
  • R8: 8分休符

倍频程

  • O4:将倍频程设置为4
  • >:提高一个倍频程
  • <:降低一个倍频程

其他

  • L4:将默认音长设置为4分音符
  • T120:速度为120BPM设置为

MML示例

# 基本的なスケール
O4L4CDEFGAB>C

# テンポとオクターブを指定した楽曲
T120O5L8CDEFGAB>C2

# 付点音符と休符を含む楽曲
O4L4C.D8EFG2R4AB>C

# シャープ・フラットを含む楽曲
O4L4CC#DD-EFF#GG#AA-B>C

开発

运行测试

# uvを使用する場合
uv run pytest

# pipを使用する場合
pytest

安装开发依赖关系

pip install -e ".[dev]"

添加自定义工具

要添加自己的工具:

  1. 创建工具函数
  2. register_tools在函数中注册工具
  3. 在主函数中调用注册函数

例:

def my_custom_tool(params):
    # ツールの処理
    return {
        "content": [
            {
                "type": "text",
                "text": "結果",
            }
        ]
    }

def register_my_tools(server):
    server.register_tool(
        name="my_tool",
        description="My custom tool",
        input_schema={
            "type": "object",
            "properties": {
                "param1": {
                    "type": "string",
                    "description": "Parameter 1",
                },
            },
            "required": ["param1"],
        },
        handler=my_custom_tool,
    )

故障排除

MIDI未找到设备

  1. 在系统中MIDI确认设备是否已连接
  2. list_midi_devices确定工具可用的设备
  3. 虚拟MIDI考虑使用端口

MML语法错误

  1. validate_mml使用工具检查语法
  2. 支持MML确认标记
  3. 确认是否包含非法字符或符号

依赖关系错误

MIDI如果库依赖性导致错误:

macOS:

# Core MIDIが必要
# 通常は自動的にインストールされています

Linux:

# ALSA開発ライブラリが必要
sudo apt-get install libasound2-dev
# または
sudo yum install alsa-lib-devel

窗户:

# Windows MIDIが必要
# 通常は自動的に利用可能です

许可证

MIT许可证

貢献

欢迎普尔请求和伊修的报告。

相关链接