Skip to main content
Glama
hwqlet

MCP Product Search Server

by hwqlet

MCP製品検索サーバー

Model Context Protocol (MCP) に基づいた製品検索サーバーです。Claudeがキーワードに基づいて製品カタログを検索し、構造化データを取得できるようにします。

機能

Claudeが呼び出せる3つのツールを提供します:

ツール

説明

search

キーワードで製品を検索。カテゴリ、価格、評価によるフィルタリングをサポート

list_categories

すべての製品カテゴリと件数を一覧表示

get_product

IDを指定して単一製品の完全な情報を取得

Related MCP server: MCP Merchant Scout

クイックスタート

1. プロジェクトのクローン

git clone <your-repo-url>
cd mcp-product-search

2. 仮想環境の作成と依存関係のインストール

macOS / Linux:

python3 -m venv .venv
source .venv/bin/activate
pip install "mcp[cli]"

Windows:

python -m venv .venv
.venv\Scripts\activate
pip install "mcp[cli]"

Python 3.10以上が必要です。python3 --version で確認してください。

3. ブラウザでのテスト

mcp dev server.py

ブラウザが自動的にMCP Inspectorを開きます。開かない場合は、ターミナルに出力されたアドレス(通常は http://localhost:6274)に手動でアクセスしてください。

接続手順:

  1. 左側の Command を仮想環境内のPythonの絶対パスに変更します:

    • macOS/Linux:/絶対パス/mcp-product-search/.venv/bin/python

    • Windows:C:\絶対パス\mcp-product-search\.venv\Scripts\python.exe

  2. Arguments に server.py を入力します

  3. Connect をクリックし、左下に Connected と表示されれば成功です

  4. 上部の Tools タブをクリックし、ツールを選択してパラメータを入力し、Run Tool をクリックします

MCP Inspector 接続成功の様子

4. Claude Desktopへの接続

設定ファイルを見つけます:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

以下の内容を追加します(実際の絶対パスに置き換えてください):

{
  "mcpServers": {
    "product-search": {
      "command": "/绝对路径/mcp-product-search/.venv/bin/python",
      "args": ["/绝对路径/mcp-product-search/server.py"]
    }
  }
}

現在のディレクトリの絶対パスを確認する方法:

# macOS / Linux
pwd

# Windows
cd

設定ファイルを保存した後、Claude Desktopを完全に終了して再起動してください。

5. Claude Code(コマンドライン)への接続

claude mcp add product-search \
  /绝对路径/mcp-product-search/.venv/bin/python \
  /绝对路径/mcp-product-search/server.py

使用例

Claudeに接続後、以下のように質問できます:

帮我搜索苹果品牌的笔记本电脑
找一款评分 4.8 以上、价格不超过 300 美元的耳机
列出所有产品分类
查询产品 P003 的详细信息

Claudeは自動的にどのツールを呼び出すべきか判断し、返された構造化データに基づいて回答します。

ツールパラメータの説明

パラメータ

型

必須

デフォルト値

説明

keyword

string

はい

—

製品名、説明、ブランド、カテゴリ、タグをマッチング

category

string

いいえ

—

カテゴリでフィルタリング(例: "Laptops", "Headphones")

max_price

float

いいえ

—

最高価格(USD)

min_rating

float

いいえ

—

最低評価(0–5)

limit

int

いいえ

10

結果の最大件数(最大50)

結果は評価の高い順、価格の安い順にソートされます。

戻り値の例:

{
  "keyword": "apple",
  "filters": { "category": "Laptops", "max_price": null, "min_rating": null },
  "total_results": 1,
  "products": [
    {
      "id": "P001",
      "name": "Apple MacBook Pro 14-inch M3",
      "category": "Laptops",
      "brand": "Apple",
      "price": 1999.0,
      "currency": "USD",
      "stock": 42,
      "rating": 4.8,
      "description": "14-inch Liquid Retina XDR display, M3 chip, 18GB RAM, 512GB SSD.",
      "tags": ["laptop", "apple", "macbook", "m3", "professional", "portable"]
    }
  ]
}

list_categories

パラメータなし。すべてのカテゴリ名と対応する製品数を返します。

get_product

パラメータ

型

必須

説明

product_id

string

はい

製品ID(例: "P001"、大文字小文字を区別しない)

プロジェクト構造

mcp-product-search/
├── server.py        # MCP 服务器,定义工具
├── products.py      # 产品目录与搜索逻辑
├── pyproject.toml   # 项目依赖
└── README.md

製品データの拡張

現在の製品カタログは products.py に記述された12件のサンプルデータです。実際のデータに置き換えるには search_products() 関数を修正するだけでよく、server.py を変更する必要はありません。

データソース

修正方法

ローカル JSON/CSV

起動時にファイルを読み込んで CATALOG を埋める

SQLite / PostgreSQL

ループ処理をSQLクエリに置き換える

EC API

関数内でHTTPリクエストを送信する

Elasticsearch

ESの全文検索インターフェースを呼び出す

Available Tools

3 tools
get_productA

Retrieve full details for a single product by its ID (e.g. "P001").

Args: product_id: The product's unique identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist; description implies read-only but fails to disclose any behavioral details beyond 'retrieve'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, front-loading the core purpose and listing the parameter clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple single-parameter input and presence of an output schema, the description is sufficiently complete for the task.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to the product_id parameter with an example and context, compensating for 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves full details for a single product by ID, distinguishing it from siblings like list_categories and search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like search or list_categories is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesA

Return all available product categories and their item counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description only states the basic return value, omitting additional behavioral details such as ordering, limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence with no unnecessary words, perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with no parameters and an output schema present, the description sufficiently covers what the tool returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since there are no parameters, the description does not need to add parameter information. Baseline 4 for 0 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the verb 'Return' and resource 'all available product categories and their item counts', distinguishing it from sibling tools like 'get_product' and 'search'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'search' or 'get_product', leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedget_product
    • First observedlist_categories
    • First observedsearch

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: get_product retrieves by ID, list_categories returns category overview, search does keyword-based filtering. No ambiguity in their roles.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (get_product, list_categories, search) using snake_case, making them predictable.

Tool Count5/5

With 3 tools, the server is well-scoped for a search-focused service. Each tool earns its place without bloat or deficiency.

Completeness4/5

The tool set covers core search and retrieval operations (get by ID, list categories, keyword search). Missing a general 'list all products' operation, but search likely covers this with an empty keyword, though not documented; minor gap.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables users to search for products, retrieve details, and manage their shopping cart on Amazon through the MCP framework. It also supports viewing order history and provides a demonstration of ordering capabilities within AI interfaces.
    21 npm
    54
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that wraps the Universal Commerce Protocol (UCP) Discovery and Catalog capabilities, letting you search and compare products across UCP merchants directly from Claude.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables product comparison and analysis for any MCP-compatible AI assistant, with tools like compare_products and list_products.
    -