Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SoftwareOne Marketplace MCP Servershow me the top 10 Microsoft products by price"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SoftwareOne Marketplace MCP Server
A Model Context Protocol (MCP) server that provides AI assistants with access to the SoftwareOne Marketplace API. Features full RQL (Resource Query Language) support, intelligent caching, and streamlined tool interface.
๐ Quick Start
# 1. Clone and setup
git clone <repository-url>
cd mpt-mcp
# 2. Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Configure environment
cp config/env.example .env
# Edit .env with your API credentials
# 5. Start the server
./scripts/start/start_server.shSee docs/QUICKSTART.md for detailed instructions.
โจ Features
๐ฏ Streamlined Tool Interface
Single
marketplace_querytool instead of 200+ individual toolsSupports all 263 GET endpoints from the SoftwareOne API
Simple resource-based access:
catalog.products,commerce.orders, etc.
๐ Full RQL Support
Complete implementation of Resource Query Language
Filtering:
eq(),ilike(),and(),or(),not(),in(),out()Field selection, sorting, pagination
โก Intelligent Caching
24-hour TTL for OpenAPI spec
Fast startup (uses cached spec when available)
Automatic cache refresh
Offline mode support
๐ Dual Transport Modes
Stdio - Local Cursor integration (single-user) ๐
SSE - Cloud deployment (multi-tenant capable) โ๏ธ๐ฅ
Intelligent credential handling: client or server credentials
Case-insensitive header support (X-MPT-Authorization, X-MPT-Endpoint)
๐ Cloud-Ready (SSE Mode)
Docker support with provided Dockerfile
Docker Compose for easy deployment
Multi-tenant capable - Each client uses their own credentials
Flexible fallback - Server credentials when client doesn't provide
CORS configuration for secure remote access
Cloud platform examples (AWS, GCP, Azure, Heroku)
๐ Current Stats
9,582 products available in marketplace
263 API endpoints supported
5 tools (vs 200+ with old approach)
24-hour cache TTL
๐ Project Structure
mpt-mcp/
โโโ README.md # You are here
โโโ requirements.txt # Python dependencies
โโโ .env # Your configuration (create from config/env.example)
โ
โโโ src/ # ๐ง Source code
โ โโโ server_stdio.py # Stdio MCP server (local)
โ โโโ api_client.py # API client with RQL support
โ โโโ config.py # Configuration management
โ โโโ cache_manager.py # Caching system
โ โโโ openapi_parser.py # OpenAPI spec parser
โ
โโโ scripts/ # ๐ ๏ธ Utility scripts
โ โโโ setup/ # Setup scripts
โ โโโ start/ # Server startup
โ โโโ utils/ # Utilities
โ
โโโ tests/ # ๐งช Tests
โ โโโ test_rql.py # RQL implementation tests
โ โโโ test_mcp_json.py # MCP protocol tests
โ โโโ test_stdio_server.py # Server tests
โ
โโโ docs/ # ๐ Documentation
โ โโโ QUICKSTART.md # Quick start guide
โ โโโ setup/ # Setup guides
โ โโโ guides/ # User guides (RQL, caching, etc.)
โ โโโ reference/ # Technical reference
โ
โโโ config/ # โ๏ธ Configuration examples
โโโ cursor_mcp_config.json # Cursor MCP configuration
โโโ env.example # Environment template๐ง Usage
Query Products
# Get product count
marketplace_query(resource="catalog.products", limit=1)
# Returns: 9,582 products
# Search for Microsoft products
marketplace_query(
resource="catalog.products",
rql="ilike(name,*Microsoft*)",
limit=50
)
# Filter by status
marketplace_query(
resource="catalog.products",
rql="eq(status,Published)",
select="+id,+name,+vendor",
limit=100
)Available Resources
# List all available resources
marketplace_resources()
# Get details about a specific resource
marketplace_resource_info(resource="catalog.products")Cache Management
# Check cache status
marketplace_cache_info()
# Force refresh
marketplace_refresh_cache()๐ Documentation
Getting Started
Quick Start Guide - Get up and running in minutes
Setup Guide - Detailed setup instructions
Cursor Integration - Use with Cursor AI
Guides
RQL Guide - Complete RQL usage guide
RQL Reference - Quick operator reference
RQL Implementation - Implementation details
Caching Guide - How caching works
SSE Deployment - Cloud deployment guide โ๏ธ
Multi-Tenant Guide - Multiple clients with own credentials ๐ฅ
Reference
Architecture - System architecture
Features - Complete feature list
Setup Scripts - Script reference guide
๐งช Testing
# Run all tests
cd /path/to/mpt-mcp
# Test RQL implementation
./venv/bin/python tests/test_rql.py
# Test MCP protocol
./venv/bin/python tests/test_mcp_json.py
# Test server initialization
pytest tests/test_stdio_server.py
# Get current product count
./venv/bin/python scripts/utils/get_product_count.py๐ฏ Use Cases
For AI Assistants (via Cursor)
Ask natural language questions:
"How many products are in the SoftwareOne marketplace?"
"Find all Microsoft Office products"
"Show me active orders from the last week"
"Get invoices for customer X"
For Developers
Query the API programmatically:
from src.api_client import APIClient
from src.config import config
client = APIClient(
base_url=config.marketplace_api_base_url,
token=config.marketplace_api_token
)
# Query with RQL
result = await client.get(
"/public/v1/catalog/products",
params={"rql": "ilike(name,*Microsoft*)", "limit": 50}
)๐ Configuration
Create a .env file in the project root:
# Copy the example
cp config/env.example .env
# Edit with your credentials
MARKETPLACE_API_BASE_URL=https://api.s1.show
MARKETPLACE_API_TOKEN=your_token_here
OPENAPI_SPEC_URL=https://api.s1.show/public/v1/openapi.jsonSee docs/setup/SETUP.md for details.
๐ Troubleshooting
Server won't start
# Verify setup
./scripts/utils/verify_cursor_setup.sh
# Check environment
source venv/bin/activate
python -c "from src.config import config; config.validate()"Cursor can't connect
# View logs
./scripts/utils/view_logs.sh
# Or in Cursor: Cmd+Shift+U โ Select "MCP: softwareone-marketplace"See docs/setup/TROUBLESHOOTING.md for more help.
๐ฆ Requirements
Python 3.12+
httpx - Async HTTP client
fastmcp - MCP server framework
pydantic - Data validation
python-dotenv - Environment management
See requirements.txt for complete list.
๐ค Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Add tests
Submit a pull request
๐ License
[Add your license here]
๐ Links
๐ Support
For issues or questions:
Check the Troubleshooting Guide
Review Documentation
Open an issue on GitHub
Made with โค๏ธ for SoftwareOne
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.