Selamlar, bu yazımda Splunk + MCP + Codex: Log Analizinden Android TV Kontrolünü ele aldım. Şimdiden keyifli okumalar. 🙂
1. Giriş
Merkezi log yönetimi ve gözlemlenebilirlik platformları, sistemlerden elde edilen verilerin toplanması, analiz edilmesi ve operasyonel süreçlerde kullanılmasında önemli rol oynamaktadır. Yapay zekâ destekli araçların gelişmesiyle birlikte bu platformlarla etkileşim kurmanın farklı yöntemleri de ortaya çıkmaktadır.
Bu çalışmada Splunk Enterprise, Model Context Protocol (MCP), OpenAI Codex ve Android Debug Bridge (ADB) teknolojilerini bir araya getirerek Android tabanlı bir Smart TV üzerinde izleme, analiz ve kontrol işlemlerinin gerçekleştirilebildiği bir laboratuvar ortamı oluşturdum.
Çalışmanın temel amacı, Android TV üzerinde oluşan sistem kayıtlarının Splunk Enterprise üzerinde merkezi olarak izlenmesi, bu kayıtların MCP aracılığıyla Codex üzerinden sorgulanması ve aynı yapı üzerinden televizyona kontrol komutlarının gönderilebilmesidir.
Geliştirilen mimari sayesinde Codex üzerinden doğal dil kullanılarak Android TV’nin durumu sorgulanabilmekte, Splunk üzerinde bulunan hata kayıtları analiz edilebilmekte ve televizyona kontrol komutları iletilebilmektedir.
Çalışma kapsamında gerçekleştirilen testler sonucunda hem Splunk üzerinden log analizi hem de Android TV üzerinde uzaktan komut çalıştırma işlemleri başarıyla doğrulanmıştır.

2. Kullanılan Teknolojiler
Çalışmada aşağıdaki teknolojiler kullanılmıştır:
| Teknoloji | Kullanım amacı |
|---|---|
| Splunk Enterprise | Android TV sistem ve hata kayıtlarının merkezi olarak toplanması ve analiz edilmesi |
| Model Context Protocol (MCP) | Yapay zekâ aracı ile harici sistemler arasında standartlaştırılmış araç iletişimi |
| OpenAI Codex | Doğal dil komutlarının yorumlanması ve MCP araçlarının çalıştırılması |
| Python / FastMCP | MCP sunucusunun ve araçlarının geliştirilmesi |
| Android Debug Bridge (ADB) | Android TV üzerinde durum sorgulama ve kontrol komutlarının yürütülmesi |
| Windows PowerShell | ADB Gateway işlemlerinin gerçekleştirilmesi |
| SSH | Codex, Linux MCP sunucusu ve Windows Gateway arasındaki güvenli iletişim |
| Splunk REST API | Splunk üzerindeki kayıtların MCP araçları tarafından sorgulanması |
Bu teknolojilerin birlikte kullanılmasıyla log analizi ve cihaz kontrolünün aynı etkileşim ortamında gerçekleştirilmesi hedeflenmiştir.
3. Laboratuvar Ortamı ve Mimari Tasarım
Çalışma, fiziksel bir Android TV ve farklı görevler için yapılandırılmış sunuculardan oluşan laboratuvar ortamında gerçekleştirilmiştir.
3.1. Laboratuvar ortamı
| Bileşen | Ortam | Görev |
|---|---|---|
| Splunk Enterprise | Linux, standalone | Log yönetimi ve analiz |
| MCP Server | Linux | MCP araçlarını sunma ve istekleri yönlendirme |
| Windows Gateway | Windows | ADB üzerinden Android TV’ye komut iletme |
| OpenAI Codex | Windows | Kullanıcı isteklerini MCP araçlarıyla gerçekleştirme |
| ONVO Android TV | Android 14 | İzlenen ve kontrol edilen cihaz |
Splunk Enterprise üzerinde android_tv isimli ayrı bir indeks kullanılmıştır. Android TV’den elde edilen logcat kayıtları bu indeks üzerinde saklanmıştır.
MCP sunucusu ise Splunk REST API ile iletişim kuran ve Windows Gateway üzerinden Android TV’ye komut gönderebilen merkezi bir entegrasyon katmanı olarak tasarlanmıştır.
3.2. Mimari çalışma prensibi
Mimari iki temel iş akışından oluşmaktadır.
Log analizi akışı:
- Android TV üzerinde oluşan sistem kayıtları ADB/logcat aracılığıyla elde edilir.
- Kayıtlar Splunk Enterprise üzerindeki
android_tvindeksinde tutulur. - Codex tarafından başlatılan MCP aracı, Splunk REST API üzerinden ilgili kayıtları sorgular.
- Sorgu sonuçları Codex’e iletilerek kullanıcıya analiz edilmiş biçimde sunulur.
Android TV kontrol akışı:
- Kullanıcı Codex üzerinden doğal dilde kontrol isteği gönderir.
- Codex, ilgili MCP aracını çağırır.
- MCP sunucusu Windows Gateway için bir görev oluşturur.
- Windows Gateway, görevi alarak ADB üzerinden Android TV’ye iletir.
- Komut sonucu MCP görev kuyruğuna kaydedilir ve Codex tarafından sorgulanabilir.
Bu yaklaşımda Splunk analiz katmanını, MCP entegrasyon katmanını ve ADB Gateway ise cihaz kontrol katmanını oluşturmaktadır.

4. Android TV Loglarının Splunk Üzerinden İzlenmesi
Android işletim sisteminde uygulama ve sistem bileşenleri tarafından üretilen kayıtlar logcat aracılığıyla incelenebilmektedir.
Bu kayıtlar uygulama davranışları, sistem olayları, hata mesajları ve farklı Android bileşenlerine ilişkin teknik bilgiler içerebilir.
Laboratuvar ortamında ONVO Android TV üzerinde ADB bağlantısı kurularak logcat kayıtları elde edilmiş ve Splunk Enterprise üzerinde merkezi olarak analiz edilebilecek hâle getirilmiştir.
4.1. Android TV bağlantısının doğrulanması
Windows ortamında ADB kullanılarak bağlı cihazlar aşağıdaki komutla kontrol edilmiştir.
.\adb.exe devices -l
Cihazın bağlantı durumunun device olarak görünmesi, ADB üzerinden komut gönderilebildiğini göstermektedir.

4.2. Android sistem kayıtlarının incelenmesi
Android TV üzerinde oluşan kayıtlar aşağıdaki komutla incelenebilir:
adb logcat
Yalnızca hata seviyesindeki kayıtlar incelenmek istendiğinde:
adb logcat "*:E"
Logcat verilerinin merkezi olarak analiz edilmesi, kayıtların tek tek terminal üzerinden incelenmesine kıyasla arama, filtreleme ve geçmişe yönelik analiz imkânı sağlamaktadır.
4.3. Splunk üzerinde logların sorgulanması
Splunk Enterprise üzerinde Android TV kayıtları için android_tv indeksi kullanılmıştır.
Temel sorgu:
index=android_tv
Belirli bir cihaza ait kayıtları filtrelemek için:
index=android_tv host="ONVO-TV"
Hata seviyesi üzerinden analiz gerçekleştirmek için:
index=android_tv host="ONVO-TV" tv_level="E"
| stats count by tv_component
| sort - count
Bu sorgu, Android TV üzerinde hata üreten bileşenleri ve her bileşene ait kayıt sayılarını görüntülemek amacıyla kullanılabilir.

5. Python ile MCP Sunucusunun Geliştirilmesi
Model Context Protocol, yapay zekâ uygulamalarının harici araçlar ve veri kaynaklarıyla standart bir arayüz üzerinden iletişim kurmasını sağlayan bir protokoldür.
Bu çalışmada MCP katmanı Python kullanılarak geliştirilmiştir.
MCP sunucusu üzerinde iki temel yetenek oluşturulmuştur:
- Splunk REST API üzerinden kayıtların sorgulanması ve analiz edilmesi
- Windows Gateway aracılığıyla Android TV’ye kontrol komutlarının gönderilmesi
5.1. Proje yapısı
Laboratuvar ortamında kullanılan temel proje bileşenleri aşağıdaki şekilde düzenlenmiştir:
smart-tv-mcp/
├── server.py
├── splunk_client.py
├── gateway_queue.py
├── certs/
│ └── lab-ca.crt
└── gateway_queue/
├── pending/
├── processing/
└── completed/
Dosyaların görevleri:
server.py: MCP sunucusunu başlatır ve Codex tarafından kullanılabilen araçları tanımlar.
splunk_client.py: Splunk REST API sorgularını gerçekleştirir.
gateway_queue.py: Android TV’ye gönderilecek komutların oluşturulması, işlenmesi ve sonuçlarının saklanmasını sağlar.
certs/lab-ca.crt: Splunk REST API bağlantısında TLS sertifika doğrulaması için kullanılır.
5.2. MCP sunucusunun oluşturulması
FastMCP kullanılarak geliştirilen yapının temel mantığı aşağıdaki örnek üzerinden gösterilebilir:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Smart TV & Splunk MCP")
@mcp.tool()
def get_server_status():
return {
"status": "running",
"service": "Smart TV & Splunk MCP"
}
if __name__ == "__main__":
mcp.run()
Bu örnek, MCP sunucusu üzerinde bir aracın nasıl tanımlandığını göstermektedir. Laboratuvar ortamında kullanılan gerçek sunucuda ek olarak Splunk analiz ve Android TV kontrol araçları bulunmaktadır.
5.3. Geliştirilen MCP araçları
Çalışma kapsamında toplam 11 MCP aracı oluşturulmuştur.
| MCP aracı | Görevi |
|---|---|
get_server_status | Linux MCP sunucusunun durumunu getirir |
get_tv_errors | Splunk üzerinden Android TV hata kayıtlarını sorgular |
get_tv_error_summary | Hata türlerini ve tekrar sayılarını analiz eder |
get_tv_status | Android TV durum sorgulama görevini oluşturur |
get_tv_job_result | Oluşturulan görevin sonucunu getirir |
press_home | Android TV ana ekran komutunu gönderir |
open_youtube | YouTube uygulamasını açar |
volume_up | Ses seviyesini artırır |
volume_down | Ses seviyesini azaltır |
play_pause | Medya oynatımını kontrol eder |
play_youtube_video | Belirtilen YouTube videosunu açmak için görev oluşturur |
Bu araçlar sayesinde Codex, cihaz kontrolü veya log analizi için doğrudan ADB ve Splunk komutlarını bilmek zorunda kalmadan ilgili işlemleri gerçekleştirebilmektedir.

6. Windows ADB Gateway ve Görev Kuyruğu
Android TV’nin bulunduğu ağ ile Linux MCP sunucusunun bulunduğu ortam arasındaki iletişimi yönetmek için Windows üzerinde bir ADB Gateway geliştirilmiştir.
Gateway, Android TV ile doğrudan ADB iletişimi kurabilen Windows sisteminde çalışmaktadır.
Bu mimaride MCP sunucusu Android TV’ye doğrudan ADB bağlantısı açmak yerine görev kuyruğu kullanmaktadır.
6.1. Görev kuyruğu mekanizması
Bir kontrol komutu gönderildiğinde görev aşağıdaki durumlardan geçmektedir:
pending → processing → completed
pending: Görev oluşturulmuştur ve Gateway tarafından alınmayı beklemektedir.
processing: Gateway görevi almış ve ilgili ADB işlemini gerçekleştirmektedir.
completed: İşlem tamamlanmış ve sonuç kaydedilmiştir.
Bu mekanizma, kontrol komutlarının oluşturulması ile yürütülmesini birbirinden ayırmaktadır.
Ayrıca her görev için benzersiz bir job_id üretilerek işlemin sonucu daha sonra sorgulanabilmektedir.
6.2. Android TV kontrol komutları
Android TV’nin ana ekranına dönmek için ADB üzerinde aşağıdaki komut kullanılabilir:
adb shell input keyevent KEYCODE_HOME
Benzer şekilde ses seviyesini artırmak için:
adb shell input keyevent KEYCODE_VOLUME_UP
Geliştirilen MCP yapısında bu komutlar, kullanıcı tarafından doğrudan çalıştırılmak yerine ilgili MCP araçları aracılığıyla Windows Gateway’e iletilmektedir.


7. OpenAI Codex ile MCP Entegrasyonu
Geliştirilen MCP sunucusunun doğal dil üzerinden kullanılabilmesi için OpenAI Codex ile entegrasyonu gerçekleştirilmiştir.
Codex, Linux üzerinde çalışan MCP sunucusuna SSH bağlantısı üzerinden erişmektedir.
Bu yapıda MCP iletişimi stdio üzerinden sağlanmaktadır.
7.1. Codex MCP yapılandırması
Codex yapılandırma dosyasında MCP sunucusu aşağıdaki yapıya benzer şekilde tanımlanmıştır:
[mcp_servers.smart-tv]
command = "ssh"
args = [
"-T",
"-i", "C:/PATH/TO/SSH_KEY",
"-o", "IdentitiesOnly=yes",
"-o", "BatchMode=yes",
"splunk@MCP_SERVER_IP",
"cd /home/splunk/smart-tv-mcp && exec .venv/bin/python server.py"
]
startup_timeout_sec = 30
tool_timeout_sec = 90
Bu yapılandırma sayesinde Codex, SSH üzerinden Linux MCP sunucusunu başlatabilmekte ve sunucuda tanımlanan araçları kullanabilmektedir.
7.2. MCP araçlarının doğrulanması
Entegrasyonun ardından Codex üzerinden get_server_status aracı çağrılmıştır.
Gerçekleştirilen testte Linux MCP sunucusunun çalıştığı doğrulanmış ve sistem bilgileri başarıyla alınmıştır.

8. Test Senaryoları ve Elde Edilen Sonuçlar
Geliştirilen mimarinin doğrulanması amacıyla Splunk analizi ve Android TV kontrolü olmak üzere farklı test senaryoları gerçekleştirilmiştir.
8.1. Test 1 – Splunk üzerinden Android TV hata analizi
İlk testte Codex üzerinden get_tv_error_summary aracı çağrılmıştır.
Kullanılan parametreler:
minutes = 10080
limit = 10
Bu sorguyla Android TV’nin son yedi günlük hata kayıtları incelenmiştir.
Test sonucunda döndürülen ilk 10 hata grubunda toplam 671 kayıt tespit edilmiştir.
En sık karşılaşılan beş hata grubu:
| Bileşen | Tekrar sayısı |
|---|---|
| MI_PQ | 612 |
| cqmt | 44 |
| TraceManagerImpl – vpn | 3 |
| TraceManagerImpl – broadcast | 2 |
| mtk_and | 2 |
En yoğun hata grubunu oluşturan MI_PQ bileşeninde aşağıdaki hata mesajı gözlemlenmiştir:
<ERR>_MI_PQ_CalculateSubwinCrop[6050]: invalid input
Bu hata yaklaşık 30 saniyelik bir zaman aralığında 612 kez tekrarlanmıştır.
Mesaj, görüntü işleme sırasında kullanılan kırpma veya boyutlandırma parametreleriyle ilgili bir soruna işaret ediyor olabilir. Ancak yalnızca bu kayıt üzerinden kesin kök neden belirlenememektedir.
Bu test, Splunk üzerinde tutulan kayıtların MCP aracılığıyla sorgulanabildiğini ve Codex tarafından analiz edilerek anlamlı bir rapora dönüştürülebildiğini göstermiştir.


8.2. Test 2 – Android TV durumunun sorgulanması
İkinci testte Android TV’nin bağlantı ve çalışma durumu Codex üzerinden sorgulanmıştır.
Bu işlem için get_tv_status aracı kullanılmıştır.
Oluşturulan görev, Windows Gateway tarafından işlendikten sonra get_tv_job_result aracıyla kontrol edilmiştir.
Görev sonucu:
status: completed
result: success
Bu sonuç, Android TV’nin Gateway üzerinden erişilebilir olduğunu ve durum sorgulama işleminin tamamlandığını doğrulamıştır.

8.3. Test 3 – Android TV ana ekran kontrolü
Üçüncü testte Codex üzerinden Android TV’nin ana ekranına dönmesi istenmiştir.
Bu işlem için press_home aracı çağrılmıştır.
MCP sunucusu tarafından oluşturulan görev Windows Gateway’e aktarılmış ve ilgili ADB komutu Android TV üzerinde çalıştırılmıştır.
Ardından get_tv_job_result aracılığıyla görev durumu kontrol edilmiştir.
Sonuç:
action: press_home
status: completed
result: success
Bu test, Codex üzerinden verilen doğal dil komutunun MCP ve Windows Gateway katmanlarından geçerek gerçek Android TV üzerinde uygulanabildiğini göstermiştir.


8.4. Test sonuçlarının değerlendirilmesi
| Test senaryosu | Sonuç |
|---|---|
| Linux MCP sunucu durumunun sorgulanması | Başarılı |
| Splunk REST API bağlantısı | Başarılı |
| Son yedi günlük Android TV hata analizi | Başarılı |
| Android TV cihaz durumunun sorgulanması | Başarılı |
| Android TV Home komutunun çalıştırılması | Başarılı |
| Gateway görev sonucunun doğrulanması | Başarılı |
Test sonuçları, geliştirilen mimarinin temel izleme, analiz ve kontrol işlevlerini laboratuvar ortamında gerçekleştirebildiğini göstermektedir.
9. Karşılaşılan Sorunlar ve Çözümler
Çalışma sırasında bazı bağlantı ve yapılandırma sorunlarıyla karşılaşılmıştır.
| Karşılaşılan sorun | Uygulanan çözüm |
|---|---|
Splunk REST API üzerinde 401 Unauthorized hatası | REST API kimlik bilgileri doğrulanarak MCP sunucusundaki parola yapılandırması güncellenmiştir. |
Codex MCP çağrılarında Transport closed hatası | SSH/MCP bağlantısı kontrol edilmiş ve Codex oturumu yeniden başlatılarak sorun giderilmiştir. |
| Splunk sorgularında lookup uyarıları | Yüklenemeyen lookup tanımları tespit edilmiş ve sorgu sonuçları bu uyarılar dikkate alınarak değerlendirilmiştir. |
Bu sorunlar giderildikten sonra temel testler başarıyla tamamlanmıştır.
10. Güvenlik Değerlendirmesi
MCP sunucularının harici sistemlerle iletişim kurabilmesi ve bazı durumlarda komut çalıştırabilmesi nedeniyle güvenlik kontrolleri önem taşımaktadır.
Bu çalışma kapsamında iletişim için SSH kullanılmış, Splunk REST API bağlantısında TLS sertifika doğrulaması uygulanmış ve Android TV kontrol işlemleri tanımlı MCP araçları üzerinden gerçekleştirilmiştir.
Geliştirilen görev kuyruğu yapısı, Android TV üzerinde çalıştırılabilecek işlemleri belirli komutlarla sınırlandırmaya imkân tanımaktadır.
Laboratuvar ortamında Splunk erişimi için admin hesabı kullanılmıştır. Ancak üretim ortamlarında ayrı bir servis hesabı oluşturulması, yalnızca ihtiyaç duyulan yetkilerin tanımlanması ve kimlik bilgilerinin güvenli bir şekilde yönetilmesi önerilmektedir.
Ayrıca kontrol komutlarının kayıt altına alınması, görev sonuçlarının izlenmesi ve erişim yetkilerinin sınırlandırılması üretim ortamları açısından değerlendirilmesi gereken başlıklardır.
11. Sonuç
Bu çalışmada Splunk Enterprise, Model Context Protocol, OpenAI Codex ve Android Debug Bridge teknolojileri bir araya getirilerek Android TV üzerinde hem izleme hem de kontrol işlemlerinin gerçekleştirilebildiği bir laboratuvar ortamı oluşturulmuştur.
Geliştirilen MCP sunucusu sayesinde Splunk üzerindeki log kayıtları Codex üzerinden doğal dil kullanılarak sorgulanmış, elde edilen hata kayıtları analiz edilmiş ve Android TV’ye gönderilen kontrol komutlarının başarıyla tamamlandığı doğrulanmıştır.
Özellikle Android TV üzerinde tespit edilen hata kayıtlarının Splunk üzerinden analiz edilmesi ve aynı Codex oturumu içerisinde cihazın kontrol edilebilmesi, MCP tabanlı entegrasyonların operasyonel kullanım potansiyelini ortaya koymaktadır.
Çalışma, log yönetimi platformlarının yalnızca veri görüntüleme amacıyla değil, yapay zekâ destekli analiz ve kontrollü otomasyon senaryolarında da kullanılabileceğini göstermektedir.
Gelecekte bu mimarinin alarm bazlı otomatik analiz, daha ayrıntılı cihaz sağlık kontrolleri ve olaylara göre tetiklenen aksiyonlarla genişletilmesi mümkündür.
Sonuç olarak gerçekleştirilen PoC, Splunk üzerinde elde edilen verilerin yapay zeka destekli araçlarla analiz edilmesi ve bu analiz ortamından fiziksel bir cihaza kontrollü komut gönderilmesi açısından uygulanabilir bir örnek sunmaktadır.
Bu çalışma, Splunk verilerinin MCP aracılığıyla yapay zekâ destekli araçlara sunulmasının yanı sıra, analiz ve fiziksel cihaz kontrolünün aynı operasyonel iş akışında birleştirilebileceğini göstermektedir.
Share this content: