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
访问服务器

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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选