ML MCP Server

ML MCP Server

Enables training and using machine learning models on local CSV datasets or data from other MCP servers, supporting tasks like forecasting, regression, classification, and anomaly detection.

Category
访问服务器

README

ML MCP Server

MCP server untuk melatih dan memakai model machine learning plug-and-play atas dataset CSV lokal — diporting dari prototipe mcp-chatbot-multi (model_factory.py + sensor_ml.py + code_executor.py), disusun ulang mengikuti pola grk-mcp/idms_mcp/irim-mcp/docs-mcp (satu server per domain, tools.py dipakai bersama server.py stdio dan http_api.py bridge HTTP) supaya bisa dipakai lewat Claude Code maupun aplikasi Laravel chatbot-ai.

Fitur inti dari prototipe tetap dipertahankan (list katalog algoritma, latih model, prediksi pakai model tersimpan, jalankan kode Python ad hoc), hanya digeneralisasi supaya bekerja atas dataset & kolom apa pun — bukan hanya skema sensor_A..D yang dihardcode di prototipe.

Setup

cd ml-mcp
python -m venv .venv
./.venv/Scripts/pip install -r requirements.txt
cp .env.example .env
./.venv/Scripts/python.exe generate_sample_dataset.py   # opsional: dataset contoh datasets/sensors.csv

Taruh file .csv apa pun di folder datasets/ — nama file (tanpa .csv) menjadi nilai parameter dataset di semua tool. Kolom bernama timestamp/date/datetime/time (case-insensitive) otomatis di-parse sebagai waktu dan dipakai untuk mengurutkan baris.

Sumber data dari MCP lain (bukan hanya CSV lokal)

Selain dataset yang ditaruh manual, dataset ML juga bisa berasal dari MCP server LAIN yang datanya ditarik AI di tengah percakapan — ini yang membuat chatbot-ai bisa menjawab pertanyaan seperti "latih model prediksi dari data vibrasi pompa X" tanpa data itu pernah ada sebagai file CSV.

Alur yang dijalankan AI (semua lewat tool-calling, satu percakapan):

  1. Panggil tool MCP lain untuk menarik data, mis. idms__get_predictive_parameter_trend(...), pkt-grk__get_emission_detail(...), atau irim__list_issues(...) — semuanya mengembalikan baris data berbentuk list of dict (rows/trend/ list hasil tool itu).
  2. Lempar baris data itu ke ml__ingest_dataset(name, records)name bebas (mis. "vibrasi_pompa_101"), records persis baris yang didapat dari langkah 1. Tool ini menyimpannya sebagai dataset bernama, dan mengembalikan kolom-kolom yang berhasil terbaca (termasuk mana yang numerik) supaya AI tahu nilai apa yang valid untuk target_column/ feature_columns.
  3. Lanjut seperti dataset biasa: ml__get_dataset_summary(name) (opsional, untuk cek kolom), ml__train_model(dataset=name, task=..., ...), lalu ml__predict_with_model(model_key).
  4. Kalau dataset itu memang cuma dipakai sekali untuk pertanyaan ini, ml__delete_dataset(name) membersihkannya (model yang sudah dilatih atas dataset itu tetap bisa dipakai predict_with_model selama input_data diisi lengkap — lihat catatan di tabel tools).

ingest_dataset dibatasi ketat karena isi name/records datang dari LLM, bukan dari file yang sudah dikurasi manusia: nama dataset hanya boleh huruf/angka/-/_ (mencegah path traversal), dan records maksimum 50.000 baris per panggilan.

Menjalankan

Stdio (dipakai Claude Code lewat .mcp.json, atau manual untuk debug):

./.venv/Scripts/python.exe server.py

HTTP bridge (dipakai aplikasi chatbot-ai):

./.venv/Scripts/uvicorn http_api:app --host 127.0.0.1 --port 8769

Daftarkan sebagai MCP server baru di chatbot-ai (menu MCP Servers, atau lewat McpServerSeeder), mengikuti pola pkt-grk/irim/docs:

Kolom Nilai
slug ml (jadi prefix nama tool: ml__train_model, dst.)
base_url http://127.0.0.1:8769
token isi sama dengan ML_API_TOKEN di .env server ini

Port 8765/8766/8767/8768 sudah dipakai grk-mcp/irim-mcp/ idms_mcp/docs-mcp, jadi server ini memakai 8769.

Keamanan

  • Server ini tidak menyentuh database aplikasi lain — "database"-nya hanya registry SQLite lokal (ml_registry.sqlite3) yang mencatat metadata model terlatih, dan file .pkl di models/. Tidak ada risiko SQL injection ke data produksi karena tidak ada tool query SQL ad hoc di sini.
  • execute_python (jalankan kode Python bebas atas sebuah dataset, disandbox dasar: whitelist import, blokir pola berbahaya, timeout 15 detik — lihat code_executor.py) hanya didaftarkan di server.py (stdio, dipakai Claude Code secara lokal) dan sengaja tidak diekspos lewat http_api.py, karena mengizinkan LLM yang menghadap pengguna akhir menjalankan kode bebas adalah permukaan risiko yang jauh lebih besar daripada tool terkurasi lainnya — sama seperti run_readonly_query yang dikecualikan dari bridge HTTP grk-mcp/irim-mcp.
  • .env berisi token asli dan sengaja di-gitignore — jangan pernah di-commit.

Tools yang tersedia

Tool Transport Kegunaan
list_datasets() stdio + HTTP Daftar dataset yang tersedia (CSV lokal maupun hasil ingest_dataset), jumlah baris/kolom, kolom numerik.
get_dataset_summary(dataset) stdio + HTTP Statistik kolom (describe, nilai hilang, contoh baris) — dipakai sebelum train_model.
ingest_dataset(name, records, overwrite) stdio + HTTP Simpan data yang ditarik dari MCP server LAIN (list of dict) sebagai dataset bernama — lihat bagian "Sumber data dari MCP lain".
delete_dataset(name) stdio + HTTP Hapus dataset (mis. hasil ingest_dataset yang sudah tidak dipakai).
list_ml_catalog() stdio + HTTP Daftar task (forecast/regression/classification/anomaly) & algoritma yang tersedia.
train_model(dataset, task, target_column, feature_columns, algorithm, horizon, threshold) stdio + HTTP Latih model, simpan ke registry + disk, kembalikan metrik evaluasi dan model_key.
predict_with_model(model_key, input_data) stdio + HTTP Prediksi pakai model tersimpan — input_data opsional, default pakai baris/window terbaru dataset asal model.
list_trained_models() stdio + HTTP Daftar semua model terlatih beserta metriknya.
delete_model(model_key) stdio + HTTP Hapus model terlatih (file + entri registry).
execute_python(code, dataset) stdio saja Jalankan kode Python ad hoc atas sebuah dataset (analisis/ML custom di luar train_model).

Task ML yang didukung

  • forecast — prediksi nilai target_column (kolom numerik) N langkah ke depan, berbasis pola historis kolom itu sendiri (lag features), analog forecast_sensor di prototipe.
  • regression — prediksi nilai numerik target_column dari feature_columns (kolom lain).
  • classification — prediksi kelas/kategori target_column dari feature_columns. Kalau target_column berupa angka (bukan kategori), wajib isi threshold (kelas 1 jika nilai ≥ threshold) — analog task outage/predict_failure di prototipe.
  • anomaly — deteksi baris tidak normal pada feature_columns (default semua kolom numerik) pakai IsolationForest, tanpa target — sama seperti detect_anomalies di prototipe.

Algoritma yang tersedia: linear_regression/random_forest untuk regression/forecast, logistic_regression/random_forest untuk classification. anomaly selalu memakai IsolationForest otomatis.

Yang sengaja tidak diporting dari prototipe

Tool analisis khusus data sensor di mcp-chatbot-multi (analyze_sensors, get_correlation, get_downtime, make_chart, forecast_chart) tidak diporting karena spesifik ke skema sensor & menghasilkan file gambar (PNG) — di luar cakupan "model ML plug-and-play" dan tidak konsisten dengan pola MCP server lain di proyek ini (semuanya mengembalikan JSON, bukan file). get_dataset_summary (statistik describe()) dan execute_python sudah cukup untuk eksplorasi data serupa tanpa dependensi matplotlib.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选