Content
# 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
1. Clone this repository
```bash
git clone https://github.com/yourusername/1nce-mcp-server.git
cd 1nce-mcp-server
```
2. Install required dependencies
```bash
pip install fastmcp httpx
```
3. Set environment variables with your 1NCE API credentials
```bash
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:
```bash
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:
```bash
python 1nce_mcp.py
```
### Using with a Client
You can interact with the server programmatically using the FastMCP client:
```python
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 pagination
- `get_order_by_number(order_number)` - Get details of a specific order
- `create_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 options
- `get_sim_details(iccid)` - Get detailed information about a specific SIM
- `get_sim_status(iccid)` - Check the connectivity status of a SIM
- `get_sim_data_quota(iccid)` - Check remaining data quota for a SIM
- `get_sim_sms_quota(iccid)` - Check remaining SMS quota for a SIM
- `update_sim_status(iccid, status, label, imei_lock)` - Update SIM configuration
- `get_sim_usage(iccid, start_date, end_date)` - Get usage statistics for a time period
- `get_sim_events(iccid, page, page_size, sort)` - Get event history for a SIM
- `reset_sim_connectivity(iccid)` - Trigger a connectivity reset for a SIM
## Examples
### Checking SIM Status
```python
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
```python
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.
## Acknowledgements
- [1NCE](https://1nce.com/) for providing the IoT connectivity API
- [FastMCP](https://gofastmcp.com/) for the MCP server framework
- [Anthropic](https://www.anthropic.com/) for Claude AI assistant capabilities
You Might Also Like

n8n
n8n is a secure workflow automation platform for technical teams with 400+...

Dify
Dify is a platform for AI workflows, enabling file uploads and self-hosting.
semantic-kernel
Build and deploy intelligent AI agents with the Semantic Kernel framework.
mcp-bench
MCP-Bench evaluates LLMs in real-world tool-use tasks via MCP servers.
debugg-ai-mcp
AI-powered MCP Server for testing, debugging, and code analysis.
aws-lambda-mcp-cookbook
AWS Lambda MCP Cookbook provides Python examples for MCP server integration.