Are you the author? Sign in to claim
viso-mcp-server
A Model Context Protocol (MCP) server for integrating VISO TRUST API capabilities with AI assistants.
VISO TRUST hosts a managed instance of this MCP server, so you don't need to build, run, or self-host anything to get started:
https://mcp.visotrust.com/mcp
Connect any MCP client to this endpoint using the Streamable HTTP transport and authenticate with your VISO TRUST API token. For information on how to generate an API token, see the VISO TRUST support documentation.
Example client configuration:
{
"mcpServers": {
"viso-mcp": {
"type": "streamable-http",
"url": "https://mcp.visotrust.com/mcp",
"headers": {
"Authorization": "Bearer <your-api-token>"
}
}
}
}
To test the hosted endpoint with MCP Inspector, run npx @modelcontextprotocol/inspector, set Transport Type to Streamable HTTP, and use the URL above.
The remainder of this document covers running the server yourself (locally or in your own infrastructure).
The following properties can be configured for the VISO TRUST API:
visotrust.api.base-url: The base URL for the VISO TRUST API (default: http://localhost:8080)visotrust.api.token: Your API token from the VISO TRUST platform (required)visotrust.api.timeout: API request timeout in milliseconds (default: 30000)visotrust.api.connect-timeout: API connection timeout in milliseconds (default: 5000)For information on how to generate an API token for the visotrust.api.token environment variable, see the VISO TRUST support documentation.
This application supports Spring Boot profiles to enable different configurations for different deployment scenarios.
The remote profile is designed for remote MCP support over the Streamable HTTP transport. This profile runs the server as a web application so it can communicate with remote clients over HTTP. (Streamable HTTP replaces the deprecated SSE transport; here it is configured in stateless mode.)
Key differences in the remote profile:
3001 instead of standard I/OPOST /mcp (Streamable HTTP)Note: Clients connect to the single Streamable HTTP endpoint
…/mcp. The legacy SSE endpoints (/sse+/mcp/message) are no longer served.
How to activate the remote profile:
When running with Java directly:
java -jar viso-mcp-server-<version>.jar --spring.profiles.active=remote
When running with Gradle:
./gradlew bootRun --args="--spring.profiles.active=remote"
When using Docker:
docker run -i --rm \
-e VISOTRUST_API_TOKEN=<your-api-token> \
-e SPRING_PROFILES_ACTIVE=remote \
viso-mcp-server
When to use the remote profile:
For local development and direct stdio communication, use the default profile (no profile specification needed).
Click one of the buttons below to install the VISO MCP Server in VS Code:
Add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing 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}"
}
}
}
}
}
Optionally, you can add a similar example (i.e. without the mcp key) to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.
{
"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}"
}
}
}
}
{
"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"
}
}
}
}
{
"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"
}
}
}
}
Note: The JAVA_TOOL_OPTIONS environment variable is used to set the JVM options for remote debugging. The address and port can be changed as needed.
docker build -t viso-mcp-server .
docker run -i --rm -e VISOTRUST_API_TOKEN=<your-api-token> viso-mcp-server
npm -g install @modelcontextprotocol/inspector
./gradlew bootJar
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
Replace <version> with the current version of the project (e.g., 1.0.0 or the version from the latest release).
This project uses GitHub Actions for continuous integration and deployment. The workflow includes the following jobs:
Checks code formatting using Spotless:
./gradlew spotlessCheck
Builds the application and creates a JAR file:
./gradlew build
When a new release is created:
latestv1.0.0)To enable Docker Hub publishing, add these secrets to your GitHub repository:
DOCKERHUB_USERNAME: Your Docker Hub usernameDOCKERHUB_TOKEN: Your Docker Hub access tokenThis section provides documentation for the tools exposed by the VISO MCP Server. Each tool has a specific purpose, input parameters, and output format.
get_assessment - Get an assessment by its IDReturns detailed information about a specific assessment.
get_assessment_summary - Get the summary for an assessment by its IDReturns the summary details for a specific assessment.
create_assessment - Start an assessment for an existing relationshipReturns the created assessment details.
update_assessment_expiration_date - Update the deadline by which the vendor must submit their assessment responseReturns a confirmation message.
update_assessment_followup - Update the follow-up configuration for an assessmentReturns a confirmation message.
get_user_audit_log_events - Get user-scoped audit log events for your organizationUSER_LOGGED_IN); leave empty for all (string[], optional)Returns a list of user audit log events, limited to 500 records.
get_audit_log_events - Get filtered audit log events (user, org, assessment, and relationship events)ASSESSMENT_COMPLETED, RELATIONSHIP_CREATED); leave empty for all (string[], optional)Returns polymorphic audit log event records. Each item has at least auditEventType and dateTime.
get_all_business_cases - Get all available business cases for your organizationNo parameters required.
Returns a list of all business cases available for your organization.
get_all_datatypes - Get all available data types for your organizationNo parameters required.
Returns a list of all data types available for your organization.
search_vendor_directory - Look up a vendor in the VISO TRUST vendor directory by URL or domainexample.com (string, required)Returns basic vendor metadata (name, homepage, description, favicon, known domains).
get_all_relationships - Get a list of all relationships and their assessment detailsNo parameters required.
Returns information about third-party vendors including their assessment status, risk levels, and contact details.
get_relationship_by_id - Get a specific relationship and its assessment details by IDReturns detailed information about a third-party vendor including assessment status, risk levels, and contact details.
get_relationship_assessment_history - Get the assessment history for a relationshipReturns a list of assessments associated with the specified relationship.
create_relationship - Create a new relationship with a third-party vendorReturns the created relationship details.
create_relationship_by_domain - Create a new relationship using only the vendor domainvisotrust.com (string, required)Returns the created relationship details.
update_relationship - Update an existing relationship with a third-party vendorReturns the updated relationship details.
partially_update_relationship - Partially update an existing relationshipAccepts the same fields as update_relationship. Only fields provided in the request are changed; other fields are left untouched.
Returns the updated relationship details.
search_relationships - Search for relationships by domain name or vendor nameReturns a list of matching relationships with their assessment details.
create_tags - Create new tags for categorizing relationshipsReturns a list of all tags including the newly created ones.
update_third_party_contact - Update the contact details for a third-party vendorReturns the updated relationship details.
onboard_relationship - Onboard a relationship, optionally with approval summary and lifecycle management settingsTHREE_YEARS, TWO_YEARS, ANNUAL, SEMIANNUAL, or QUARTERLY (string enum)Returns the onboarded relationship details.
offboard_relationship - Offboard a relationshipReturns the offboarded relationship details.
archive_relationship - Archive a relationshipReturns the archived relationship details.
get_all_webhooks - Get all webhooksNo parameters required.
Returns a list of all webhook configurations.
get_webhook - Get a webhook configuration by idReturns details of a specific webhook configuration.
create_webhook_configuration - Create a webhook configurationReturns the created webhook configuration.
update_webhook_configuration - Update a webhook configurationReturns the updated webhook configuration.
delete_webhook_configuration - Delete a webhook configurationDeletes the specified webhook configuration.
create_bitsight_intelligence_report - Create a new BitSight intelligence reportReturns the created intelligence report.
create_security_scorecard_intelligence_report - Create a new SecurityScorecard intelligence reportReturns the created intelligence report.
create_recorded_future_intelligence_report - Create a new Recorded Future intelligence reportCompany (string, required)Critical/High/Medium/Low (string, required)Returns the created intelligence report.
get_intelligence_reports_by_vendor - Get all intelligence reports for a vendorReturns a list of intelligence reports for the specified vendor.
get_latest_intelligence_report - Get the latest intelligence report for a vendor from a specific sourceBITSIGHT, SECURITY_SCORECARD, or RECORDED_FUTURE, required)Returns the latest intelligence report for the specified vendor and source.
get_all_users - Get all users in your organizationReturns a paginated list of users.
get_user_by_email - Get a user by emailReturns the user details.
create_user - Create a new userReturns the created user.
This project uses Spotless with Google Java Format for code formatting. A pre-commit hook is automatically set up to ensure consistent code style.
After cloning the repository, the pre-commit hook will be automatically set up when you run any Gradle command.
To manually format all files:
./gradlew spotlessApply
To check if files are formatted correctly:
./gradlew spotlessCheck
If the pre-commit hook rejects your commit due to formatting issues, simply run ./gradlew spotlessApply to fix the formatting and then try committing again.
This project is licensed under the MIT License - see the LICENSE file for details.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows