MCP Sunucusu
Mapfolio için Model Context Protocol sunucusu - AI asistanlarının Mapfolio verileriyle etkileşime girmesini sağlar
Genel Bakış
Mapfolio MCP Sunucusu, AI asistanlarının ve diğer MCP uyumlu istemcilerin Mapfolio'nun verileri ve işlemleriyle etkileşime girmesini sağlayan bir Model Context Protocol (MCP) sunucusudur. Şirketler, projeler, kullanıcılar, LinkedIn profilleri ve yönetim işlevlerine programatik erişim sağlar.
MCP Nedir?
Model Context Protocol (MCP), AI asistanlarının harici veri kaynaklarına ve araçlara güvenli bir şekilde erişmesini sağlayan açık bir protokoldür. MCP sunucuları, standartlaştırılmış bir arayüz aracılığıyla yetenekleri ortaya çıkarır ve AI asistanlarının:
- Veri sorgulama ve alma
- İşlem gerçekleştirme
- Kaynaklara erişme
- Harici sistemlerle entegrasyon
Özellikler
Mapfolio MCP Sunucusu kapsamlı işlevsellik sağlar:
Şirket Verileri
- Gelişmiş filtrelerle şirket arama
- ID'ye göre şirket detaylarını alma
- Kanton ve başlangıç harfine göre şirket alma
- Örnekleme için rastgele şirketler alma
- Şirket ziyaret istatistiklerine erişim
Proje Yönetimi
- Proje oluşturma ve yönetme
- Kullanıcı projelerini listeleme ve filtreleme
- Proje detaylarını güncelleme
- Projeleri silme
- Projelere şirket ekleme ve çıkarma
Kullanıcı Profilleri
- Kullanıcı profil bilgilerini alma
- Profil ayarlarını güncelleme
- Kullanıcı projelerini listeleme
- API anahtarlarını yönetme
LinkedIn Entegrasyonu
- LinkedIn profil verilerini alma
- LinkedIn profillerini arama
- Bağlantı bilgilerine erişim
- Profil sürüm geçmişini görüntüleme
- LinkedIn şirket verilerini alma
Yönetim İşlemleri
- Tüm kullanıcıları listeleme (sadece admin)
- Yeni kullanıcı oluşturma (sadece admin)
- API anahtarlarını yönetme (sadece admin)
- Admin panel istatistiklerine erişim
İstatistikler
- Toplanmış şirket istatistiklerini alma
- Kanton seviyesi sayımları görüntüleme
- Harf tabanlı sayımlara erişim
- İki harfli kombinasyon istatistiklerini alma
Kurulum
Önkoşullar
- Node.js >= 20.0.0
- npm >= 10.0.0
- Mapfolio Supabase örneğine erişim
Kurulum
- Bağımlılıkları yükleyin:
cd mcp-server
npm install
- Ortam değişkenlerini yapılandırın:
cp .env.example .env
.env dosyasını düzenleyin ve yapılandırın:
# Mapfolio API URL (varsayılan: https://mapfolio.app)
MAPFOLIO_API_URL=https://mapfolio.app
# Taşıma türü: 'stdio' (varsayılan) veya uzaktan erişim için 'http'
MCP_TRANSPORT=stdio
# HTTP portu (yalnızca MCP_TRANSPORT=http olduğunda kullanılır)
MCP_HTTP_PORT=3001
# İsteğe bağlı: Varsayılan kimlik doğrulama (MCP bağlamı veya HTTP başlıkları aracılığıyla sağlanabilir)
MAPFOLIO_API_KEY=mapf_your_api_key_here
MAPFOLIO_JWT_TOKEN=your-jwt-token-here
- Sunucuyu derleyin:
npm run build
Kullanım
Sunucuyu Çalıştırma
Yerel Geliştirme (stdio taşıması)
MCP sunucusu varsayılan olarak stdio taşımasını kullanır (standart MCP protokolü):
npm start
Otomatik yeniden yükleme ile geliştirme için:
npm run dev
HTTP Taşıması (uzaktan erişim için)
Yerel testler için HTTP taşımasıyla sunucuyu çalıştırmak için:
MCP_TRANSPORT=http MCP_HTTP_PORT=3001 npm start
Bu, HTTP POST üzerinden JSON-RPC 2.0 isteklerini kabul eden 3001 portunda bir HTTP sunucusu başlatır.
Vercel Dağıtımı (Uzaktan Erişim)
MCP sunucusu Vercel'e dağıtıldığında otomatik olarak HTTP üzerinden kullanılabilir:
- Endpoint:
https://your-app.vercel.app/api/mcp - Protokol: HTTP POST üzerinden JSON-RPC 2.0
- Kimlik Doğrulama:
X-API-Keybaşlığı veyaAuthorization: Bearer <token>başlığı aracılığıyla
Örnek istek:
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
}'
MCP İstemci Yapılandırması
Claude Desktop
Yerel dağıtım:
{
"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
MCP ayarları üzerinden yapılandırın:
- Komut:
node - Args:
["/path/to/mapfolio/mcp-server/dist/index.js"] - Ortam değişkenleri:
MAPFOLIO_API_URL:https://mapfolio.appMAPFOLIO_API_KEY: API anahtarınız (isteğe bağlı)
Kimlik Doğrulama
Sunucu iki kimlik doğrulama yöntemini destekler:
API Anahtarı Kimlik Doğrulaması
API anahtarları mapf_ önekiyle başlar ve şunlar olabilir:
MAPFOLIO_API_KEYortam değişkeni aracılığıyla ayarlanabilir- Araç çağrılarında
apiKeyparametresi aracılığıyla istek başına geçirilebilir
JWT Token Kimlik Doğrulaması
Supabase JWT tokenları şunlar olabilir:
MAPFOLIO_JWT_TOKENortam değişkeni aracılığıyla ayarlanabilir- Araç çağrılarında
jwtTokenparametresi aracılığıyla istek başına geçirilebilir
Kimlik Doğrulama Önceliği
- HTTP Taşıması: Başlıklar (
X-API-KeyveyaAuthorization) önceliklidir - İstek başına kimlik bilgileri (araç argümanlarında
apiKeyveyajwtToken) - Ortam değişkenleri (
MAPFOLIO_API_KEYveyaMAPFOLIO_JWT_TOKEN)
HTTP Taşıması Kimlik Doğrulaması
HTTP endpoint'i (/api/mcp) kullanılırken, kimlik doğrulama HTTP başlıkları aracılığıyla sağlanır:
- API Anahtarı:
X-API-Key: mapf_your_api_key - JWT Token:
Authorization: Bearer your_jwt_token
Kullanılabilir Araçlar
Sunucu 6 kategoride 30+ araç sağlar:
Şirket Araçları
search_companies- Filtrelerle aramaget_company- ID'ye göre şirket almaget_companies_by_canton_letter- Kanton ve harfe göre almaget_random_companies- Rastgele örnekler almaget_company_visits- Ziyaret istatistiklerini alma
Proje Araçları
create_project- Yeni proje oluşturmalist_projects- Kullanıcı projelerini listelemeget_project- Proje detaylarını almaupdate_project- Projeyi güncellemedelete_project- Projeyi silmeadd_companies_to_project- Şirket eklemeremove_companies_from_project- Şirket çıkarma
Kullanıcı Araçları
get_user_profile- Profil almaupdate_user_profile- Profil güncellemeget_user_projects- Projeleri listelemeget_user_api_keys- API anahtarlarını listeleme
LinkedIn Araçları
get_linkedin_profile- Profil almasearch_linkedin_profiles- Profil aramaget_linkedin_connections- Bağlantıları almaget_linkedin_profile_versions- Sürüm geçmişini almaget_linkedin_companies- Şirket verilerini alma
Admin Araçları (Sadece Admin)
list_all_users- Tüm kullanıcıları listelemecreate_user- Kullanıcı oluşturmaget_user_details- Kullanıcı detaylarını almalist_api_keys- Tüm API anahtarlarını listelemecreate_api_key- API anahtarı oluşturmarevoke_api_key- API anahtarını iptal etmeget_admin_stats- Admin istatistiklerini alma
İstatistik Araçları
get_company_stats- Toplanmış istatistikleri almaget_canton_counts- Kanton sayımlarını almaget_letter_counts- Harf sayımlarını almaget_two_letter_counts- İki harfli sayımları alma
Kaynaklar
Sunucu kaynak tabanlı erişim sağlar:
mapfolio://company/{id}- Şirket verilerimapfolio://project/{id}- Proje verilerimapfolio://user/{id}- Kullanıcı profilimapfolio://linkedin-profile/{id}- LinkedIn profili
Kaynaklar sorgu parametreleri aracılığıyla kimlik doğrulama içerebilir:
mapfolio://company/{id}?apiKey=mapf_...mapfolio://company/{id}?jwtToken=...
Kullanım Örneği
Şirket Arama
{
"tool": "search_companies",
"arguments": {
"query": "technology",
"cantons": ["ZH", "BE"],
"page": 1,
"limit": 20
}
}
Proje Oluşturma
{
"tool": "create_project",
"arguments": {
"name": "Tech Companies Zurich",
"searchType": "company",
"searchQuery": "technology",
"isPublic": false
}
}
Şirket Detaylarını Alma
{
"tool": "get_company",
"arguments": {
"companyId": "company-uuid-here"
}
}
Hata Yönetimi
Tüm araçlar hataları tutarlı bir formatta döndürür:
{
"error": "Hata mesajı"
}
Yaygın hata senaryoları:
- 401 Yetkisiz: Geçersiz veya eksik kimlik doğrulama
- 403 Yasak: Yetersiz izinler
- 404 Bulunamadı: Kaynak bulunamadı
- 500 İç Sunucu Hatası: Sunucu tarafı hata
Sadece API Mimarisi
MCP sunucusu doğrudan veritabanı erişimi yerine mapfolio.app'e HTTP istekleri kullanır. Bu şu anlama gelir:
- ✅ Supabase kimlik bilgileri gerekmez - Sadece API URL'si ve API anahtarıyla çalışır
- ✅ Kolay Vercel dağıtımı - Serverless fonksiyon olarak dağıtın
- ✅ Güvenli - Tüm istekler kimlik doğrulama ile Mapfolio'nun API'sinden geçer
- ✅ Ölçeklenebilir - Mapfolio'nun API hız sınırlaması ve önbelleğinden yararlanır
Şu Anda API Üzerinden Kullanılabilir
- ✅ Şirket arama ve alma
- ✅ Şirket istatistikleri (kanton sayımları, harf sayımları)
- ✅ Rastgele şirketler
- ✅ Şirket ziyaretleri
Yakında (API Endpoint'leri Gerektirir)
- ⏳ Proje yönetimi (oluştur, listele, güncelle, sil)
- ⏳ Kullanıcı profil yönetimi
- ⏳ LinkedIn profil erişimi
- ⏳ Admin işlemleri
Bu özellikler API endpoint'leri oluşturulana kadar yararlı hata mesajları döndürecektir.
Güvenlik Hususları
- API Anahtarları: Güvenli bir şekilde saklayın, asla sürüm kontrolüne commit etmeyin
- JWT Tokenları: Tokenların süresi dolar, yenilemeyi uygun şekilde yönetin
- API Hız Sınırlaması: Mapfolio'nun API hız limitlerine saygı gösterir
- Sadece HTTPS: API istekleri için her zaman HTTPS kullanın
- Admin İşlemleri: Açık admin kimlik doğrulaması gerektirir (endpoint'ler mevcut olduğunda)
Geliştirme
Tip Kontrolü
npm run type-check
Derleme
npm run build
Geliştirme Modu
npm run dev
Dokümantasyon
Tam dokümantasyon için MCP Sunucusu README dosyasına bakın.
Destek
Sorunlar veya sorular için:
- GitHub Issues: [mapfolio repository]
- Email: support@mapfolio.app
Lisans
MIT