# MasterKala (pypi · masterkala-mcp)

Unofficial read-only MasterKala: search gadgets, compare prices and specs, stock, delivery, deals.

- Trust score: 66/100 (medium)
- Change this week: −5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-22

## Components

- pypi · `masterkala-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/sepehr071-masterkala-mcp/masterkala-mcp.md), [page](https://verifymcp.io/servers/sepehr071-masterkala-mcp/masterkala-mcp)

## Channel facts

- Registry: `pypi`
- Package: `masterkala-mcp`
- Version: `0.4.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-22.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 35 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to sepehr071/masterkala-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2461 tokens (~175/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability check failed: the tool surface changed between 0.1.0 and 0.4.1: 0 tool removals, 14 breaking changes, 0 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the MasterKala MCP server?

MasterKala runs locally as a PyPI package, launched with uvx masterkala-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add sepehr071-masterkala-mcp -- uvx masterkala-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "sepehr071-masterkala-mcp": {
      "command": "uvx",
      "args": [
        "masterkala-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sepehr071-masterkala-mcp": {
      "command": "uvx",
      "args": [
        "masterkala-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sepehr071-masterkala-mcp -- uvx masterkala-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sepehr071-masterkala-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "masterkala-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sepehr071-masterkala-mcp --command uvx --arg masterkala-mcp
```

### Hermes

```yaml
mcp_servers:
  sepehr071-masterkala-mcp:
    command: "uvx"
    args: ["masterkala-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "sepehr071-masterkala-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "masterkala-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sepehr071-masterkala-mcp -t stdio -c uvx -a masterkala-mcp
```

### Other

```json
{
  "mcpServers": {
    "sepehr071-masterkala-mcp": {
      "command": "uvx",
      "args": [
        "masterkala-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-22 (score 66, 0)

- [security improvement] Malware scan: unverified → pass
- [functional] Package version: 0.4.0 → 0.4.1

### 2026-10-20 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7.

### 2026-10-19 (score 65, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-18 (score 80, +15)

- [security regression] Stability: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] Malware scan: unverified → pass
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 0.3.0 → 0.4.0
- [functional] Package version: 0.2.2 → 0.3.0

### 2026-10-17 (score 65, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-16 (score 80, +9)

- [security regression] Stability: 0.40 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.40 → fail
- [security improvement] Malware scan: unverified → pass
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 0.2.2 → 0.3.0

### 2026-10-15 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 70, +21)

- [security regression] Malware scan: pass → unverified
- [security improvement] Injection markers: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.37
- [functional improvement] MCP protocol: unverified → pass

## MCP tools (14)

### `mk_blog_posts` (~130 tokens)

Blog posts and buying guides

List MasterKala blog posts (buying guides, comparisons, how-tos), newest first, with links.

Use when the user asks which product type to choose or how to use a gadget: point them to
the matching guide. Readers' questions answered by the store: mk_blog_comments.

Input parameters:

- `category` (string): Blog section, e.g. 'buying_guide' (راهنمای خرید) or 'comparison_review' (مقایسه و بررسی).
- `limit` (integer): Posts per page.
- `page` (integer): Page number, from 0, newest first.

### `mk_blog_comments` (~108 tokens)

Blog post comments

Read the comments of a blog post as threads, with the store writer's answers as replies.

Useful as a support FAQ: many posts hold readers' product questions answered by MasterKala.

Input parameters:

- `full_text` (boolean): Return comment text uncut and all replies (default: 400 chars, 3 replies).
- `limit` (integer): Max comment threads to return, newest first.
- `post_id` (integer, required): Blog post id from mk_blog_posts, e.g. 330.

### `mk_search` (~171 tokens)

Search products

Search MasterKala products by keyword: price, discount and stock of each match.

Use first for "price of X" / "do you have X". In-stock items come first. Also returns
matching categories (ids for mk_browse) and brand/tag pages. Cheapest: mk_find_cheapest.
One product: mk_product.

Input parameters:

- `in_stock_only` (boolean): Drop items that cannot be bought online now. In-stock items come first, so an empty page means no more in-stock matches (total still counts all matches).
- `limit` (integer): Products per page.
- `page` (integer): Page number, from 0.
- `query` (string, required): Product name or keyword, Persian or English, e.g. 'هندزفری بلوتوث' or 'xiaomi'.

### `mk_find_cheapest` (~221 tokens)

Find cheapest product

Find the cheapest in-stock products for a keyword, one flat list sorted by payable price.

Use when the user wants the lowest price for X: scans the results, keeps items buyable online
now, sorts by final_price. free_shipping = basket reaches 5,000,000 Toman (bulky items never);
exact fee and date: mk_shipping. complete=false: in-stock items go past `scanned`, raise scan.

Input parameters:

- `include_accessories` (boolean): Also keep cases, covers, screen protectors and straps made for the product (dropped by default unless the query names them).
- `limit` (integer): Max offers to return.
- `match_all_words` (boolean): Keep only titles that contain every word of the query.
- `query` (string, required): Product name or keyword, Persian or English, e.g. 'هندزفری بلوتوث' or 'xiaomi'.
- `scan` (integer): Max search results to scan, 500 per request; stops early once the in-stock items end.

### `mk_browse` (~296 tokens)

Browse a category or brand

List the products of a category, brand or tag with sorting, price range and filters.

Use for "cheapest Bluetooth earbuds", "Xiaomi power banks between 1 and 2 million Toman".
Pass exactly one of category_id / brand / tag_id (ids: mk_categories, mk_brands, mk_search;
filter ids: mk_filters). No keyword or rating sort here: see mk_search / mk_reviews.

Input parameters:

- `brand`: Brand slug from mk_brands, e.g. 'mcdodo' or 'anker-fa'.
- `category_id`: Category id from mk_categories or mk_search, e.g. 606 (Bluetooth earbuds).
- `filter_ids`: Filter ids from mk_filters: 'm30' brand, 'o78' color, '117' attribute. Example: ['m30', 'o52'].
- `limit` (integer): Products per page.
- `max_price`: Maximum payable price (final_price) in Toman, e.g. 5000000.
- `min_price`: Minimum payable price (final_price) in Toman, e.g. 3000000.
- `page` (integer): Page number, from 0.
- `sort` (string): Order of the listing. In-stock items always come first.
- `tag_id`: Tag id from a /tag/<id>/ link in mk_search pages, e.g. 22246.

### `mk_filters` (~204 tokens)

Filters of a category or brand

List the filters of a category, brand or tag page (brands, colors, attributes) with their ids, and its price range.

Use before mk_browse for a brand, color or feature filter: options map filter id -> name; pass
the ids as filter_ids. Non-brand groups are cut to 40 options (`omitted` = the rest): pass
\`group` for all. max_price = most expensive item (Toman).

Input parameters:

- `brand`: Brand slug from mk_brands, e.g. 'mcdodo' or 'anker-fa'.
- `category_id`: Category id from mk_categories or mk_search, e.g. 606 (Bluetooth earbuds).
- `group`: Return only this filter group, in full, e.g. 'رنگ' (color) or 'برند' (brand).
- `tag_id`: Tag id from a /tag/<id>/ link in mk_search pages, e.g. 22246.

### `mk_categories` (~75 tokens)

List categories

List MasterKala's product categories with their ids (about 100 main categories).

Use to get a category_id for mk_browse / mk_filters. mk_search also returns the
categories matching a keyword.

Input parameters:

- `query`: Optional filter on the Persian name or English slug, e.g. 'شارژر' or 'charger'.

### `mk_brands` (~71 tokens)

List brands

List the brands MasterKala sells with their slugs (about 135).

Use to get the brand slug for mk_browse / mk_filters ('anker-fa', 'mcdodo').

Input parameters:

- `query`: Optional filter on the brand name, English only, e.g. 'xiaomi' or 'anker'.

### `mk_deals` (~78 tokens)

Current deals

List every product on MasterKala's discount page right now, biggest discount first.

Use for "what's on sale" / "best discounts today". ends_in_seconds is the time left in the
current offer period. Discounts inside one keyword or category: mk_search / mk_browse.

Input parameters:

- `limit` (integer): Max deals to return.

### `mk_product` (~130 tokens)

Product details

Get one product's full record: price and discount (Toman), stock status and count, colors and
which are buyable, brand, category path, rating, and the physical branches that have it.

Use after mk_search / mk_browse when the user picks a product. Specs table: mk_specs.
Reviews: mk_reviews. Delivery date and fee: mk_shipping.

Input parameters:

- `full_text` (boolean): Return the description uncut (default cuts at 300 chars).
- `product_id` (integer, required): MasterKala product id from mk_search / mk_browse, e.g. 24855.

### `mk_specs` (~107 tokens)

Specs and comparison

Get the specification table of 1-4 products side by side, with each product's stock count.

Use for "battery life / Bluetooth version of X" or to compare products row by row. Each
spec row has one value per product id; a missing id means no value for that product. Ids that do not exist are listed in not_found.

Input parameters:

- `product_ids` (array, required): 1 to 4 product ids, e.g. [27144, 20850].

### `mk_reviews` (~144 tokens)

Product reviews

Read customer reviews of a product (1-5 stars, newest first) with the store's replies and the star breakdown.

Use as a quality check before recommending a product. average and star_counts cover all
reviews; count is the number matching `stars`.

Input parameters:

- `full_text` (boolean): Return review and reply text uncut (default cuts at 400 chars).
- `limit` (integer): Max reviews to return, newest first.
- `product_id` (integer, required): MasterKala product id from mk_search / mk_browse, e.g. 24855.
- `stars` (integer): Only reviews with this many stars (1-5); 0 = all.

### `mk_shipping` (~113 tokens)

Delivery date and fee

Get the nearest delivery slot and shipping fee for one product: Tehran courier and post to other cities.

Use for "when will it arrive / how much is shipping". Fees are Toman, 0 = free; free above
free_shipping_from (null = never free). same_day_seconds_left > 0: can still arrive today in
Tehran. Estimates use a default Tehran address.

Input parameters:

- `product_id` (integer, required): MasterKala product id from mk_search / mk_browse, e.g. 24855.

### `mk_branches` (~64 tokens)

Physical branches

List MasterKala's physical shops in Tehran with address, phone and map location.

Use when the user wants to buy in person. mk_product's `branches` says which shops have a
given product; call the shop before going, they stock only part of the catalog.

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/sepehr071-masterkala-mcp/masterkala-mcp#diagnostics

## Score history

- 2026-10-22: 66
- 2026-10-21: 66
- 2026-10-20: 66
- 2026-10-19: 65
- 2026-10-18: 80
- 2026-10-17: 65
- 2026-10-16: 80
- 2026-10-15: 71
- 2026-10-14: 70
- 2026-10-13: 49
- 2026-10-12: 49
- 2026-10-04: 65
- 2026-10-03: 65

## Common questions

### What is the MasterKala MCP server?

MasterKala is an MCP server listed in the public MCP registry as io.github.sepehr071/masterkala-mcp. Unofficial read-only MasterKala: search gadgets, compare prices and specs, stock, delivery, deals. This page covers its PyPI package (masterkala-mcp).

### Is the MasterKala MCP server safe to use?

MasterKala scores 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 22 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the MasterKala MCP server expose?

MasterKala exposes 14 tools: mk_blog_posts, mk_blog_comments, mk_search, mk_find_cheapest, mk_browse, and 9 more. Their descriptions and schemas cost roughly 1,912 tokens of context every time the server is loaded.

### Is the MasterKala MCP server still maintained?

MasterKala is still listed as active in the MCP registry. We last reached this channel on 22 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the MasterKala MCP server under?

MasterKala declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/masterkala-mcp/
- Socket report: https://socket.dev/pypi/package/masterkala-mcp
- Repository: https://github.com/sepehr071/masterkala-mcp
- Changelog RSS feed: https://verifymcp.io/servers/sepehr071-masterkala-mcp/masterkala-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/sepehr071-masterkala-mcp/masterkala-mcp.json
- HTML version of this page: https://verifymcp.io/servers/sepehr071-masterkala-mcp/masterkala-mcp
