NCM MCP Servers Suite

NCM MCP Servers Suite

Enables managing Ericsson Enterprise Wireless networks via three domain-specific MCP servers for fleet management, monitoring, and cloud services.

Category
Visit Server

README

NCM MCP Servers

NCM MCP Servers

A suite of three focused MCP (Model Context Protocol) servers for the Ericsson Enterprise Wireless NCM API, split by domain responsibility for optimal LLM tool selection.

Architecture

Server Port Domain Tools
ncm-fleet 3001 Routers, groups, accounts, locations, configurations, firmware, products 17
ncm-monitoring 3002 Net devices, alerts/logs, speed tests 6
ncm-cloud-services 3003 Users, subscriptions, private cellular, exchange 13

All servers default to Streamable HTTP transport and run together in a single container.

Quick Start

1. Install

cd ncm_mcp_servers
pip install -e .

2. Configure Credentials

Copy the example and fill in your values:

cp credentials.example.json credentials.json
{
    "X_CP_API_ID": "your-cp-api-id",
    "X_CP_API_KEY": "your-cp-api-key",
    "X_ECM_API_ID": "your-ecm-api-id",
    "X_ECM_API_KEY": "your-ecm-api-key",
    "NCM_API_TOKEN": "your-v3-bearer-token"
}

Alternatively, set environment variables with the same names.

3. Run (Docker — recommended)

docker compose up --build

Or build and run manually:

docker build -t ncm-mcp-servers .
docker run -p 3001:3001 -p 3002:3002 -p 3003:3003 \
  -v ./credentials.json:/app/credentials.json:ro \
  ncm-mcp-servers

This starts a single container running all 3 servers:

  • http://localhost:3001/mcp — ncm-fleet
  • http://localhost:3002/mcp — ncm-monitoring
  • http://localhost:3003/mcp — ncm-cloud-services

4. Run (Local, without Docker)

# Run all 3 servers in a single process (recommended for local dev)
ncm-mcp-servers

# Or via python module
python -m ncm_mcp_servers

Run servers individually if you only need a subset:

ncm-fleet            # port 3001
ncm-monitoring       # port 3002
ncm-cloud-services   # port 3003

Override ports via environment variables:

NCM_FLEET_PORT=4001 ncm-fleet
NCM_MONITORING_PORT=4002 ncm-monitoring
NCM_CLOUD_SERVICES_PORT=4003 ncm-cloud-services

5. Transport Options

The default transport is Streamable HTTP. Supported transports:

Transport Value Use case
Streamable HTTP streamable-http (default) Recommended for all MCP clients
SSE sse Legacy MCP clients using Server-Sent Events
Stdio stdio Piped MCP clients (single server only)
# Use SSE transport (legacy)
MCP_TRANSPORT=sse ncm-mcp-servers

# Use stdio (only works with individual servers, not the unified runner)
MCP_TRANSPORT=stdio ncm-fleet

MCP Client Configuration

Add to your MCP settings (e.g. .kiro/settings/mcp.json):

{
  "mcpServers": {
    "ncm-fleet": {
      "url": "http://localhost:3001/mcp"
    },
    "ncm-monitoring": {
      "url": "http://localhost:3002/mcp"
    },
    "ncm-cloud-services": {
      "url": "http://localhost:3003/mcp"
    }
  }
}

Tool Consolidation Strategy

CRUD operations are consolidated into manage_* tools with an action parameter:

manage_router(action="rename", router_id=123, new_name="foo")
manage_router(action="delete", router_id=123)
manage_router(action="update", router_id=123, description="bar")

Read-only metrics are consolidated by type:

get_net_device_metrics(metric_type="signal", net_device=1)
get_net_device_metrics(metric_type="usage", net_device=1)
get_net_device_metrics(metric_type="wan", net_device=1)
get_net_device_metrics(metric_type="modem", net_device=1)

Project Structure

ncm_mcp_servers/
├── pyproject.toml
├── Dockerfile
├── docker-compose.yml
├── entrypoint.sh
├── credentials.example.json
├── credentials.json          # Your credentials (gitignored)
├── ncm_mcp_servers/
│   ├── shared/               # Common utilities
│   │   ├── ncm.py            # NCM API client library
│   │   ├── credentials.py    # Credential loading
│   │   ├── error_handler.py  # Response/error formatting
│   │   └── client.py         # NCM client factory
│   ├── ncm_fleet/            # Fleet management server (port 3001)
│   │   ├── server.py
│   │   └── tools/
│   │       ├── routers.py
│   │       ├── groups.py
│   │       ├── accounts.py
│   │       ├── locations.py
│   │       ├── configurations.py
│   │       └── firmware.py
│   ├── ncm_monitoring/       # Monitoring server (port 3002)
│   │   ├── server.py
│   │   └── tools/
│   │       ├── net_devices.py
│   │       ├── alerts.py
│   │       └── speed_tests.py
│   └── ncm_cloud_services/   # Cloud services server (port 3003)
│       ├── server.py
│       └── tools/
│           ├── users.py
│           ├── subscriptions.py
│           ├── private_cellular.py
│           └── exchange.py
└── README.md

Tool Reference

ncm-fleet (17 tools)

Tool Description
get_routers Query routers by ID, name, account, or group
manage_router Rename, delete, update fields, assign to group/account, remove from group
reboot_router Reboot a single router
reboot_group Reboot all routers in a group
get_groups Query groups by ID, name, or account
manage_group Create, rename, delete, update groups
get_accounts Query accounts by ID or name
manage_subaccount Create, rename, delete subaccounts
get_locations Query current or historical locations
manage_location Create or delete router locations
get_configuration_managers Query config sync status
patch_config Partial config update (router or group)
put_router_config Full config replacement
copy_router_config Copy config between routers
resume_updates Resume suspended config sync
get_firmware Query firmware versions by product
get_products Query product catalog

ncm-monitoring (6 tools)

Tool Description
get_net_devices Query net devices by router, mode, connection state
get_net_device_health Get cellular health scores
get_net_device_metrics Signal, usage, WAN, or modem metrics
get_logs Alerts, recent alerts, router logs, or activity logs
create_speed_test Run speed test on devices or all modems on a router
get_speed_test Get speed test status and results

ncm-cloud-services (13 tools)

Tool Description
get_users Query NCM users
manage_user Create, update, delete users, change role
get_subscriptions Query subscriptions
manage_subscription Regrade or unlicense devices
get_networks Query private cellular networks
manage_network Create, update, delete networks
get_radios Query radios and operational status
manage_radio Update radio settings
manage_sim Query or update SIMs
get_exchange_sites Query exchange sites
manage_exchange_site Create, update, delete sites
get_exchange_resources Query exchange resources
manage_exchange_resource Create, update, delete resources

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured