1nce-mcp-server
If you are the rightful owner of 1nce-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that enables AI agents to interact with the 1NCE IoT connectivity management platform through natural language.
1NCE IoT Platform MCP Server
A Model Context Protocol (MCP) server that enables AI agents to interact with the 1NCE IoT connectivity management platform through natural language.
Overview
This project provides a middleware layer that connects Large Language Models (LLMs) to the 1NCE API for managing IoT connectivity. It allows AI assistants to:
- Retrieve product information
- Manage orders
- Monitor SIM card status
- Check data and SMS quotas
- Update SIM configurations
- View connectivity information
By exposing these capabilities through the Model Context Protocol, AI agents can interact with IoT infrastructure using natural language, simplifying the management of connected devices.
Features
- Authentication: Secure OAuth 2.0 token-based authentication with 1NCE API
- Product Management: Query available IoT connectivity products
- Order Management: Create and track orders
- SIM Management: Monitor and configure SIM cards
- Resources: Direct access to SIM status and product data
- Prompts: Pre-defined interaction templates for common tasks
Prerequisites
- Python 3.8+
- FastMCP v2
- 1NCE account with API credentials
Installation
- Clone this repository
git clone https://github.com/yourusername/1nce-mcp-server.git
cd 1nce-mcp-server
- Install required dependencies
pip install fastmcp httpx
- Set environment variables with your 1NCE API credentials
export ONCE_CLIENT_ID="your_client_id"
export ONCE_CLIENT_SECRET="your_client_secret"
Usage
Installing with FastMCP
The recommended way to use this MCP server is to install it using the FastMCP CLI:
fastmcp install 1nce_mcp.py
This will make the server available to compatible MCP clients, including Claude Desktop.
Running Directly
For development or testing, you can run the server directly:
python 1nce_mcp.py
Using with a Client
You can interact with the server programmatically using the FastMCP client:
from fastmcp import Client
async with Client("1nce_mcp.py") as client:
# Get list of products
products = await client.call_tool("get_all_products")
print(products)
# Check SIM status
sim_status = await client.call_tool("get_sim_status", {"iccid": "your_sim_iccid"})
print(sim_status)
Available Tools
Product Tools
get_all_products()
- Retrieve all available 1NCE products
Order Tools
get_all_orders(page, page_size, sort)
- Get list of orders with paginationget_order_by_number(order_number)
- Get details of a specific ordercreate_order(products, delivery_address, customer_reference)
- Create a new order
SIM Tools
get_all_sims(page, page_size, query, sort)
- List SIM cards with filtering optionsget_sim_details(iccid)
- Get detailed information about a specific SIMget_sim_status(iccid)
- Check the connectivity status of a SIMget_sim_data_quota(iccid)
- Check remaining data quota for a SIMget_sim_sms_quota(iccid)
- Check remaining SMS quota for a SIMupdate_sim_status(iccid, status, label, imei_lock)
- Update SIM configurationget_sim_usage(iccid, start_date, end_date)
- Get usage statistics for a time periodget_sim_events(iccid, page, page_size, sort)
- Get event history for a SIMreset_sim_connectivity(iccid)
- Trigger a connectivity reset for a SIM
Examples
Checking SIM Status
from fastmcp import Client
async with Client("1nce_mcp.py") as client:
# Check SIM status
sim_status = await client.call_tool("get_sim_status", {
"iccid": "8988303000123456789"
})
print(f"SIM Status: {sim_status.get('status')}")
# Check data quota
quota = await client.call_tool("get_sim_data_quota", {
"iccid": "8988303000123456789"
})
print(f"Remaining data: {quota.get('volume')} MB")
print(f"Expires on: {quota.get('expiry_date')}")
Creating an Order
from fastmcp import Client
async with Client("1nce_mcp.py") as client:
# Create an order for 5 SIM cards
order = await client.call_tool("create_order", {
"products": [{"productId": 1001, "quantity": 5}],
"customer_reference": "IoT-Project-XYZ"
})
print(f"Order created with number: {order.get('order_number')}")
Security
- The MCP server requires 1NCE API credentials to be set as environment variables
- Authentication is performed using OAuth 2.0 with Basic Authentication
- Access tokens are obtained dynamically and not stored persistently
- The server only exposes necessary API operations, prioritizing read operations over write operations
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.