Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

5G MAG M1 Interface Server

БесплатноНе проверен

An MCP server that exposes the 3GPP M1 interface as AI-callable tools, enabling LLM agents to configure 5G Media Streaming sessions through natural language.

GitHubEmbed

Описание

An MCP server that exposes the 3GPP M1 interface as AI-callable tools, enabling LLM agents to configure 5G Media Streaming sessions through natural language.

README

An MCP (Model Context Protocol) server that exposes the 3GPP M1 interface (TS 26.512) as AI-callable tools, enabling LLM agents to configure 5G Media Streaming (5GMS) sessions through natural language.

Overview

This server wraps the 5GMS Application Function's M1 REST API into a full set of tools covering the complete provisioning lifecycle — create, inspect, and delete sessions and their configurations.

The standard 3-step provisioning workflow is:

Step 1 → create_provisioning_session
Step 2 → create_content_hosting_configuration
Step 3 → create_consumption_reporting_configuration

Additional tools allow you to inspect and manage existing resources at any time.

Features

  • Full 3-step 5GMS provisioning workflow via MCP tools
  • GET and DELETE tools for all major resources
  • Enumerate all provisioning sessions via the 5G-MAG management API
  • Session state persisted across tool calls (M1 URL, MAF URL, and session ID remembered automatically)
  • Supports both DASH and HLS entry points
  • JSON template support for content hosting configuration
  • Clear, structured error messages with troubleshooting hints
  • Modular codebase — each resource group lives in its own tool module
  • Reusable MCP prompts covering the full workflow, step-by-step operations, inspection, and teardown
  • Compatible with any MCP client (Claude Desktop, Claude Code, custom agents)

Requirements

  • Python 3.10+
  • A running 5G-MAG Reference Tools Application Function instance with the M1 interface accessible

Installation

git clone https://github.com/aaronmontilla/M1-mcp.git
cd M1-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Dependencies

Package Purpose
mcp[cli] MCP server framework (FastMCP)
httpx Async HTTP client for M1 API calls

Usage

Running the server

source .venv/bin/activate
python server.py

The server communicates over stdio and is intended to be launched by an MCP host (e.g. Claude Desktop).

Connecting to Claude Desktop

Add the following to your claude_desktop_config.json, using the venv Python interpreter so the installed dependencies are available:

{
  "mcpServers": {
    "5gms-m1": {
      "command": "/path/to/M1-mcp/.venv/bin/python",
      "args": ["/path/to/M1-mcp/server.py"]
    }
  }
}

On Windows replace .venv/bin/python with .venv\Scripts\python.exe.

Connecting to Claude Code

claude mcp add 5gms-m1 /path/to/M1-mcp/.venv/bin/python /path/to/M1-mcp/server.py

Tools

Provisioning Sessions

Tool Method Description
create_provisioning_session POST Create a new provisioning session (Step 1)
get_provisioning_session GET Retrieve details for an existing session
enumerate_provisioning_sessions GET List all provisioning sessions (uses MAF management API)
delete_provisioning_session DELETE Delete a provisioning session and all its configurations

create_provisioning_session

Parameter Required Default Description
asp_id Yes Application Service Provider ID
app_id Yes Application ID
provisioning_session_type No DOWNLINK DOWNLINK or UPLINK
m1_url Yes (first call) Base URL of M1 interface, e.g. http://192.168.1.100:7778

enumerate_provisioning_sessions

Parameter Required Default Description
maf_url Yes (first call) Base URL of the 5G-MAG management API, e.g. http://192.168.1.100:7779

Content Hosting Configuration

Tool Method Description
create_content_hosting_configuration POST Define media ingest origin and distribution entry point (Step 2)
get_content_hosting_configuration GET Retrieve the current content hosting configuration
delete_content_hosting_configuration DELETE Remove the content hosting configuration

create_content_hosting_configuration

Parameter Required Default Description
name Yes Friendly name for the configuration
ingest_base_url Yes Origin server base URL
entry_point_relative_path Yes Path to .mpd (DASH) or .m3u8 (HLS) manifest
entry_point_content_type No application/dash+xml MIME type of the manifest
domain_name_alias No None CDN hostname alias
dash_profiles No ["urn:mpeg:dash:profile:isoff-live:2011"] DASH profile URNs
ingest_pull No true Pull vs push ingest
ingest_protocol No HTTP pull URN Ingest protocol URN

Consumption Reporting Configuration

Tool Method Description
create_consumption_reporting_configuration POST Enable viewer analytics reporting (Step 3)
get_consumption_reporting_configuration GET Retrieve the current consumption reporting configuration

create_consumption_reporting_configuration

All parameters are optional.

Parameter Required Default Description
reporting_interval No 10 Seconds between client reports
sample_percentage No 100.0 Percentage of clients that report
location_reporting No true Include geographic location
access_reporting No true Include network access info
provisioning_session_id No state Override the session ID from state
m1_url No state Override the M1 URL from state

Metrics Reporting Configuration

Tool Method Description
create_metrics_reporting_configuration POST Create a new metrics reporting configuration
get_metrics_reporting_configuration GET Retrieve an existing metrics reporting configuration
delete_metrics_reporting_configuration DELETE Remove a metrics reporting configuration

create_metrics_reporting_configuration

Parameter Required Default Description
scheme No urn:3gpp:5gms:metrics-reporting:qoe-metrics Metrics reporting scheme URN
reporting_interval No 10 Seconds between client reports
sample_percentage No 100.0 Percentage of clients that report
sampling_period Yes Seconds between local metric samples
metrics No AF default List of metric URNs to collect (e.g. urn:3GPP:ns:PSS:DASH:QM10#BufferLevel)
url_filters No None URL patterns to restrict reporting scope
data_network_name No None DNN/APN to scope the configuration to a specific network
slice_scope No None List of S-NSSAI objects (e.g. [{"sst": 1, "sd": "000001"}])
provisioning_session_id No state Override the session ID from state
m1_url No state Override the M1 URL from state

Prompts

The server exposes 8 reusable prompt templates (@mcp.prompt()) that MCP clients can surface as slash commands or quick-start options. Each prompt accepts typed parameters and returns a fully-formed instruction for the AI agent.

Prompt Parameters Description
complete_m1_setup m1_url, asp_id, app_id, ingest_base_url, entry_point_path, stream_name Full 3-step setup in a single prompt
create_provisioning_session m1_url, asp_id, app_id, session_type* Step 1 — create a provisioning session
create_content_hosting ingest_base_url, entry_point_path, stream_name, content_type* Step 2 — attach a content hosting configuration
create_consumption_reporting reporting_interval, sample_percentage, location_reporting, access_reporting Step 3 — attach a consumption reporting configuration
add_metrics_reporting sampling_period, reporting_interval, sample_percentage Optional — add QoE metrics reporting
inspect_session provisioning_session_id* Retrieve and display all resources for a session
enumerate_sessions maf_url List all sessions via the MAF management API
teardown_session provisioning_session_id* Cascade-delete all resources for a session

* optional — has a sensible default or falls back to stored state.

Example (Claude Code)

/complete_m1_setup m1_url=http://10.0.0.5:7778 asp_id=acme app_id=live-1 \
  ingest_base_url=https://origin.acme.com/ \
  entry_point_path=live/event1/manifest.mpd stream_name="Acme Live"

Content Hosting Configuration Template

The file content_hosting_config_template.json is used as a base for create_content_hosting_configuration. You can edit it to add additional fields that will be merged with the values you provide at runtime:

{
    "name": "My 5GMS Stream",
    "ingestConfiguration": {
        "pull": true,
        "protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
        "baseURL": "https://example.com/media/"
    },
    "distributionConfigurations": [
        {
            "entryPoint": {
                "relativePath": "stream/manifest.mpd",
                "contentType": "application/dash+xml",
                "profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
            }
        }
    ]
}

Example Workflow

User: Set up a 5GMS stream for my live event.

Agent: Step 1 — I'll create a provisioning session.
       [calls create_provisioning_session(asp_id="acme", app_id="live-event-1", m1_url="http://10.0.0.5:7778")]
       → Session ID: abc-123

Agent: Step 2 — Now I'll configure the content hosting.
       [calls create_content_hosting_configuration(
           name="Live Event Stream",
           ingest_base_url="https://origin.acme.com/",
           entry_point_relative_path="live/event1/manifest.mpd"
       )]
       → Content hosting configured.

Agent: Step 3 — Finally, enabling consumption analytics.
       [calls create_consumption_reporting_configuration(reporting_interval=30)]
       → All done! Your 5GMS session is ready.

Project Structure

M1-mcp/
├── server.py                            # Entry point — imports mcp instance, tools, and prompts
├── mcp_instance.py                      # Shared FastMCP server instance
├── state.py                             # Shared session state (M1 URL, MAF URL, session ID)
├── prompts.py                           # Reusable workflow prompts (@mcp.prompt())
├── tools/
│   ├── __init__.py                      # Imports all tool modules (self-registration)
│   ├── provisioning.py                  # create / get / enumerate / delete provisioning sessions
│   ├── content_hosting.py               # create / get / delete content hosting configurations
│   ├── consumption_reporting.py         # create consumption reporting configurations
│   └── metrics_reporting.py             # create / get / delete metrics reporting configurations
├── content_hosting_config_template.json # Base template for create_content_hosting_configuration
├── requirements.txt                     # Python dependencies
└── README.md                            # This file

Standards Reference

  • 3GPP TS 26.512 — 5G Media Streaming (5GMS); Protocols
  • M1 Interface — Provisioning interface between AF and AS
  • 5G-MAG Reference Tools — Open-source 5GMS implementation

Related Projects

License

MIT — see LICENSE for details.

from github.com/aaronmontilla/M1-mcp

Установка 5G MAG M1 Interface Server

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/aaronmontilla/M1-mcp

FAQ

5G MAG M1 Interface Server MCP бесплатный?

Да, 5G MAG M1 Interface Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для 5G MAG M1 Interface Server?

Нет, 5G MAG M1 Interface Server работает без API-ключей и переменных окружения.

5G MAG M1 Interface Server — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить 5G MAG M1 Interface Server в Claude Desktop, Claude Code или Cursor?

Открой 5G MAG M1 Interface Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare 5G MAG M1 Interface Server with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории media