Stream

Stream

Stream MCP server https://streampay.sa/

Category
Visit Server

README

Stream MCP Server

An MCP server for the Stream (streampay.sa) payment platform, built with FastMCP.

Exposes 27 tools across six resource domains — payment links, customers, products, coupons, invoices, and payments — plus a read-only OpenAPI documentation resource.


Quick Start

1. Install

# Clone & install in editable mode
git clone <repo-url> stream-mcp-server && cd stream-mcp-server
pip install -e ".[dev]"

2. Configure

cp .env.example .env
# Edit .env and set your Stream API key:
#   STREAM_API_KEY=sk_live_…
Variable Default Description
STREAM_API_KEY (required) Your Stream API key
STREAM_BASE_URL https://stream-app-service.streampay.sa API base URL
STREAM_TIMEOUT 30 Request timeout (seconds)
STREAM_MAX_RETRIES 2 Retry count for 429 / 5xx

3. Run

# stdio transport (default — for Claude Desktop / Cline)
stream-mcp

# SSE transport (for web-based agents)
stream-mcp --transport sse --port 8000

Claude Desktop Integration

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "stream": {
      "command": "stream-mcp",
      "env": {
        "STREAM_API_KEY": "your_key_here"
      }
    }
  }
}

Available Tools

Payment Links

Tool Description
create_payment_link Create a new checkout / payment link
list_payment_links Paginated list with optional status filter
get_payment_link Get a single payment link by ID
deactivate_payment_link Deactivate / archive a payment link

Customers

Tool Description
create_customer Create a customer with name, email, phone, metadata
list_customers Paginated list of customers
get_customer Get a single customer by ID
update_customer Update customer fields
delete_customer Soft-delete a customer

Products

Tool Description
create_product Create a one-time or recurring product
list_products List products with optional type filter
get_product Get a single product by ID
update_product Update product name, description, or price
archive_product Archive a product

Coupons

Tool Description
create_coupon Create a fixed or percentage discount coupon
list_coupons List coupons with optional status filter
get_coupon Get a single coupon by ID
deactivate_coupon Deactivate a coupon

Invoices

Tool Description
create_invoice Create a ZATCA-compliant invoice
list_invoices List invoices with filters
get_invoice Get a single invoice by ID
send_invoice (Re)send an invoice via email / SMS
void_invoice Void / cancel an unpaid invoice

Payments

Tool Description
list_payments List payments with filters
get_payment Get payment details
refund_payment Issue a full or partial refund

Resources

Resource URI Description
stream://docs/openapi Full Stream OpenAPI spec (cached, auto-refreshed)

Remote Deployment (Hosted URL)

You can deploy the MCP server as a hosted URL so users connect to it remotely (like https://mcp.linear.app/sse) — no local installation needed.

Each user passes their own Stream API key as a Bearer token.

1. Run locally (remote mode)

# No STREAM_API_KEY needed — each user provides their own
stream-mcp-remote
# → Listening on http://0.0.0.0:8000

# Custom host/port
HOST=0.0.0.0 PORT=3000 stream-mcp-remote

2. Deploy with Docker

docker build -t stream-mcp .
docker run -p 8000:8000 stream-mcp

3. Deploy to a cloud platform

Railway:

railway up

Fly.io:

fly launch
fly deploy

Render: Connect your GitHub repo and set the Docker build path.

Your server will be available at something like:

https://stream-mcp.up.railway.app/mcp

4. How users connect (remote)

Users add this to their MCP client config:

Claude Desktop / VS Code:

{
  "mcpServers": {
    "stream": {
      "url": "https://your-domain.com/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_YOUR_STREAM_API_KEY"
      }
    }
  }
}

Each user passes their own Stream API key as the Bearer token. The server never stores keys — they are used only for the duration of the session.


Project Structure

src/stream_mcp/
├── server.py          # FastMCP app entry-point (local + remote modes)
├── config.py          # Settings from env vars
├── client.py          # Async HTTP client (auth, retries, errors)
├── auth.py            # Bearer token middleware (remote mode)
├── helpers.py         # get_client() — resolves per-request StreamClient
├── models/            # Pydantic v2 request/response models
│   ├── payment_links.py
│   ├── customers.py
│   ├── products.py
│   ├── coupons.py
│   ├── invoices.py
│   └── payments.py
└── tools/             # FastMCP tool definitions
    ├── __init__.py    # Registers all tools
    ├── payment_links.py
    ├── customers.py
    ├── products.py
    ├── coupons.py
    ├── invoices.py
    ├── payments.py
    └── docs.py        # OpenAPI resource

Adding a new resource domain = add one file in models/, one in tools/, and one import line in tools/__init__.py.


Error Handling

All tools catch StreamAPIError and return a structured dict instead of raising:

{
  "error": true,
  "code": 422,
  "message": "Validation failed: …"
}

This ensures the LLM agent always receives a usable response.


Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured