A Model Context Protocol (MCP) server for integrating VISO TRUST API capabilities with AI assistants.
- Java 21+
- Gradle
- Docker (optional for containerized deployment)
- MCP Inspector (optional for testing)
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.
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
- Build MCP Server Jar File
./gradlew bootJar
- Run 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
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:
- Updates the project version in build.gradle to match the release tag
- Uploads the JAR file to the GitHub release with the version from the release tag
- Builds and pushes the Docker image to Docker Hub with tags:
latest
- The release tag (e.g.,
v1.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 token
This section provides documentation for the tools exposed by the VISO MCP Server. Each tool has a specific purpose, input parameters, and output format.
- id: Assessment ID (number, required)
Returns detailed information about a specific assessment.
- relationshipId: The ID of the relationship for which to create an assessment (number, required)
- recipientEmail: The email of the recipient (string, required)
- recipientFirstName: The first name of the recipient (string, required)
- recipientLastName: The last name of the recipient (string, required)
- publicDocumentUrls: URLs of public documents (string[], optional)
- followupType: The type of followup (string, required)
- followupRiskThreshold: The risk threshold for followup (string, optional)
- aiProcessingOnly: Whether to use AI processing only (boolean, optional)
- files: Files to include with the assessment (byte[][], optional)
Returns the created assessment details.
- request: Audit log request parameters (object, required)
- startDate: Start date for the audit log events (string, required)
- endDate: End date for the audit log events (string, required)
- auditLogType: Type of audit log events to retrieve (string, optional)
Returns a list of user audit log events, limited to 500 records.
No parameters required.
Returns a list of all business cases available for your organization.
No parameters required.
Returns a list of all data types available for your organization.
- request: Trust center query parameters (object, required)
- query: The question to ask (string, required)
Returns AI-generated responses to questions about your AI Trust Center.
- request: Relationship query parameters (object, required)
- relationshipId: The ID of the relationship to query (number, required)
- query: The question to ask (string, required)
Returns AI-generated responses to questions about a specific relationship.
No parameters required.
Returns information about third-party vendors including their assessment status, risk levels, and contact details.
- id: Relationship ID (number, required)
Returns detailed information about a third-party vendor including assessment status, risk levels, and contact details.
- request: Relationship creation parameters (object, required)
- vendorName: Name of the vendor (string, required)
- businessOwnerEmail: Email of the business owner (string, required)
- homepage: Vendor's homepage URL (string, optional)
- businessContextIds: IDs of business contexts (number[], optional)
- dataTypeIds: IDs of data types (number[], optional)
- tags: Tags to apply to the relationship (string[], optional)
Returns the created relationship details.
- request: Relationship update parameters (object, required)
- id: Relationship ID (number, required)
- vendorName: Name of the vendor (string, optional)
- homepage: Vendor's homepage URL (string, optional)
- businessContextIds: IDs of business contexts (number[], optional)
- dataTypeIds: IDs of data types (number[], optional)
- businessOwnerEmail: Email of the business owner (string, optional)
- tags: Tags to apply to the relationship (string[], optional)
Returns the updated relationship details.
- request: Partial relationship update parameters (object, required)
- id: Relationship ID (number, required)
- [Any fields from update_relationship that need to be changed]
Returns the updated relationship details with only the specified fields changed.
- request: Search parameters (object, required)
- query: Search query (string, required)
Returns a list of matching relationships with their assessment details.
- request: Tag creation parameters (object, required)
- tags: List of tags to create (string[], required)
Returns a list of all tags including the newly created ones.
- request: Contact update parameters (object, required)
- relationshipId: Relationship ID (number, required)
- email: Contact email (string, required)
- firstName: Contact first name (string, required)
- lastName: Contact last name (string, required)
Returns the updated relationship details.
- relationshipId: Relationship ID (number, required)
Returns a list of potential contacts at the vendor organization.
No parameters required.
Returns a list of all webhook configurations.
- id: Webhook ID (number, required)
Returns details of a specific webhook configuration.
- request: Webhook creation parameters (object, required)
- url: Webhook URL (string, required)
- secret: Webhook secret (string, required)
- eventTypes: Types of events to trigger the webhook (string[], required)
- serviceType: Type of service for the webhook (string, required)
Returns the created webhook configuration.
- request: Webhook update parameters (object, required)
- id: Webhook ID (number, required)
- url: Webhook URL (string, optional)
- secret: Webhook secret (string, optional)
- eventTypes: Types of events to trigger the webhook (string[], optional)
- serviceType: Type of service for the webhook (string, optional)
Returns the updated webhook configuration.
- id: Webhook ID (number, required)
Deletes the specified webhook configuration.
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.