VISO TRUST MCP Server
resmiAkses dan kelola program risiko pihak ketiga VISO TRUST Anda langsung melalui asisten AI.
Dokumentasi
VISO TRUST MCP Server
Server Model Context Protocol (MCP) untuk mengintegrasikan kemampuan VISO TRUST API dengan asisten AI.
Persyaratan
- Java 21+
- Gradle
- Docker (opsional untuk deployment terkontainerisasi)
- MCP Inspector (opsional untuk pengujian)
Konfigurasi
Konfigurasi VISO TRUST API
Properti berikut dapat dikonfigurasi untuk VISO TRUST API:
visotrust.api.base-url: URL dasar untuk VISO TRUST API (default: http://localhost:8080)visotrust.api.token: Token API Anda dari platform VISO TRUST (wajib)visotrust.api.timeout: Timeout permintaan API dalam milidetik (default: 30000)visotrust.api.connect-timeout: Timeout koneksi API dalam milidetik (default: 5000)
Untuk informasi tentang cara membuat token API untuk variabel lingkungan visotrust.api.token, lihat dokumentasi dukungan VISO TRUST.
Profil Aplikasi
Aplikasi ini mendukung profil Spring Boot untuk mengaktifkan konfigurasi berbeda pada skenario deployment yang berbeda.
Profil Remote
Profil remote dirancang khusus untuk dukungan MCP jarak jauh menggunakan Server-Sent Events (SSE). Profil ini mengonfigurasi aplikasi agar bekerja optimal di lingkungan terdistribusi di mana server MCP perlu berkomunikasi dengan klien jarak jauh melalui koneksi HTTP/SSE.
Perbedaan utama pada profil remote:
- Dikonfigurasi untuk komunikasi berbasis SSE, bukan I/O standar
- Pengaturan server yang dioptimalkan untuk koneksi klien jarak jauh
- Pencatatan log yang ditingkatkan untuk debugging terdistribusi
Cara mengaktifkan profil remote:
Saat menjalankan dengan Java secara langsung:
java -jar viso-mcp-server-<version>.jar --spring.profiles.active=remote
Saat menjalankan dengan Gradle:
./gradlew bootRun --args="--spring.profiles.active=remote"
Saat menggunakan Docker:
docker run -i --rm \
-e VISOTRUST_API_TOKEN=<your-api-token> \
-e SPRING_PROFILES_ACTIVE=remote \
viso-mcp-server
Kapan menggunakan profil remote:
- Saat men-deploy server MCP ke server jarak jauh atau lingkungan cloud
- Saat klien akan terhubung melalui HTTP/SSE, bukan stdio langsung
- Saat Anda memerlukan pencatatan log dan pemantauan yang ditingkatkan untuk deployment terdistribusi
- Saat berintegrasi dengan asisten AI berbasis web yang memerlukan komunikasi SSE
Untuk pengembangan lokal dan komunikasi stdio langsung, gunakan profil default (tidak perlu spesifikasi profil).
Instalasi
Instalasi Cepat
Klik salah satu tombol di bawah untuk menginstal VISO MCP Server di VS Code:
Pengaturan Manual dengan VS Code
Tambahkan blok JSON berikut ke file User Settings (JSON) Anda di VS Code. Anda dapat melakukannya dengan menekan Ctrl + Shift + P dan mengetik Preferences: Open User Settings (JSON).
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "viso_baseurl",
"description": "VISO TRUST API Base URL",
"default": "https://app.visotrust.com"
},
{
"type": "promptString",
"id": "viso_token",
"description": "VISO TRUST API Token",
"password": true
}
],
"servers": {
"viso-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VISOTRUST_API_TOKEN",
"-e",
"VISOTRUST_API_BASEURL",
"visotrustai/viso-mcp-server:latest"
],
"env": {
"VISOTRUST_API_BASEURL": "${input:viso_baseurl}",
"VISOTRUST_API_TOKEN": "${input:viso_token}"
}
}
}
}
}
Secara opsional, Anda dapat menambahkan contoh serupa (yaitu tanpa kunci mcp) ke file bernama .vscode/mcp.json di ruang kerja Anda. Ini memungkinkan Anda untuk berbagi konfigurasi dengan orang lain.
{
"inputs": [
{
"type": "promptString",
"id": "viso_baseurl",
"description": "VISO TRUST API Base URL",
"default": "https://app.visotrust.com"
},
{
"type": "promptString",
"id": "viso_token",
"description": "VISO TRUST API Token",
"password": true
}
],
"servers": {
"viso-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VISOTRUST_API_TOKEN",
"-e",
"VISOTRUST_API_BASEURL",
"visotrustai/viso-mcp-server:latest"
],
"env": {
"VISOTRUST_API_BASEURL": "${input:viso_baseurl}",
"VISOTRUST_API_TOKEN": "${input:viso_token}"
}
}
}
}
Penggunaan dengan Claude Desktop dan Klien MCP Lainnya
Konfigurasi Docker
{
"mcpServers": {
"viso-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "VISOTRUST_API_TOKEN",
"-e", "VISOTRUST_API_BASEURL",
"visotrustai/viso-mcp-server:latest"
],
"env": {
"VISOTRUST_API_TOKEN": "<your-api-token>",
"VISOTRUST_API_BASEURL": "https://app.visotrust.com"
}
}
}
}
Konfigurasi Java
{
"mcpServers": {
"viso-mcp": {
"command": "java",
"args": [
"-jar",
"viso-mcp-server-<version>.jar",
"--port",
"8080",
"--host",
"localhost"
],
"env": {
"JAVA_TOOL_OPTIONS": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005",
"VISOTRUST_API_TOKEN": "<your-api-token>",
"VISOTRUST_API_BASEURL": "https://app.visotrust.com"
}
}
}
}
Catatan: Variabel lingkungan JAVA_TOOL_OPTIONS digunakan untuk mengatur opsi JVM untuk debugging jarak jauh. Alamat dan port dapat diubah sesuai kebutuhan.
π» Pengembangan
Pengaturan Docker
Build Docker Image
docker build -t viso-mcp-server .
Jalankan Docker Container
docker run -i --rm -e VISOTRUST_API_TOKEN=<your-api-token> viso-mcp-server
Debugging
Instal MCP Inspector
npm -g install @modelcontextprotocol/inspector
Jalankan MCP Inspector untuk Pengujian
- Build File Jar MCP Server
./gradlew bootJar
- Jalankan MCP Inspector
npx @modelcontextprotocol/inspector \
-e JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=\*:5005 \
-e VISOTRUST_API_TOKEN=<your-api-token> \
java -jar build/libs/viso-mcp-server-<version>.jar \
--port 8080 --host localhost
Ganti <version> dengan versi proyek saat ini (mis., 1.0.0 atau versi dari rilis terbaru).
Pipeline CI/CD
Proyek ini menggunakan GitHub Actions untuk integrasi dan deployment berkelanjutan. Alur kerja mencakup pekerjaan berikut:
Lint
Memeriksa format kode menggunakan Spotless:
./gradlew spotlessCheck
Build
Membangun aplikasi dan membuat file JAR:
./gradlew build
Publish
Saat rilis baru dibuat:
- Memperbarui versi proyek di build.gradle agar sesuai dengan tag rilis
- Mengunggah file JAR ke rilis GitHub dengan versi dari tag rilis
- Membangun dan mendorong image Docker ke Docker Hub dengan tag:
latest- Tag rilis (mis.,
v1.0.0)
Secret yang Diperlukan untuk Publishing
Untuk mengaktifkan publishing ke Docker Hub, tambahkan secret ini ke repositori GitHub Anda:
DOCKERHUB_USERNAME: Nama pengguna Docker Hub AndaDOCKERHUB_TOKEN: Token akses Docker Hub Anda
π οΈ Alat
Bagian ini menyediakan dokumentasi untuk alat yang diekspos oleh VISO MCP Server. Setiap alat memiliki tujuan, parameter input, dan format output tertentu.
Assessments
get_assessment - Dapatkan assessment berdasarkan ID-nya
- id: ID Assessment (angka, wajib)
Mengembalikan informasi detail tentang assessment tertentu.
get_assessment_summary - Dapatkan ringkasan untuk assessment berdasarkan ID-nya
- id: ID Assessment (angka, wajib)
Mengembalikan detail ringkasan untuk assessment tertentu.
create_assessment - Mulai assessment untuk relationship yang sudah ada
- relationshipId: ID relationship yang akan dibuatkan assessment (angka, wajib)
- recipientEmail: Alamat email penerima assessment (string, opsional)
- recipientFirstName: Nama depan penerima assessment (string, opsional)
- recipientLastName: Nama belakang penerima assessment (string, opsional)
- publicDocumentUrls: URL dokumen publik yang akan disertakan dalam assessment (string[], opsional)
- followupType: Jenis tindak lanjut (enum string, opsional)
- followupRiskThreshold: Ambang batas tingkat risiko yang memicu tindak lanjut (enum string, opsional)
- followupTimeline: Linimasa untuk tindakan tindak lanjut (enum string, opsional)
- collectionTimeline: Linimasa bagi vendor untuk menyelesaikan pengiriman assessment (enum string, opsional)
- noVendorResponseAction: Tindakan yang diambil saat vendor tidak merespons (enum string, opsional)
- aiProcessingOnly: Apakah hanya diproses menggunakan AI tanpa tinjauan manusia (boolean, opsional)
- requestedAuditTypes: Jenis audit yang diminta untuk assessment ini (string[], opsional)
Mengembalikan detail assessment yang dibuat.
update_assessment_expiration_date - Perbarui batas waktu vendor harus mengirimkan respons assessment mereka
- id: ID Assessment (angka, wajib)
- expirationDate: Tanggal/waktu kedaluwarsa baru, ISO-8601 dengan offset; harus di masa depan (string, wajib)
Mengembalikan pesan konfirmasi.
update_assessment_followup - Perbarui konfigurasi tindak lanjut untuk assessment
- id: ID Assessment (angka, wajib)
- followupType: Jenis tindak lanjut (enum string, wajib)
- followupRiskThreshold: Ambang batas risiko di mana assessment tindak lanjut harus dipicu (enum string, opsional)
- followupTimeline: Linimasa tindak lanjut (enum string, opsional)
Mengembalikan pesan konfirmasi.
Audit Logs
get_user_audit_log_events - Dapatkan event log audit lingkup pengguna untuk organisasi Anda
- start: Tanggal/waktu mulai kueri, ISO-8601 dengan offset (string, wajib)
- end: Tanggal/waktu akhir kueri, ISO-8601 dengan offset (string, wajib)
- eventTypes: Kumpulan tipe event opsional untuk difilter (mis.
USER_LOGGED_IN); kosongkan untuk semua (string[], opsional)
Mengembalikan daftar event log audit pengguna, dibatasi hingga 500 catatan.
get_audit_log_events - Dapatkan event log audit yang difilter (event pengguna, org, assessment, dan relationship)
- start: Tanggal/waktu mulai kueri, ISO-8601 dengan offset (string, wajib)
- end: Tanggal/waktu akhir kueri, ISO-8601 dengan offset (string, wajib)
- eventTypes: Kumpulan tipe event opsional untuk difilter (mis.
ASSESSMENT_COMPLETED,RELATIONSHIP_CREATED); kosongkan untuk semua (string[], opsional)
Mengembalikan catatan event log audit polimorfik. Setiap item setidaknya memiliki auditEventType dan dateTime.
Business Cases
get_all_business_cases - Dapatkan semua business case yang tersedia untuk organisasi Anda
Tidak ada parameter yang diperlukan.
Mengembalikan daftar semua business case yang tersedia untuk organisasi Anda.
Data Types
get_all_datatypes - Dapatkan semua tipe data yang tersedia untuk organisasi Anda
Tidak ada parameter yang diperlukan.
Mengembalikan daftar semua tipe data yang tersedia untuk organisasi Anda.
Vendor Directory
search_vendor_directory - Cari vendor di direktori vendor VISO TRUST berdasarkan URL atau domain
- urlOrDomain: URL atau nama domain yang akan dicari, mis.
example.com(string, wajib)
Mengembalikan metadata vendor dasar (nama, homepage, deskripsi, favicon, domain yang dikenal).
Relationships
get_all_relationships - Dapatkan daftar semua relationship dan detail assessment-nya
Tidak ada parameter yang diperlukan.
Mengembalikan informasi tentang vendor pihak ketiga termasuk status assessment, tingkat risiko, dan detail kontak.
get_relationship_by_id - Dapatkan relationship tertentu dan detail assessment-nya berdasarkan ID
- id: ID Relationship (angka, wajib)
Mengembalikan informasi detail tentang vendor pihak ketiga termasuk status assessment, tingkat risiko, dan detail kontak.
get_relationship_assessment_history - Dapatkan riwayat assessment untuk sebuah relationship
- id: ID Relationship (angka, wajib)
Mengembalikan daftar assessment yang terkait dengan relationship yang ditentukan.
create_relationship - Buat relationship baru dengan vendor pihak ketiga
- name: Nama relationship/vendor (string, wajib)
- homepage: URL homepage vendor (string, wajib)
- businessOwnerEmail: Alamat email pemilik bisnis (string, wajib)
- businessOwnerFirstName: Nama depan pemilik bisnis (string, opsional)
- businessOwnerLastName: Nama belakang pemilik bisnis (string, opsional)
- description: Deskripsi relationship/vendor (string, opsional)
- contextTypes: Daftar tipe konteks bisnis untuk relationship ini (object[], opsional)
- dataTypes: Daftar tipe data yang ditangani dalam relationship ini (object[], opsional)
- tags: Daftar tag untuk mengkategorikan relationship ini (string[], opsional)
- thirdPartyContact: Detail kontak perwakilan vendor pihak ketiga (object, opsional)
Mengembalikan detail relationship yang dibuat.
create_relationship_by_domain - Buat relationship baru hanya menggunakan domain vendor
- domain: Domain vendor, mis.
visotrust.com(string, wajib) - vendorName: Nama vendor (string, wajib)
- product: Produk yang ditawarkan vendor (string, opsional)
- description: Deskripsi relationship vendor (string, opsional)
Mengembalikan detail relationship yang dibuat.
update_relationship - Perbarui relationship yang sudah ada dengan vendor pihak ketiga
- id: ID Relationship (angka, wajib)
- name: Nama relationship/vendor (string, wajib)
- homepage: URL homepage vendor (string, opsional)
- description: Deskripsi relationship/vendor (string, opsional)
- contextTypes: Daftar tipe konteks bisnis (object[], opsional)
- dataTypes: Daftar tipe data yang ditangani dalam relationship ini (object[], opsional)
- businessOwnerEmail: Alamat email pemilik bisnis (string, opsional)
- businessOwnerFirstName: Nama depan pemilik bisnis (string, opsional)
- businessOwnerLastName: Nama belakang pemilik bisnis (string, opsional)
- tags: Daftar tag (string[], opsional)
Mengembalikan detail relationship yang diperbarui.
partially_update_relationship - Perbarui sebagian relationship yang sudah ada
Menerima field yang sama dengan update_relationship. Hanya field yang disediakan dalam permintaan yang diubah; field lain tidak disentuh.
Mengembalikan detail relationship yang diperbarui.
search_relationships - Cari relationship berdasarkan nama domain atau nama vendor
- domains: Daftar nama domain yang akan dicari (string[], wajib)
- name: Nama vendor/relationship yang akan dicari (string, wajib)
Mengembalikan daftar relationship yang cocok beserta detail assessment-nya.
create_tags - Buat tag baru untuk mengkategorikan relationship
- tags: Daftar nama tag yang akan dibuat (string[], wajib)
Mengembalikan daftar semua tag termasuk yang baru dibuat.
update_third_party_contact - Perbarui detail kontak untuk vendor pihak ketiga
- relationshipId: ID Relationship (angka, wajib)
- email: Email kontak (string, wajib)
- firstName: Nama depan kontak (string, wajib)
- lastName: Nama belakang kontak (string, wajib)
Mengembalikan detail relationship yang diperbarui.
onboard_relationship - Onboard suatu hubungan, secara opsional dengan ringkasan persetujuan dan pengaturan manajemen siklus hidup
- id: ID Hubungan (angka, wajib)
- approvalSummary: Ringkasan persetujuan opsional yang dicatat saat onboarding (string, opsional)
- lifecycleManagementUpdateRequest: Pengaturan manajemen siklus hidup opsional (objek, opsional)
- artifactUpdateSettings.artifactUpdateType: Tipe pembaruan artefak (enum string)
- recertificationSettings.recertificationType: Tipe resertifikasi (enum string)
- recertificationSettings.recertificationDate: Tanggal/waktu resertifikasi berikutnya, ISO-8601 dengan offset (string)
- recertificationSettings.reviewFrequency:
THREE_YEARS,TWO_YEARS,ANNUAL,SEMIANNUAL, atauQUARTERLY(enum string)
Mengembalikan detail hubungan yang telah di-onboard.
offboard_relationship - Offboard suatu hubungan
- id: ID Hubungan (angka, wajib)
Mengembalikan detail hubungan yang telah di-offboard.
archive_relationship - Arsipkan suatu hubungan
- id: ID Hubungan (angka, wajib)
Mengembalikan detail hubungan yang telah diarsipkan.
Webhooks
get_all_webhooks - Dapatkan semua webhook
Tidak ada parameter yang diperlukan.
Mengembalikan daftar semua konfigurasi webhook.
get_webhook - Dapatkan konfigurasi webhook berdasarkan id
- id: ID Webhook (angka, wajib)
Mengembalikan detail konfigurasi webhook tertentu.
create_webhook_configuration - Buat konfigurasi webhook
- request: Parameter pembuatan webhook (objek, wajib)
- url: URL Webhook (string, wajib)
- secret: Rahasia webhook (string, wajib)
- eventTypes: Jenis peristiwa yang memicu webhook (string[], wajib)
- serviceType: Jenis layanan untuk webhook (string, wajib)
Mengembalikan konfigurasi webhook yang dibuat.
update_webhook_configuration - Perbarui konfigurasi webhook
- request: Parameter pembaruan webhook (objek, wajib)
- id: ID Webhook (angka, wajib)
- url: URL Webhook (string, opsional)
- secret: Rahasia webhook (string, opsional)
- eventTypes: Jenis peristiwa yang memicu webhook (string[], opsional)
- serviceType: Jenis layanan untuk webhook (string, opsional)
Mengembalikan konfigurasi webhook yang diperbarui.
delete_webhook_configuration - Hapus konfigurasi webhook
- id: ID Webhook (angka, wajib)
Menghapus konfigurasi webhook yang ditentukan.
Laporan Intelijen
create_bitsight_intelligence_report - Buat laporan intelijen BitSight baru
- request: Parameter laporan BitSight (objek, wajib)
- vendorDomain: Nama domain utama vendor (string, wajib)
- reportDate: Tanggal/waktu laporan dibuat (string ISO 8601, wajib)
- link: Tautan opsional ke UI penyedia (string, opsional)
- guid: GUID BitSight untuk entitas (string, wajib)
- customId: Pengenal kustom dari BitSight (string, opsional)
- name: Nama tampilan entitas BitSight (string, opsional)
- description: Deskripsi entitas BitSight (string, opsional)
- primaryDomain: Domain utama untuk entitas BitSight (string, opsional)
- ratingRange: Rentang peringkat BitSight (string, opsional)
- ratingColor: Warna peringkat BitSight (string, opsional)
- confidence: Tingkat keyakinan peringkat BitSight (string, opsional)
Mengembalikan laporan intelijen yang dibuat.
create_security_scorecard_intelligence_report - Buat laporan intelijen SecurityScorecard baru
- request: Parameter laporan SecurityScorecard (objek, wajib)
- vendorDomain: Nama domain utama vendor (string, wajib)
- reportDate: Tanggal/waktu laporan dibuat (string ISO 8601, wajib)
- link: Tautan opsional ke UI penyedia (string, opsional)
- grade: Nilai huruf SecurityScorecard (string, wajib)
- domain: Domain yang terkait dengan entitas scorecard (string, opsional)
- score: Skor numerik dari SecurityScorecard (angka, opsional)
Mengembalikan laporan intelijen yang dibuat.
create_recorded_future_intelligence_report - Buat laporan intelijen Recorded Future baru
- request: Parameter laporan Recorded Future (objek, wajib)
- vendorDomain: Nama domain utama vendor (string, wajib)
- reportDate: Tanggal/waktu laporan dibuat (string ISO 8601, wajib)
- entityType: Tipe entitas Recorded Future, mis.
Company(string, wajib) - entity: Pengenal entitas Recorded Future (string, wajib)
- riskScore: Skor risiko numerik (angka, wajib)
- riskLevel: Label tingkat risiko, mis.
Critical/High/Medium/Low(string, wajib) - link: Tautan opsional ke laporan di UI penyedia (string, opsional)
- firstSeen: Tanggal teramati paling awal untuk entitas, ISO 8601 (string, opsional)
- lastSeen: Tanggal teramati terbaru untuk entitas, ISO 8601 (string, opsional)
- triggeredRuleCount: Jumlah aturan Recorded Future yang telah terpicu (angka, opsional)
- maxRuleCount: Jumlah maksimum aturan Recorded Future yang dievaluasi (angka, opsional)
- summary: Teks ringkasan opsional dari Recorded Future (string, opsional)
- criticalityLabel: Label kekritisan Recorded Future untuk entitas (string, opsional)
Mengembalikan laporan intelijen yang dibuat.
get_intelligence_reports_by_vendor - Dapatkan semua laporan intelijen untuk vendor
- vendorDomain: Nama domain utama vendor (string, wajib)
Mengembalikan daftar laporan intelijen untuk vendor yang ditentukan.
get_latest_intelligence_report - Dapatkan laporan intelijen terbaru untuk vendor dari sumber tertentu
- vendorDomain: Nama domain utama vendor (string, wajib)
- source: Penyedia intelijen (enum string:
BITSIGHT,SECURITY_SCORECARD, atauRECORDED_FUTURE, wajib)
Mengembalikan laporan intelijen terbaru untuk vendor dan sumber yang ditentukan.
Pengguna
get_all_users - Dapatkan semua pengguna di organisasi Anda
- page: Halaman hasil yang akan diambil (angka, opsional; default 0)
- size: Jumlah catatan per halaman (angka, opsional; default 20)
- sort: Kriteria pengurutan dalam format: property(,asc|desc) (string, opsional)
Mengembalikan daftar pengguna yang dipaginasi.
get_user_by_email - Dapatkan pengguna berdasarkan email
- email: Alamat email pengguna (string, wajib)
Mengembalikan detail pengguna.
create_user - Buat pengguna baru
- request: Parameter pembuatan pengguna (objek, wajib)
- email: Alamat email pengguna baru (string, wajib)
- firstName: Nama depan pengguna baru (string, wajib)
- lastName: Nama belakang pengguna baru (string, wajib)
Mengembalikan pengguna yang dibuat.
Pemformatan Kode
Proyek ini menggunakan Spotless dengan Google Java Format untuk pemformatan kode. Hook pra-komit secara otomatis disiapkan untuk memastikan gaya kode yang konsisten.
Penyiapan
Setelah mengkloning repositori, hook pra-komit akan otomatis disiapkan saat Anda menjalankan perintah Gradle apa pun.
Pemformatan Manual
Untuk memformat semua file secara manual:
./gradlew spotlessApply
Untuk memeriksa apakah file telah diformat dengan benar:
./gradlew spotlessCheck
Jika hook pra-komit menolak komit Anda karena masalah pemformatan, cukup jalankan ./gradlew spotlessApply untuk memperbaiki pemformatan lalu coba komit lagi.
Lisensi
Proyek ini dilisensikan di bawah Lisensi MIT - lihat file LICENSE untuk detailnya.