From 0430ec2c2f2b3f2bb71399880d610ff791d7681e Mon Sep 17 00:00:00 2001 From: zhifu gao Date: Tue, 30 Jun 2026 15:20:45 +0800 Subject: [PATCH] Add Glama metadata for MCP server (#3076) --- examples/mcp_server/README.md | 2 ++ examples/mcp_server/glama.json | 19 +++++++++++++++++++ tests/test_mcp_server_example.py | 14 ++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 examples/mcp_server/glama.json diff --git a/examples/mcp_server/README.md b/examples/mcp_server/README.md index 166208ad0..0e4cf198b 100644 --- a/examples/mcp_server/README.md +++ b/examples/mcp_server/README.md @@ -25,6 +25,8 @@ docker run --rm -i \ When submitting this server to MCP directories such as Glama, use this folder as the Docker build context so the container entrypoint runs `funasr_mcp.py`. +The `glama.json` file in this directory declares the MCP server command and +metadata for directory scanners. ### 3. Configure your AI tool diff --git a/examples/mcp_server/glama.json b/examples/mcp_server/glama.json new file mode 100644 index 000000000..6db09e9db --- /dev/null +++ b/examples/mcp_server/glama.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://glama.ai/api/mcp/v1/schemas/glama.json", + "name": "funasr", + "display_name": "FunASR MCP Server", + "description": "Local speech recognition MCP server powered by FunASR and SenseVoice. It exposes a transcribe_audio tool for privacy-friendly audio transcription from local files.", + "repository": "https://github.com/modelscope/FunASR", + "license": "MIT", + "runtime": "python", + "tags": ["speech-to-text", "asr", "audio", "funasr", "sensevoice", "local", "mcp"], + "mcpServers": { + "funasr": { + "command": "python", + "args": ["/app/funasr_mcp.py"], + "env": { + "FUNASR_DEVICE": "cpu" + } + } + } +} diff --git a/tests/test_mcp_server_example.py b/tests/test_mcp_server_example.py index 24058166f..07d36c128 100644 --- a/tests/test_mcp_server_example.py +++ b/tests/test_mcp_server_example.py @@ -1,3 +1,4 @@ +import json from pathlib import Path @@ -12,3 +13,16 @@ def test_mcp_server_example_has_glama_ready_dockerfile(): assert "funasr" in dockerfile_text assert "COPY funasr_mcp.py /app/funasr_mcp.py" in dockerfile_text assert 'CMD ["python", "/app/funasr_mcp.py"]' in dockerfile_text + + +def test_mcp_server_example_has_glama_metadata(): + example_dir = Path(__file__).resolve().parents[1] / "examples" / "mcp_server" + metadata_path = example_dir / "glama.json" + + metadata = json.loads(metadata_path.read_text()) + + assert metadata["repository"] == "https://github.com/modelscope/FunASR" + assert metadata["runtime"] == "python" + assert metadata["license"] == "MIT" + assert metadata["mcpServers"]["funasr"]["command"] == "python" + assert metadata["mcpServers"]["funasr"]["args"] == ["/app/funasr_mcp.py"]