Tarayıcı tabanlı toplantı platformlarıyla (Zoom, Teams, Google Meet) etkileşim kurmak için MCP server. AI ajanlarının çevrimiçi toplantılara bot göndermesine, canlı transkriptleri toplamasına, metni seslendirmesine ve toplantı sohbetinde mesaj göndermesine olanak tanır.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"joinly-ai-joinly": {
"command": "python",
"args": [
"-m",
"joinly"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/joinly-ai/joinly.git ~/.mcp/joinly
cd ~/.mcp/joinly joinly.ai, AI ajanlarının video çağrılarına katılmasını ve aktif olarak katılmasını sağlamak için tasarlanmış bir connector middleware'dir. MCP server'ı aracılığıyla joinly.ai, herhangi bir AI ajanını toplantılarınızda gerçek zamanda görevleri gerçekleştirme ve sizinle etkileşim kurma becerileriyle donatabilecek temel meeting tools ve resources sağlar.
Hemen başlamak mı istiyorsunuz? Quickstart bölümüne gidin! Daha fazla bilgi mi istiyorsunuz? Web sitemizi ziyaret edin!
[!IMPORTANT]
Her şeyi kurmak istemiyorsunuz? Önce cloud versiyonunu deneyin! ☁️🚀
Bu demo videosunda, joinly "Joinly nedir?" sorusunu web'den en son haberlere erişerek yanıtlar. Daha sonra bir GitHub demo repository'sinde bir issue oluşturur.
Bu demo videosunda, joinly'i MCP aracılığıyla notion'a bağlarız ve bir sayfa içeriğini toplantı sırasında canlı olarak düzenlemesini sağlarız.
Sırada ne inşa etmeliyiz hakkında bir fikiniz var mı? Bize yazın! :rocket:
joinly'i Docker ile temel bir konuşmacı ajan istemcisi kullanarak çalıştırın.
[!IMPORTANT] Ön Koşullar: Docker kurulumu
Yeni bir joinly klasörü oluşturun veya bu repository'yi klonlayın (aşağıdaki adımlar için zorunlu değil). Bu dizinde, kullanmak istediğiniz LLM sağlayıcısı için geçerli bir API anahtarı ile yeni bir .env dosyası oluşturun, örneğin OpenAI:
[!TIP] OpenAI API anahtarını burada bulabilirsiniz
# .env
# OpenAI LLM için
# anahtarı ve modeli istediğiniz olanla değiştirin
JOINLY_LLM_MODEL=gpt-4o
JOINLY_LLM_PROVIDER=openai
OPENAI_API_KEY=your-openai-api-key
[!NOTE] Anthropic (Claude) ve Ollama kurulumları da dahil olmak üzere tam konfigürasyon seçenekleri için .env.example dosyasına bakın. Placeholder değerlerini gerçek API anahtarlarınız ile değiştirin ve model adını gerektiği gibi ayarlayın. Kullanmadığınız sağlayıcıların placeholder değerlerini silin.
Docker image'ını çekin (~2.3GB, tarayıcı ve modelleri içerdiği için):
docker pull ghcr.io/joinly-ai/joinly:latest
Zoom, Google Meet veya Teams'de bir toplantı başlatın ve joinly'in toplantı linkini <MeetingURL> olarak kullanarak toplantıya katılmasını sağlayın. Daha sonra, .env dosyasını oluşturduğunuz klasörden aşağıdaki komutu çalıştırın:
docker run --env-file .env ghcr.io/joinly-ai/joinly:latest --client <MeetingURL>
:red_circle: Başlamakta sorun mu yaşıyorsunuz? Birlikte çözelim discord kanalımızda!
Quickstart'ta, Docker Container'ı doğrudan --client kullanarak istemci olarak çalıştırdık. Ancak aynı zamanda bunu bir sunucu olarak çalıştırabiliriz ve container dışından buna bağlanabiliriz, bu da diğer MCP sunucularını bağlamamızı sağlar. Burada joinly-client paketi kullanarak harici bir istemci çalıştırır ve bunu joinly MCP server'ına bağlarız.
[!IMPORTANT] Ön Koşullar: Quickstart bölümünü (son komut hariç) yapın, uv'yi yükleyin ve iki terminal açın
Birinci terminalde joinly server'ını başlatın (dikkat, burada --client kullanmıyoruz ve 8000 portunu iletiyoruz):
docker run -p 8000:8000 ghcr.io/joinly-ai/joinly:latest
Server çalışırken, ikinci terminal penceresinde örnek istemci implementasyonunu başlatarak buna bağlanın ve bir toplantıya katılın:
uvx joinly-client --env-file .env <MeetingUrl>
Herhangi bir MCP server'ının araçlarını JSON konfigürasyonu sağlayarak ajana ekleyin. Konfigürasyon dosyası "mcpServers" altında birden fazla entry içerebilir ve hepsi toplantıda araç olarak kullanılabilir (sözdizimi için fastmcp client docs bölümüne bakın):
{
"mcpServers": {
"localServer": {
"command": "npx",
"args": ["-y", "package@0.1.0"]
},
"remoteServer": {
"url": "http://mcp.example.com",
"auth": "oauth"
}
}
}
Örneğin web arama için bir Tavily config ekleyin, sonra istemciyi config.json adlı config dosyası kullanarak çalıştırın:
uvx joinly-client --env-file .env --mcp-config config.json <MeetingUrl>
Konfigürasyonlar çevre değişkenleri ve/veya komut satırı argümanları aracılığıyla verilebilir. Burada, Docker container'ını başlatırken kullanılabilecek ortak konfigürasyon seçeneklerinin bir listesi bulunmaktadır:
docker run --env-file .env -p 8000:8000 ghcr.io/joinly-ai/joinly:latest <MyOptionArgs>
Alternatif olarak, joinly-client kullanarak --name, --lang ve provider settings komut satırı argümanları olarak iletebilirsiniz, bu da server ayarlarını geçersiz kılar:
uvx joinly-client <MyOptionArgs> <MeetingUrl>
Genel olarak, docker image varsayılan olarak başlatılan bir MCP server'ı sağlar. Ancak hızlı bir şekilde başlamak için --client aracılığıyla kullanılabilecek bir istemci implementasyonu da ekledik. Bu durumda hiçbir server başlatılmaz ve buna başka bir istemci bağlanamaz.
# Doğrudan istemci olarak başlat; varsayılan, harici bir istemcinin bağlanabileceği server'dır
--client <MeetingUrl>
# Katılımcı adını değiştir (varsayılan: joinly)
--name "AI Assistant"
# TTS/STT dilini değiştir (varsayılan: en)
# Not: kullanılabilirlik TTS/STT sağlayıcısına bağlıdır
--lang de
# joinly MCP server'ının host ve port'unu değiştir
--host 0.0.0.0 --port 8000
# Kokoro (yerel) TTS (varsayılan)
--tts kokoro
--tts-arg voice=<VoiceName> # isteğe bağlı olarak, farklı ses ayarla
# ElevenLabs TTS, .env'ye ELEVENLABS_API_KEY ekleyin
--tts elevenlabs
--tts-arg voice_id=<VoiceID> # isteğe bağlı olarak, farklı ses ayarla
# Deepgram TTS, .env'ye DEEPGRAM_API_KEY ekleyin
--tts deepgram
--tts-arg model_name=<ModelName> # isteğe bağlı olarak, farklı model (ses) ayarla
# Whisper (yerel) STT (varsayılan)
--stt whisper
--stt-arg model_name=<ModelName> # isteğe bağlı olarak, farklı model ayarla (varsayılan: base), GPU desteği için aşağıya bakın
# Deepgram STT, .env'ye DEEPGRAM_API_KEY ekleyin
--stt deepgram
--stt-arg model_name=<ModelName> # isteğe bağlı olarak, farklı model ayarla
# Hata ayıklama için VNC server'ı olan tarayıcıyı başlat;
# portu ilet ve bir VNC istemcisi kullanarak bağlan
--vnc-server --vnc-server-port 5900
# Logging
-v # veya -vv, -vvv
# Yardım
--help
Transkripsiyon ve TTS modellerini bir GPU'da çalıştırmak için CUDA GPU desteğine sahip bir Docker image sağlıyoruz. Bunu kullanmak için NVIDIA Container Toolkit yüklü olması ve CUDA >= 12.6 gerekir. Daha sonra CUDA etkinleştirilmiş image'ını çekin:
docker pull ghcr.io/joinly-ai/joinly:latest-cuda
Yukarıdaki komutlar ile aynı komutlar kullanarak istemci veya server olarak çalıştırın, ancak joinly:{version}-cuda image'ını kullanın ve --gpus all ayarlayın:
# Server olarak çalıştır
docker run --gpus all --env-file .env -p 8000:8000 ghcr.io/joinly-ai/joinly:latest-cuda -v
# İstemci olarak çalıştır
docker run --gpus all --env-file .env ghcr.io/joinly-ai/joinly:latest-cuda -v --client <MeetingURL>
Varsayılan olarak, joinly image'ı transkripsiyon için base Whisper modelini kullanır, çünkü CPU'da hala makul bir hızda çalışır. cuda için, önemli ölçüde daha iyi transkripsiyon kalitesi için otomatik olarak distil-large-v3 olarak ayarlanır. Model'i --stt-arg model_name=<model_name> ayarlayarak değiştirebilirsiniz (örneğin, --stt-arg model_name=large-v3). Ancak, docker image'da yalnızca ilgili varsayılan modeller paketlenmiştir, bu nedenle container başlangıcında model ağırlıklarını indirmeye başlayacaktır.
Ayrıca kendi ajanınızı yazabilir ve bunu joinly MCP server'ına bağlayabilirsiniz. joinly-client paketi için code examples bölümüne veya client_example.py dosyasına bakın, eğer framework'ümüze bağlı olmayan bir başlangıç noktası istiyorsanız.
joinly MCP server'ı aşağıdaki araçları ve kaynakları sağlar:
join_meeting - URL, katılımcı adı ve isteğe bağlı şifre ile toplantıya katılleave_meeting - Mevcut toplantıdan ayrılspeak_text - Metni TTS kullanarak seslendir (text parametresi gerekli)send_chat_message - Chat mesajı gönder (message parametresi gerekli)mute_yourself - Mikrofonu kapatunmute_yourself - Mikrofonu açget_chat_history - Mevcut toplantı chat geçmişini JSON formatında alget_participants - Mevcut toplantı katılımcılarını JSON formatında alget_transcript - Mevcut toplantı transkriptini JSON formatında al, isteğe bağlı olarak dakikalar ile filtreleget_video_snapshot - Mevcut toplantıdan bir görüntü al, örneğin mevcut screenshare'i görüntületranscript://live - Canlı toplantı transkripti JSON formatında, zaman damgaları ve konuşmacı bilgileri dahil. Yeni ses parçaları eklendiğinde gerçek zamanlı güncellemeler için abone olunabilir.Geliştirme için gerekli tüm bağımlılıkları yükleyen development container'ını kullanmanızı öneriyoruz. Başlamak için, Visual Studio Code için DevContainer Extension'ını yükleyin, repository'yi açın ve Reopen in Container seçeneğini seçin.
Kurulum biraz zaman alabilir, çünkü tüm paketleri ve Whisper/Kokoro için modelleri ve Chromium tarayıcısını indirir. Sonunda, download_assets.py betiğini otomatik olarak çağırır. Missing kokoro-v1.0.onnx gibi hatalar görürseniz, şu komutu kullanarak bu betiği manuel olarak çalıştırın:
uv run scripts/download_assets.py
Onunla ne yaptığınızı veya ne inşa ettiğinizi görmek isteyiz. Çalışmanızı discord kanalımızda sergileyin
Toplantı
Konuşma
Entegrasyonlar
Katkılar her zaman hoşlanır! Hatalar için issue açmaktan veya feature isteği göndermekten çekinmeyin. Tüm katkıları mümkün olan en kısa sürede gözden geçireceğiz ve değişikliklerinizi birleştirmeye yardımcı olacağız.
Lütfen Yol Haritamızı kontrol edin ve bizimle iletişime geçmekten çekinmeyin!
Bu proje MIT Lisansı altında lisanslanmıştır ‒ ayrıntılar için LICENSE dosyasına bakın.
Sorularınız veya geri bildiriminiz varsa veya bakımcılar veya diğer topluluk üyeleriyle sohbet etmek istiyorsanız, lütfen aşağıdaki bağlantıları kullanın:
Inbox Zero için bir MCP sunucusu. Gmail üzerinde yanıtlamanız gereken veya takip etmeniz gereken e-postaları bulma gibi işlevler ekler.
WhatsApp mesajlarınızda arama yapmanızı, kişilerinizi görüntülemenizi ve bireysel ya da grup sohbetlerine mesaj göndermenizi sağlayan bir MCP sunucusu.
Slack Çalışma Alanları için en güçlü MCP sunucusu.
Telegram API entegrasyonu ile kullanıcı verilerine erişim, diyalogları (sohbetler, kanallar, gruplar) yönetme, mesajları alma ve gönderme, okundu durumunu takip etme olanakları sunur.
Microsoft Office ve Microsoft 365 ekosisteminin tamamına (Outlook, mail, dosyalar, Excel, takvim) Graph API üzerinden bağlanan MCP sunucusu.
LINE Resmi Hesabı Entegrasyonu için MCP Server