Skip to main content
Glama
pindaroli

mcp-server-subito-scraper

by pindaroli
README.md
# Oli II Hands Searcher MCP Server

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)
[![Model Context Protocol](https://img.shields.io/badge/MCP-Protocol%201.0-orange.svg)](https://modelcontextprotocol.io/)

Monorepo TypeScript basato su **NPM Workspaces** per lo sviluppo, test e deployment di molteplici server **MCP (Model Context Protocol)**.

---

## ๐Ÿ“ Struttura del Repository

```
oli-II-Hands-searcher-mcp-server/
โ”œโ”€โ”€ package.json                 # Configurazione root e script globali (NPM Workspaces)
โ”œโ”€โ”€ tsconfig.base.json           # Configurazione TypeScript condivisa
โ”œโ”€โ”€ mcp_config.json              # Configurazione client MCP con tutti i server registrati
โ”œโ”€โ”€ hardware_rules.json          # Database centrale di regole hardware sincrone
โ”œโ”€โ”€ wiki/                        # ๐Ÿ“š Documentazione & Wiki ufficiale del progetto
โ”‚   โ”œโ”€โ”€ Home.md                  # Portale principale del Wiki
โ”‚   โ”œโ”€โ”€ architettura-monorepo.md # Architettura NPM Workspaces e flusso MCP
โ”‚   โ”œโ”€โ”€ regole-hardware.md       # Matrice ortogonale e regole Zero Assunzioni
โ”‚   โ”œโ”€โ”€ semantic-routing-e-prompting.md # Routing automatico e prompt
โ”‚   โ”œโ”€โ”€ server-scraper.md        # Scraper Vinted, Subito.it, Wallapop
โ”‚   โ”œโ”€โ”€ ai-vision-inspector.md   # Pipeline a 3 fasi e ispezione multimodale
โ”‚   โ””โ”€โ”€ guida-sviluppo-e-testing.md # Build, testing ed estensione
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ README.md                    # Questo file
โ”‚
โ””โ”€โ”€ packages/                    # Directory contenente i singoli server MCP
    โ”œโ”€โ”€ shared-mcp-utils/        # Utility condivise, prompt e regole hardware
    โ”œโ”€โ”€ subito-scraper/          # Server MCP per scraping Subito.it (via Apify)
    โ”œโ”€โ”€ vinted-scraper/          # Server MCP per scraping Vinted (via Apify)
    โ””โ”€โ”€ wallapop-scraper/        # Server MCP per scraping Wallapop (via Apify)
```

---

## ๐Ÿ“š Documentazione & Wiki Ufficiale

Per la documentazione completa e approfondita, consulta il [**Wiki del Progetto**](./wiki/Home.md).

---

## ๐Ÿ“ฆ Server MCP Disponibili

| Server | Directory | Descrizione |
| :--- | :--- | :--- |
| **`mcp-server-subito-scraper`** | [`packages/subito-scraper`](./packages/subito-scraper) | Ricerca e scraping di annunci su Subito.it tramite Apify Actor. |
| **`mcp-server-vinted-scraper`** | [`packages/vinted-scraper`](./packages/vinted-scraper) | Ricerca e scraping di annunci su Vinted (Italia ed Europa) tramite Apify Actor. |
| **`mcp-server-wallapop-scraper`** | [`packages/wallapop-scraper`](./packages/wallapop-scraper) | Ricerca e scraping di annunci su Wallapop (Italia e Spagna) tramite Apify Actor. |
| **`shared-mcp-utils`** | [`packages/shared-mcp-utils`](./packages/shared-mcp-utils) | Prompting specializzato, AI Inspector e moduli di regole per la validazione hardware. |

---

## ๐Ÿš€ Guida Rapida

### 1. Installazione Dipendenze
Installa le dipendenze per tutti i workspace con un unico comando:
```bash
npm install
```

### 2. Compilazione
Compila tutti i server MCP nel monorepo:
```bash
npm run build
```

Per compilare solo un server specifico:
```bash
npm run build:subito
# oppure:
npm run build -w mcp-server-subito-scraper
```

### 3. Test
Esegui i test su tutti i server:
```bash
npm test
```

Esegui i test per un server specifico:
```bash
npm run test:subito
# Test di integrazione MCP con connessione Stdio:
npm run test:mcp -w mcp-server-subito-scraper
```

---

## โž• Come Aggiungere un Nuovo Server MCP

Aggiungere un nuovo server MCP al monorepo รจ semplicissimo:

1. **Crea la cartella del nuovo server**:
   ```bash
   mkdir -p packages/mio-nuovo-server/src packages/mio-nuovo-server/test
   ```

2. **Crea il `package.json`** in `packages/mio-nuovo-server/package.json`:
   ```json
   {
     "name": "mcp-server-mio-nuovo-server",
     "version": "1.0.0",
     "type": "module",
     "main": "dist/index.js",
     "types": "dist/index.d.ts",
     "bin": {
       "mcp-server-mio-nuovo-server": "./dist/index.js"
     },
     "scripts": {
       "build": "tsc && chmod +x dist/index.js",
       "watch": "tsc --watch",
       "test": "tsx test/index.test.ts",
       "dev": "tsx src/index.ts",
       "start": "node dist/index.js"
     },
     "dependencies": {
       "@modelcontextprotocol/sdk": "^1.12.0",
       "dotenv": "^16.4.7",
       "zod": "^3.24.2"
     }
   }
   ```

3. **Crea il `tsconfig.json`** in `packages/mio-nuovo-server/tsconfig.json`:
   ```json
   {
     "extends": "../../tsconfig.base.json",
     "compilerOptions": {
       "outDir": "./dist",
       "rootDir": "./src"
     },
     "include": ["src/**/*"],
     "exclude": ["node_modules", "dist"]
   }
   ```

4. **Installa e Compila**:
   ```bash
   npm install
   npm run build
   ```

5. **Aggiungi la configurazione in `mcp_config.json`**.

---

## ๐Ÿ› ๏ธ Configurazione Client MCP (Claude Desktop / Antigravity / Cursor)

Usa la configurazione aggregata `mcp_config.json` per registrare i server nei tuoi client:

```json
{
  "mcpServers": {
    "subito-scraper": {
      "command": "node",
      "args": [
        "/Users/olindo/prj/oli-II-Hands-searcher-mcp-server/packages/subito-scraper/dist/index.js"
      ],
      "env": {
        "APIFY_TOKEN": "il_tuo_token_apify",
        "HARDWARE_RULES_DIR": "/Users/olindo/prj/oli-II-Hands-searcher-mcp-server/packages/shared-mcp-utils/dist/rules"
      }
    },
    "vinted-scraper": {
      "command": "node",
      "args": [
        "/Users/olindo/prj/oli-II-Hands-searcher-mcp-server/packages/vinted-scraper/dist/index.js"
      ],
      "env": {
        "APIFY_TOKEN": "il_tuo_token_apify",
        "HARDWARE_RULES_DIR": "/Users/olindo/prj/oli-II-Hands-searcher-mcp-server/packages/shared-mcp-utils/dist/rules"
      }
    }
  }
}
```

---

## ๐Ÿ“„ Licenza

MIT ยฉ Olindo

TDQS

B3.3/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct aspect: scraping by URL vs. by search parameters, checking account status, and retrieving dataset items. There is slight potential confusion between subito_scrape_by_url and subito_search, but their descriptions clarify the difference (URL vs. keyword-based).

Naming Consistency4/5

Tool names use a consistent verb_noun pattern with a domain prefix (subito_). Names are descriptive and follow a predictable structure, though subito_search could optionally be subito_search_by_keywords for perfect parallelism with subito_scrape_by_url.

Tool Count5/5

Four tools are appropriate for a focused scraping server: two scraping methods, one status check, and one data retrieval tool. Each tool has a clear purpose and no unnecessary bloat.

Completeness3/5

The tool surface covers scraping, search, status checking, and data retrieval, but lacks ability to list or manage datasets (e.g., delete old datasets). An agent scraping multiple times may accumulate datasets without cleanup, which is a notable gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues