Server MCP
Server Model Context Protocol per Mapfolio - Consente agli assistenti IA di interagire con i dati di Mapfolio
Panoramica
Il Server MCP Mapfolio è un server Model Context Protocol (MCP) che consente agli assistenti IA e ad altri client compatibili MCP di interagire con i dati e le operazioni di Mapfolio. Fornisce accesso programmatico a aziende, progetti, utenti, profili LinkedIn e funzioni amministrative.
Cos'è MCP?
Model Context Protocol (MCP) è un protocollo aperto che consente agli assistenti IA di accedere in modo sicuro a fonti di dati e strumenti esterni. I server MCP espongono capacità tramite un'interfaccia standardizzata, consentendo agli assistenti IA di:
- Interrogare e recuperare dati
- Eseguire operazioni
- Accedere a risorse
- Integrarsi con sistemi esterni
Funzionalità
Il Server MCP Mapfolio fornisce funzionalità complete:
Dati Aziendali
- Cercare aziende con filtri avanzati
- Ottenere dettagli aziendali per ID
- Recuperare aziende per cantone e lettera iniziale
- Ottenere aziende casuali per campionamento
- Accedere alle statistiche di visite aziendali
Gestione Progetti
- Creare e gestire progetti
- Elencare e filtrare progetti utente
- Aggiornare dettagli progetto
- Eliminare progetti
- Aggiungere e rimuovere aziende dai progetti
Profili Utente
- Ottenere informazioni profilo utente
- Aggiornare impostazioni profilo
- Elencare progetti utente
- Gestire chiavi API
Integrazione LinkedIn
- Ottenere dati profilo LinkedIn
- Cercare profili LinkedIn
- Accedere alle informazioni di connessione
- Visualizzare cronologia versioni profilo
- Ottenere dati aziendali LinkedIn
Operazioni Amministrative
- Elencare tutti gli utenti (solo admin)
- Creare nuovi utenti (solo admin)
- Gestire chiavi API (solo admin)
- Accedere alle statistiche dashboard admin
Statistiche
- Ottenere statistiche aziendali aggregate
- Visualizzare conteggi a livello di cantone
- Accedere a conteggi basati su lettere
- Ottenere statistiche combinazioni due lettere
Installazione
Prerequisiti
- Node.js >= 20.0.0
- npm >= 10.0.0
- Accesso all'istanza Supabase Mapfolio
Configurazione
- Installare dipendenze:
cd mcp-server
npm install
- Configurare variabili d'ambiente:
cp .env.example .env
Modificare .env e configurare:
# URL API Mapfolio (predefinito: https://mapfolio.app)
MAPFOLIO_API_URL=https://mapfolio.app
# Tipo trasporto: 'stdio' (predefinito) o 'http' per accesso remoto
MCP_TRANSPORT=stdio
# Porta HTTP (usata solo quando MCP_TRANSPORT=http)
MCP_HTTP_PORT=3001
# Opzionale: Autenticazione predefinita (può essere fornita via contesto MCP o intestazioni HTTP)
MAPFOLIO_API_KEY=mapf_your_api_key_here
MAPFOLIO_JWT_TOKEN=your-jwt-token-here
- Compilare il server:
npm run build
Utilizzo
Eseguire il Server
Sviluppo Locale (trasporto stdio)
Il server MCP utilizza il trasporto stdio per impostazione predefinita (protocollo MCP standard):
npm start
Per sviluppo con ricaricamento automatico:
npm run dev
Trasporto HTTP (per accesso remoto)
Per eseguire il server con trasporto HTTP per test locali:
MCP_TRANSPORT=http MCP_HTTP_PORT=3001 npm start
Questo avvia un server HTTP sulla porta 3001 che accetta richieste JSON-RPC 2.0 tramite HTTP POST.
Deployment Vercel (Accesso Remoto)
Il server MCP è automaticamente disponibile via HTTP quando distribuito su Vercel:
- Endpoint:
https://your-app.vercel.app/api/mcp - Protocollo: JSON-RPC 2.0 tramite HTTP POST
- Autenticazione: Tramite intestazione
X-API-Keyo intestazioneAuthorization: Bearer <token>
Esempio richiesta:
curl -X POST https://your-app.vercel.app/api/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: mapf_your_api_key" \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'
Configurazione Client MCP
Claude Desktop
Deployment locale:
{
"mcpServers": {
"mapfolio": {
"command": "node",
"args": ["/path/to/mapfolio/mcp-server/dist/index.js"],
"env": {
"MAPFOLIO_API_URL": "https://mapfolio.app",
"MAPFOLIO_API_KEY": "mapf_your_api_key_here"
}
}
}
}
Cursor
Configurare tramite impostazioni MCP:
- Comando:
node - Args:
["/path/to/mapfolio/mcp-server/dist/index.js"] - Variabili d'ambiente:
MAPFOLIO_API_URL:https://mapfolio.appMAPFOLIO_API_KEY: La tua chiave API (opzionale)
Autenticazione
Il server supporta due metodi di autenticazione:
Autenticazione Chiave API
Le chiavi API sono prefissate con mapf_ e possono:
- Essere impostate tramite variabile d'ambiente
MAPFOLIO_API_KEY - Essere passate per richiesta tramite parametro
apiKeynelle chiamate strumento
Autenticazione Token JWT
I token JWT Supabase possono:
- Essere impostati tramite variabile d'ambiente
MAPFOLIO_JWT_TOKEN - Essere passati per richiesta tramite parametro
jwtTokennelle chiamate strumento
Priorità Autenticazione
- Trasporto HTTP: Le intestazioni (
X-API-KeyoAuthorization) hanno priorità - Credenziali per richiesta (
apiKeyojwtTokennegli argomenti strumento) - Variabili d'ambiente (
MAPFOLIO_API_KEYoMAPFOLIO_JWT_TOKEN)
Autenticazione Trasporto HTTP
Quando si utilizza l'endpoint HTTP (/api/mcp), l'autenticazione è fornita tramite intestazioni HTTP:
- Chiave API:
X-API-Key: mapf_your_api_key - Token JWT:
Authorization: Bearer your_jwt_token
Strumenti Disponibili
Il server fornisce 30+ strumenti in 6 categorie:
Strumenti Aziende
search_companies- Cercare con filtriget_company- Ottenere azienda per IDget_companies_by_canton_letter- Ottenere per cantone e letteraget_random_companies- Ottenere campioni casualiget_company_visits- Ottenere statistiche visite
Strumenti Progetti
create_project- Creare nuovo progettolist_projects- Elencare progetti utenteget_project- Ottenere dettagli progettoupdate_project- Aggiornare progettodelete_project- Eliminare progettoadd_companies_to_project- Aggiungere azienderemove_companies_from_project- Rimuovere aziende
Strumenti Utente
get_user_profile- Ottenere profiloupdate_user_profile- Aggiornare profiloget_user_projects- Elencare progettiget_user_api_keys- Elencare chiavi API
Strumenti LinkedIn
get_linkedin_profile- Ottenere profilosearch_linkedin_profiles- Cercare profiliget_linkedin_connections- Ottenere connessioniget_linkedin_profile_versions- Ottenere cronologia versioniget_linkedin_companies- Ottenere dati aziendali
Strumenti Admin (Solo Admin)
list_all_users- Elencare tutti gli utenticreate_user- Creare utenteget_user_details- Ottenere dettagli utentelist_api_keys- Elencare tutte le chiavi APIcreate_api_key- Creare chiave APIrevoke_api_key- Revocare chiave APIget_admin_stats- Ottenere statistiche admin
Strumenti Statistiche
get_company_stats- Ottenere statistiche aggregateget_canton_counts- Ottenere conteggi cantoniget_letter_counts- Ottenere conteggi lettereget_two_letter_counts- Ottenere conteggi due lettere
Risorse
Il server fornisce accesso basato su risorse:
mapfolio://company/{id}- Dati aziendamapfolio://project/{id}- Dati progettomapfolio://user/{id}- Profilo utentemapfolio://linkedin-profile/{id}- Profilo LinkedIn
Le risorse possono includere autenticazione tramite parametri query:
mapfolio://company/{id}?apiKey=mapf_...mapfolio://company/{id}?jwtToken=...
Esempio di Utilizzo
Cercare Aziende
{
"tool": "search_companies",
"arguments": {
"query": "technology",
"cantons": ["ZH", "BE"],
"page": 1,
"limit": 20
}
}
Creare Progetto
{
"tool": "create_project",
"arguments": {
"name": "Tech Companies Zurich",
"searchType": "company",
"searchQuery": "technology",
"isPublic": false
}
}
Ottenere Dettagli Azienda
{
"tool": "get_company",
"arguments": {
"companyId": "company-uuid-here"
}
}
Gestione Errori
Tutti gli strumenti restituiscono errori in un formato coerente:
{
"error": "Messaggio di errore"
}
Scenari di errore comuni:
- 401 Non Autorizzato: Autenticazione non valida o mancante
- 403 Vietato: Permessi insufficienti
- 404 Non Trovato: Risorsa non trovata
- 500 Errore Interno del Server: Errore lato server
Architettura Solo API
Il server MCP utilizza richieste HTTP a mapfolio.app invece di accesso diretto al database. Ciò significa:
- ✅ Nessuna credenziale Supabase necessaria - Funziona solo con URL API e chiave API
- ✅ Deployment Vercel facile - Distribuire come funzione serverless
- ✅ Sicuro - Tutte le richieste passano attraverso l'API Mapfolio con autenticazione
- ✅ Scalabile - Beneficia della limitazione della velocità e della cache dell'API Mapfolio
Attualmente Disponibile via API
- ✅ Ricerca e recupero aziende
- ✅ Statistiche aziendali (conteggi cantoni, conteggi lettere)
- ✅ Aziende casuali
- ✅ Visite aziendali
In Arrivo (Richiede Endpoint API)
- ⏳ Gestione progetti (creare, elencare, aggiornare, eliminare)
- ⏳ Gestione profili utente
- ⏳ Accesso profili LinkedIn
- ⏳ Operazioni amministrative
Queste funzionalità restituiranno messaggi di errore utili fino a quando gli endpoint API non saranno creati.
Considerazioni di Sicurezza
- Chiavi API: Archiviare in modo sicuro, non committare mai nel controllo versione
- Token JWT: I token scadono, gestire l'aggiornamento appropriatamente
- Limitazione Velocità API: Rispetta i limiti di velocità dell'API Mapfolio
- Solo HTTPS: Utilizzare sempre HTTPS per richieste API
- Operazioni Admin: Richiedono autenticazione admin esplicita (quando gli endpoint sono disponibili)
Sviluppo
Verifica Tipo
npm run type-check
Compilazione
npm run build
Modalità Sviluppo
npm run dev
Documentazione
Per documentazione completa, consultare il README Server MCP.
Supporto
Per problemi o domande:
- GitHub Issues: [repository mapfolio]
- Email: support@mapfolio.app
Licenza
MIT