Skip to main content
Glama
marcserrat

SoftwareOne Marketplace MCP Server

by marcserrat

SoftwareOne Marketplace MCP Server

Python 3.12+ MCP Protocol RQL Compliant

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.sh

See docs/QUICKSTART.md for detailed instructions.


โœจ Features

๐ŸŽฏ Streamlined Tool Interface

  • Single marketplace_query tool instead of 200+ individual tools

  • Supports all 263 GET endpoints from the SoftwareOne API

  • Simple resource-based access: catalog.products, commerce.orders, etc.

๐Ÿ“Š Full RQL Support

โšก 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)

  • See docs/guides/SSE_DEPLOYMENT.md

๐Ÿš€ 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)

  • See docs/guides/MULTITENANT_GUIDE.md


๐Ÿ“Š 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

Guides

Reference


๐Ÿงช 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.json

See 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:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests

  5. Submit a pull request


๐Ÿ“„ License

[Add your license here]



๐Ÿ“ž Support

For issues or questions:

  1. Check the Troubleshooting Guide

  2. Review Documentation

  3. Open an issue on GitHub


Made with โค๏ธ for SoftwareOne

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcserrat/mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server