MCP Server 3.1 installation on Microsoft Windows
Overview
This guide covers the installation of CAST Imaging MCP Server 3.1.0-beta4 or later on Microsoft Windows. It’s intended for:
- Direct installation on Microsoft Windows
- new installations (i.e. from scratch)
- in-place updates from an earlier release
Release 3.1.0 is a beta release. For MCP Server 3.0.x and earlier, see MCP Server installation on Microsoft Windows.
The installation package com.castsoftware.imaging.mcpserver includes an installation script (.bat file), various configuration files and the binaries themselves.
Architecture
The installer deploys an MCP Aggregator Gateway and the three MCP servers behind it - structural, semantic search and Text2Cypher - as a single Windows service, displayed as CAST Imaging MCP Server, with the service name cast-imaging-mcp-server. Your MCP-aware client always connects to CAST Imaging, which redirects MCP requests to the MCP Aggregator Gateway; the gateway then routes each request to the MCP server able to answer it, presenting the tools of all enabled MCP servers as a single tool surface. See Architecture for how the components fit together.
Starting the service starts the three MCP servers first and then the gateway which fronts them, because the gateway collects their tools as it starts. In the CAST Imaging Control Panel the service registers as MCPSERVER.
The installed layout is as follows:
INSTALL_DIR\
mcp-gateway\ the gateway, its service scripts, and a folder per MCP server
tools\
CONFIG_DIR\
setup-config\app.config every setting, for the gateway and all three MCP servers
logs\ one folder per MCP server, plus the service log
All three MCP servers are installed whether or not they are enabled, so you can turn one on or off later without re-running the installer - see Choosing which MCP servers run.
Requirements
MCP Server is a standalone component and can therefore be installed wherever convenient in your local environment, e.g. on a dedicated machine, or on a machine already used by other CAST Imaging components.
When using a dedicated machine, CAST recommends following the general hardware and software requirements but note that the component does not require:
- a Java JRE/JDK
Other requirements:
- TCP port 8285 must be reachable from the machine hosting CAST Imaging, which is where MCP requests are redirected from - this is the MCP Aggregator Gateway port. You can change it in the
configuration.conffile (see below). Your MCP-aware clients do not connect to this port and do not need access to it. AI Mode also requires this port to be reachable from the machine on which theimaging-viewercomponent is installed - the three MCP servers behind the gateway use ports 8282 (structural), 8287 (semantic search) and 8289 (Text2Cypher) on this machine: your clients never connect to these, so change one only where it clashes with something else on the machine
- a Neo4j instance reachable from this machine over Bolt - typically the machine where the
imaging-viewercomponent is installed. Semantic search and Text2Cypher both read the CAST Imaging knowledge graph from Neo4j. Disable those MCP servers if Neo4j is not available in your environment - see Choosing which MCP servers run - see software requirements for more information about supported Microsoft Windows OS versions
- a minimum of 2GB free disk space
- an MCP-aware client such as GitHub Copilot (Visual Studio Code)
- a functioning release of CAST Imaging (MCP Server interacts with the
imaging-servicescomponent) in your network (see CAST Imaging compatibility below) - a CAST Imaging API key, see Generating an API key.
Available in ≥ 3.6.6-funcrelAlternatively, Claude Code and Visual Studio Code can sign in through the browser using OAuth - see Authenticate MCP clients with OAuth
The installation stops if a port you name in configuration.conf is already in use on the machine. Leave a port empty to keep the default shown.
CAST Imaging compatibility
| MCP Server release | Required API version/CAST Imaging release |
|---|---|
| ≥ 3.1.0-beta6 | ≥ 3.6.8-funcrel |
| 3.1.0-beta4, 3.1.0-beta5 | ≥ 3.6.7-funcrel |
| 3.1.0-beta3 | ≥ 3.6.5-funcrel |
- OAuth authentication for MCP-aware clients is the one exception: it requires CAST Imaging 3.6.6-funcrel or later - see Authenticate MCP clients with OAuth. All other functionality works from 3.6.5-funcrel.
- It is possible to check the current CAST MCP Server release, the connected CAST Imaging API version, and the recommended CAST Imaging API version for the CAST MCP Server in use by asking “What is the version of my MCP server and Imaging APIs? Are these services compatible?”
- For MCP Server 3.0.x and earlier, see MCP Server installation on Linux via Docker or MCP Server installation on Microsoft Windows.
MCP-aware client connection routing
Your MCP-aware clients connect to CAST Imaging via its public gateway - not direct to the MCP Server. A minimum CAST Imaging release is therefore required as the target installation to ensure proper routing back to the MCP Server - see CAST Imaging compatibility above.
Requests whose route contains /mcp are redirected to the MCP Aggregator Gateway, which then routes each request to the MCP server able to answer it. The MCP Aggregator Gateway registers itself with the CAST Imaging service registry (the Control Panel) under the same name the MCP Server used in earlier releases, so neither CAST Imaging nor your clients need reconfiguring after an update.
HTTPS
If you require a secure HTTPS connection between your MCP-aware client and the MCP Server, you must enable HTTPS on the CAST Imaging gateway - see HTTPS configuration.
- If the CAST Imaging gateway is configured in HTTPS mode, then the
CONTROL_PANEL_SSL_ENABLEDoption must be set to true in the MCP Server itself (see Step 3 - Configure your installation). - If the CAST Imaging gateway is configured in HTTPS mode with self-signed or private certificate authority SSL/TLS certificates, then you will need to ALSO define the path to the self-signed certificate chain once the installation has completed. See below.
Recommended LLMs
Multiple LLM providers are supported; however, not all models perform equally when it comes to tool invocation, reasoning, and response reliability. During internal testing, the Claude Haiku 4.5 and Claude Sonnet 4/4.5 models consistently delivered the best results, especially for a wide range of user queries, from simple to highly complex, with strong consistency and minimal hallucinations. Findings are listed below:
| Provider | Recommended model | Notes |
|---|---|---|
| Claude (Anthropic) | Claude Sonnet 4.6/ Sonnet 4.5 | Most reliable for complex queries requiring multiple tool calls and high-accuracy reasoning. Strong natural-language understanding and minimal hallucinations. |
| Claude (Anthropic) | Claude Haiku 4.5 | Fast, efficient, and cost-effective. Well-suited for simpler queries while still maintaining good accuracy. |
| ChatGPT (OpenAI) | GPT-5.2/ GPT-5.1/ GPT-5 | Solid overall models for simple to moderately complex user queries. |
| ChatGPT (OpenAI) | GPT-4.1/ GPT-5 mini | Lower token consumption and suitable primarily for very basic queries. |
What’s new?
See the release notes.
Installation process
Step 1 - Verify connection to CAST Imaging
Before proceeding, ensure you can access CAST Imaging (the imaging-services component) from the machine where you intend to install MCP Server by running the following (tailored to your own environment):
curl -H "x-api-key: <your-imaging-api-key>" http://<your_imaging_public_URL>:8090/rest/ready
The expected output is true.
Step 2 - Download the installation media
Download the latest release of the installer (com.castsoftware.imaging.mcpserver ) and unzip it anywhere on your local disk. The following files/folders will be created:
com.castsoftware.imaging.mcpserver.<version>/
├── mcpserver
├── tools
├── configuration.conf
├── copilot-instructions.md
├── mcp-server-installer.bat
├── mcpserver_syncronization.bat
└── README.md
mcpserver_syncronization.bat starts the service if it is stopped and confirms that the gateway and every enabled MCP server is healthy - see Step 4 - Run the installation.
Step 3 - Configure your installation
Locate the configuration.conf file at the root of the unzipped installation media. Open the file with a text editor and update the installation variables to match your environment.
The file is read once, at install time, and its values are written to the deployed app.config file which the gateway and all three MCP servers read - see Updating configuration after installation.
HOSTNAME_CONTROL_PANEL=<imaging-services-machine> # Required: IP address/hostname/FQDN of the machine on which the CAST Imaging "imaging-services" component is installed. The use of "localhost" is not supported.
SERVICE_HOST=localhost # Required: IP address/hostname/FQDN of the machine on which the MCP Server will be installed (i.e. the current machine). Do not leave this set as "localhost".
PORT_CONTROL_PANEL=8098 # Default port on which the CAST Imaging Control Panel service (part of the "imaging-services" component) is running - unless you have changed this during the CAST Imaging installation, leave it as is
INSTALL_DIR=C:\Program Files\CAST\Imaging-MCP-Server # Default installation location
CONFIG_DIR=C:\ProgramData\CAST\Imaging-MCP-Server # Default config setting files location
CONTROL_PANEL_SSL_ENABLED=false # When set to true, allows communication with a CAST Imaging instance which is configured to use HTTPS.
SSL_CA_BUNDLE= # Sets the path to a self-signed certificate chain exported to file, typically in **Base-64 PEM** format. Only necessary where CAST Imaging is configured in HTTPS mode with SSL/TLS certificates issued by a **private** or **self-signed certificate authority** (CA).
# Ports
MCP_GATEWAY_PORT=8285 # The port CAST Imaging redirects MCP requests to. Clients never connect to it directly, and everything behind it is internal.
MCP_SERVER_PORT=8282 # Port the structural MCP server listens on. Clients never connect to this.
MCP_SEMANTIC_PORT=8287 # Port the semantic search MCP server listens on. Clients never connect to this.
MCP_TEXT_TO_CYPHER_PORT=8289 # Port the Text2Cypher MCP server listens on. Clients never connect to this.
# Which MCP servers the gateway offers
STRUCTURAL_MCP_ENABLED=true # Turn one off where its dependencies are not available - the semantic search and Text2Cypher servers both need Neo4j. See "Choosing which MCP servers run" below.
SEMANTIC_MCP_ENABLED=true
TEXT_TO_CYPHER_MCP_ENABLED=true
# Neo4j - required by the semantic search and Text2Cypher MCP servers
GRAPHRAG_ENABLED=true # Set to true to expose the GraphRAG MCP tools.
NEO4J_URL=bolt://<neo4j-host>:7687 # Bolt URL of the Neo4j instance holding the CAST Imaging knowledge graph
NEO4J_USER=neo4j # Neo4j user
NEO4J_PASSWORD=<password> # Neo4j password
# Tool exposure
STRUCTURAL_MCP_TOOL_SURFACE_PROFILE=intents # Tool exposure profile for the structural MCP server: "intents" (the default) or "full". Replaces MCP_TOOL_SURFACE_PROFILE.
STRUCTURAL_MCP_INTENTS_HIDDEN_FUNCTIONS= # Structural capability names to hide when using "STRUCTURAL_MCP_TOOL_SURFACE_PROFILE=intents". Replaces MCP_INTENTS_HIDDEN_FUNCTIONS.
SEMANTIC_MCP_TOOL_SURFACE_PROFILE=intents # Tool exposure profile for semantic search, using the same values.
SEMANTIC_MCP_INTENTS_HIDDEN_FUNCTIONS= # Semantic capability names to hide when using "SEMANTIC_MCP_TOOL_SURFACE_PROFILE=intents".
SEMANTIC_MCP_CONVERSATIONAL_MEMORY_ENABLED=false # When set to true, exposes the conversational memory tools which let an agent persist and search knowledge gathered during a conversation. Requires Neo4j and configured embeddings.
# CAST Imaging query behaviour - applies to the structural and semantic search MCP servers
IMAGING_PAGE_SIZE=1000 # Sets the number of records the MCP server fetches per request (internal batching).
IMAGING_DISPLAY_PAGE_SIZE=20 # Sets how many records are shown per page in the user-facing response
IMAGING_CODE=false # Defines whether the application source code is accessible to the MCP Server or not: when it is set to false source code (from the CAST Imaging analysis results) cannot be accessed by the MCP Server and therefore source code will not figure in any results returned by MCP Server
IMAGING_DOMAIN="default" # Defines the target domain/tenant to work with. Only valid when IMAGING_DOMAIN_SYNCHRO_ENABLED=true in CAST Imaging.
# Telemetry
TELEMETRY_ENABLED=true # Enables local telemetry for MCP tool calls, written in JSON Lines (JSONL) format. Default is "true". See the note below.
TELEMETRY_PUSH_ENABLED=true # Periodically pushes the local telemetry log to CAST. Set to false to keep telemetry on this machine only. No effect when TELEMETRY_ENABLED=false.
TELEMETRY_PUSH_INTERVAL_MINUTES=120 # Defines how often the push runs.
# Logging
DEBUG_MODE=false # Sets the log level verbosity of the structural and semantic search MCP servers. Set to true if verbose logs are required.
LOG_LEVEL=INFO # Log level for the gateway and the Text2Cypher MCP server. Supported values are INFO and DEBUG. See the note below.
The use of localhost for the HOSTNAME_CONTROL_PANEL variable is not supported, even if the imaging-services component is installed on the same machine as MCP Server. Use an IP address/hostname/FQDN instead.
- See Meta Tool mode for more information about the tool surface profile and hidden function settings.
- The semantic search MCP server’s AI/embedding provider keys and GraphRAG index names keep sensible defaults and do not need to be set here. Configure embeddings in CAST Imaging - see AI settings.
- Logging uses two separate settings on Microsoft Windows:
LOG_LEVEL(INFOorDEBUG) for the gateway and Text2Cypher, and the older booleanDEBUG_MODEfor the structural and semantic search MCP servers. Set both to raise verbosity across the whole deployment. The Docker installer exposesLOG_LEVELalone and derivesDEBUG_MODEfrom it, so the option names differ between the two installers even though the underlying components are the same - see MCP Server installation on Linux via Docker. - Log file paths come from the Windows service rather than from
configuration.conf, and are not configurable - see Logs.
Step 4 - Run the installation
Open a CMD window with elevated permissions (right click, Run as administrator) and execute the following command from the root of the unzipped files:
mcp-server-installer.bat --install configuration.conf
On completion, check that a Microsoft Windows service named CAST Imaging MCP Server has been created and is up and running. Its underlying service name is cast-imaging-mcp-server.
The installation finishes by health-checking the endpoint: a successful run means the service started, every enabled MCP server came up, and the endpoint answered. To confirm the state of the deployment at any time, run the following from an elevated prompt:
cd /d "%INSTALL_DIR%"
mcpserver_syncronization.bat
This starts the service if it is stopped, waits for the endpoint and every MCP server behind it to report healthy, prints the state of each one, and exits non-zero if any of them never comes up. Pass true to check over HTTPS instead of HTTP.
To check by hand instead:
curl http://<SERVICE_HOST>:<MCP_GATEWAY_PORT>/mcpserver/healthcheck
curl http://<SERVICE_HOST>:<MCP_GATEWAY_PORT>/mcp/status
/mcp/status returns 200 only when every enabled MCP server is healthy, and names the state of each one, so an MCP server which is down reads differently.
- Microsoft Windows does not always bring a service back after a reboot. Consider scheduling
mcpserver_syncronization.batas an elevated Windows task at startup. - If you want to check that the MCP Server is up and running, you should leverage MCP Inspector to do so (this is beyond the scope of this documentation). Direct calls to the MCP Server URL from a browser will result in a
.jsonreturn stating “Not Acceptable: Client must accept text/event-stream”.
Step 5 - Configure your MCP-aware client (GitHub Copilot for Visual Studio Code)
The instructions below use a CAST Imaging API key. With CAST Imaging 3.6.6-funcrel or later, Claude Code and Visual Studio Code can sign in through the browser using OAuth instead - see Authenticate MCP clients with OAuth.
Install GitHub Copilot extension
Install the GitHub Copilot extension (see https://marketplace.visualstudio.com/items?itemName=GitHub.copilot ) in Visual Studio Code, ensure you are signed in to GitHub and clone the repository you need to work with.
Create mcp.json file
Create an mcp.json configuration file and place it in the .vscode/ folder for your Visual Studio Code workspace. The mcp.json must use the following template:
{
"inputs": [
{
"id": "imaging-key",
"type": "promptString",
"description": "CAST Imaging API Key"
},
{
"id": "imaging-tenant",
"type": "promptString",
"description": "Imaging tenant"
}
],
"servers": {
"imaging": {
"type": "http",
"url": "http[s]://<fqdn-or-IP-address-imaging-services-machine:[port]>/mcp",
"headers": {
"x-api-key": "${input:imaging-key}",
"x-user-tenant": "${input:imaging-tenant}"
}
}
}
}
where:
"imaging-key"is your CAST Imaging API key (you will be prompted for this)"imaging-tenant"is the name of the target domain (tenant) - see domain mapping - you will be prompted for this. This item is optional and can be omitted entirely (remove thex-user-tenant lineas well) if you only have one domain (tenant)."url"is the IP address/FQDN and port number (8090by default in http mode) of the machine on which the CAST Imagingimaging-servicescomponent is installed. If HTTPS mode has been configured on CAST Imaging for end-user access, usehttps://<fqdn-or-IP-address-imaging-services-machine:[port]>/mcp.
If you prefer not to be prompted for the CAST Imaging API key, or the optional domain (tenant) name, you can “hardcode” them in the mcp.json file as follows, replacing <imaging-key> and <domain/tenant-name> in the headers entry with appropriate values:
{
"inputs": [
{
"id": "imaging-key",
"type": "promptString",
"description": "CAST Imaging API Key"
},
{
"id": "imaging-tenant",
"type": "promptString",
"description": "Imaging tenant"
}
],
"servers": {
"imaging": {
"type": "http",
"url": "http[s]://<fqdn-or-IP-address-imaging-services-machine:[port]>/mcp",
"headers": {
"x-api-key": "<imaging-key>",
"x-user-tenant": "<domain/tenant-name>"
}
}
}
}
After updating the domain (tenant) name to a different tenant, click the Restart option in the UI to reconnect and apply the change: no MCP Server restart is needed.
Manage copilot-instructions.md file
Locate the copilot-instructions.md file at the root of the unzipped installation media and copy it into a folder called .github located at the root of the repository you are working with. This file provides chat responses that are tailored to CAST Imaging: the additional information is not displayed in the chat, but is available to Copilot to allow it to generate higher quality responses.
Alternative manual registration flow
If Visual Studio Code does not auto‑pick the MCP server:
- Open Copilot Chat → gear icon → Select tools that are available to chat
- + Add More Tools… → + Add MCP Server… → choose HTTP
- Enter
http[s]://<fqdn-or-IP-address-imaging-services-machine:[port]>/mcp/and confirm - Visual Studio Code will then create
.vscode/copilot/mcp.json→ add the header block:
"my-mcp-server-xxxx": {
"url": "http[s]://<fqdn-or-IP-address-imaging-services-machine:[port]>/mcp/",
"headers": {
"x-api-key": "${input:imaging-key}",
"x-user-tenant": "${input:imaging-tenant}"
}
}
Step 6 - Test your MCP-Aware client
- Launch your MCP-aware client
- Enter your CAST Imaging API key when prompted
- Run a test query, for example:
List all applications
List 5 transactions for application <YourApp>
List available applications datagraphs
List applications insights
If successful (see below), you’re ready to use your MCP Client with your MCP Server.
Success indicators
✅ Connection successful if you receive:
- Valid application listings
- Architectural insights
- Suggested analysis queries
❌ Check configuration if you see:
- Connection errors
- Authentication failures
- Empty responses
Choosing which MCP servers run
At install time, the following settings in configuration.conf decide which of the three MCP servers the gateway offers. All three are installed either way:
STRUCTURAL_MCP_ENABLED=true
SEMANTIC_MCP_ENABLED=true
TEXT_TO_CYPHER_MCP_ENABLED=true
To turn an MCP server on or off after the installation, set the corresponding option in the deployed app.config file and restart the service. The option names differ from those used in configuration.conf:
IMAGING_STRUCTURAL_MCP_ENABLED=true
IMAGING_SEMANTIC_MCP_ENABLED=true
IMAGING_TEXT_TO_GRAPH_MCP_ENABLED=true
A disabled MCP server is not started and its tools are absent from the gateway.
- Semantic search and Text2Cypher both require Neo4j. Disable them if a Neo4j instance holding the CAST Imaging knowledge graph is not available in your environment.
- The option which enables the Text2Cypher MCP server carries a different name in
configuration.confand in the deployedapp.config. Use the name which belongs to the file you are editing, otherwise the value is ignored:TEXT_TO_CYPHER_MCP_ENABLEDinconfiguration.conf, andIMAGING_TEXT_TO_GRAPH_MCP_ENABLEDin the deployedapp.config. The same applies to its port:MCP_TEXT_TO_CYPHER_PORTinconfiguration.conf, written toapp.configasMCP_TEXT_TO_GRAPH_PORT. The Docker installer uses the sameconfiguration.confnames in its.envfile - see MCP Server installation on Linux via Docker.
Changing a port after the installation
All four ports live in the deployed app.config file, one key per process: MCP_GATEWAY_PORT (the gateway - the port CAST Imaging redirects MCP requests to), MCP_SERVER_PORT (structural), MCP_SEMANTIC_PORT (semantic search) and MCP_TEXT_TO_GRAPH_PORT (Text2Cypher, set from MCP_TEXT_TO_CYPHER_PORT in configuration.conf). Edit one and restart the service: the service rebuilds its routing from the file every time it starts, so the MCP server moves and the gateway follows it.
Nothing checks that the port you pick is free when you edit app.config directly. A port already held by something else leaves that MCP server failing to bind: it will be missing from /mcp/status, with the reason in its own log. To have the installer check the ports first, edit configuration.conf instead and pass it to an update - mcp-server-installer.bat --update configuration.conf.
Managing the Windows service
To restart the deployment - required after any configuration change - run the following from an elevated prompt:
cd /d "%INSTALL_DIR%\mcp-gateway"
stop-service.bat
start-service.bat
Stopping the service stops the three MCP servers with it. Starting it brings them back and the gateway last, since the gateway collects their tools as it starts.
Logs
Everything is under %CONFIG_DIR%\logs\:
mcp_server.log the service: the gateway, and which MCP servers it waited for
mcp-server-installer.log the last install, update or uninstall
imaging-structural-mcp\ service.log, telemetry.jsonl and console.log
imaging-semantic-mcp\
imaging-text-to-graph-mcp\
Example queries
Use the following example queries for the fictional application “Shopizer” as inspiration for your own queries:
Basic application information
Show me all applications available in my Imaging environment.
Which application has the largest number of transactions?
Transaction analysis
Explain about the entire graph of #customer-create-link transaction present in the Shopizer App.
List all the transactions in Shopizer app with the name containing “customer”.
Add a post-it on the transaction named #customer-create-link in Shopizer with title as "MCP post-it" and description as "This is a post-it created by MCP server".
Data flow analysis
Explain about the entire graph of CATEGORIES_DESCRIPTION datagraph present in the Shopizer App.
List all the data call graphs in Shopizer app with the name containing "CATEGORIES".
Add a post-it on the data graph named CENTRAL_CREDIT_CARDS in Shopizer with title as "MCP post-it" and description as "This is a post-it created by MCP server".
Quality insights
List all the ISO-5055 quality insights in the object pageProductReviews in Shopizer app?
List the top 5 structural flaws by occurrence count in app Shopizer.
List some of the green deficiencies present in the app Shopizer app.
Architectural analysis
Provide the high-level architecture view of Shopizer app.
Explain the architecture Shopizer app at User Interaction Level.
Semantic search and natural-language queries are also available through the same endpoint:
Where is the payment authorization logic implemented in Shopizer?
Which components in Shopizer deal with customer address validation?
How many transactions does the Shopizer app have?
Which objects in Shopizer are called by more than ten other objects?
Available Toolsets
- Portfolio tools - tools for overall portfolio exploration for cross-application analysis when users want to explore multiple applications, compare metrics across the entire portfolio, or discover available applications before diving into specific ones.
- Application tools - tools for application-level exploration for analyzing a single application in depth, covering architecture, quality insights, transactions, data graphs, packages, dependencies, and overall application statistics and structure.
- Object tools - Object level exploration for drilling down into specific code artifacts (classes, methods, tables, functions) within an application - examining their properties, relationships, callers/callees, usage in transactions, and associated quality insights. This includes the following tools:
Portfolio tools
applications- list all available applications available in CAST Imaging.applications_data_graphs- retrieve Data Call Graph views across all applications available in CAST Imaging with filtering.applications_dependencies- analyse inter-application dependencies across the applications available showing incoming and outgoing relationships for each app.applications_quality_insights- get quality insights across all applications in CAST Imaging with selective insight types:cve- security vulnerabilitiescloud- cloud maturity patternsgreen- sustainability patternsstructural-flaws- architectural issuesiso-5055- ISO quality violations
applications_transactions- retrieve transactions across all applications available in CAST Imaging with optional filtering.inter_app_detailed_dependencies- get detailed dependency information between two specific applications showing exact interaction points.inter_applications_dependencies- analyze dependencies between applications showing inward (apps depending on this) and outward (apps this depends on) relationships.
Application tools
add_view_document- add document (i.e. post-its) to transactions or data graphs for knowledge capture.advisors- get migration/modernization advisors, advisor rules, and violations for an advisor for an application. Includes the following focus options:list- list all available advisors for the application.rules- get rules for a specific advisor.violations- get objects violating a specific rule in an advisor.
advisor_occurrences- get occurrences of findings supporting selected advisor for an application.application_database_explorer- explore database tables and columns in an application with three modes:- List all tables
- Filter tables by name
- Get columns for specific table(s)
application_iso_5055_explorer- explore ISO 5055 software quality characteristics (Security, Reliability, Performance, Maintainability) and their associated weaknesses.architectural_graph- visualize application architecture (nodes/links) for an application at a specific abstraction levels (layer, component, sub-component, technology-category, element-type).architectural_graph_focus- get architecture focused on specific components for an application, useful for exploring architecture around key areas.custom_node- manage custom nodes within a custom view to group objects by specific criteria. Allows filtering by transaction, object type and insight.custom_views- manage custom aggregation views for grouping objects by custom criteria. Includes options to list, create, get details, delete, update, publish, or unpublish views.data_graph_details- get detailed information about specific data call graph flow with multiple focus options:complexity- list of complex objects in the flow graph of a data call graph.insights- list objects in the data call graph flow with Quality insightsnodes- list of all objects in the data call graph.links- list of all links/connections between objects in the data call graphgraph- full call graph for a data graph view.type_graph- graph results aggregated by object types.complexity_graph- reduced version of a data graph to represent only most complex objects.documents- list documents like post-its attached to a data call graph view.summary- fetch the AI-generated summary attached to the data call graph (if available)
data_graphs- fetch data call graph views for an application with optional filtering capabilities.package_interactions- analyze interactions between different packages for an application to understand dependency relationships with it.packages- list external packages, libraries or dependencies used by the application.quality_insight_violations- get detailed information about the occurrences (specific locations) for a particular quality-related insight type and ID in an application. Returns quality patterns and violating objects and their details.quality_insights- retrieve quality issues and vulnerabilities including CVE, cloud patterns, green patterns, structural flaws, and ISO-5055 violations for an application.stats- get basic statistics for an application including size, complexity, and technology metrics.transaction_details- get comprehensive details about specific transactions with multiple focus options:complexity- list of complex objects in the flow graph of transaction.insights- list objects in the transaction flow with Quality insightsnodes- list of all objects in the transaction graphlinks- list of all links/connections between objects in the transaction graphgraph- full call graph of the transactiontype_graph- graph results aggregated by object typescomplexity_graph- reduced version of a transaction graph to represent only most complex objects.documents- list documents like post-its attached to a transactionsummary- fetch the AI-generated summary attached to the transaction (if available)
transactions- fetch transactions for an application with optional filtering capabilities by name or type of the transaction.views- manage saved views for an application with options to list all views, create new views with selected objects, update existing views, get complete view details, or delete them.
Object tools
add_object_document- attach document (post-its) to an object for knowledge preservation or note-taking.data_graphs_involving_object- find all data call graphs involving specific objects based on criteria. Essential for understanding data dependencies.manage_object_tags- add or delete tags on code elements (objects) in an application. Allows specifying multiple tags to append or remove for a list of object IDs.object_details- get comprehensive details about specific objects with multiple focus options:intra- basic properties and child objectsinward- incoming dependencies (callers)outward- outgoing dependencies (callees)testing- fetch related transactions and data graphs.code- source code snippets (whenIMAGING_CODE=Truein theapp.config)insights- quality issues/insights for objectdocuments- fetch attached documents i.e. post-its to an object (if available)
object_profiles- get metric profiles per object type for an application, such as the average, minimum and maximum number of code lines or cyclomatic complexity. Returns one aggregate per object type, not values for individual objects - useobjectswith a metric for those.objects- search and filter objects (classes, methods, tables, etc.) in an application. Supports:- filtering by
name,fullname,type,mangling,filepathorannotationwith thecontains(default),equals,startswithorendswithoperator. All filters in one query must use the same operator, e.g.name:contains:Order,type:contains:Method. - restricting results to internal or external objects with
searchtype:eq:internalorsearchtype:eq:external. - filtering by tags.
- filtering and sorting by an integer metric, such as
Cyclomatic Complexity,Number of code lines,Number of Commented Code LinesorEfferent Coupling (CE). Results can be sorted highest or lowest first, or limited with a threshold (greaterThan,lessThan,greaterThanEqualTo,lessThanEqualToorequals), and each object is returned with its metric value. A metric can be combined withtype,searchtypeand tags, and withnameorfullnameusingcontainsonly (case-sensitive). It cannot be combined withmangling,filepathorannotation.Available in ≥ 3.1.0-beta3 with CAST Imaging ≥ 3.6.6-funcrel
- filtering by
source_file_details- get detailed dependency analysis for source files with multiple nature options:inventory- all defined code elementsintra- internal dependencies within fileinward- incoming dependencies to fileoutward- outgoing dependencies from filetesting- elements requiring tests if file changes
source_files- find source files that define code objects, matching a specified file path pattern (contains filter).transactions_using_object- identify all transactions that use a specific object based on a criteria.
Semantic search and Text2Cypher tools
The tools of all enabled MCP servers are presented through the single gateway endpoint, in addition to the structural tools listed above. Your client does not need to know which MCP server answered a request.
- Semantic search tools answer meaning-based questions using the CAST Imaging knowledge graph and its embeddings - the purpose of a component, the business concepts it implements, and where a given behaviour is implemented. They cover entity and entity-cluster discovery, retrieval of the code context relevant to a question, and the source documents backing an answer. See Query your application with GraphRAG for the underlying feature. When
SEMANTIC_MCP_CONVERSATIONAL_MEMORY_ENABLED=true, additional tools let an agent analyse, persist, search, list and deactivate knowledge gathered during a conversation, scoped to the application it was captured for. - Text2Cypher tools turn a natural-language question into a graph query against the CAST Imaging knowledge graph, and return the result together with links back into CAST Imaging. They also allow saved ad-hoc queries to be listed and managed, and expose an activity history of the queries which have been run.
Troubleshooting
| Symptom | Resolution |
|---|---|
| The service will not start | Read %CONFIG_DIR%\logs\mcp_server.log. An MCP server’s console.log holds what it printed before its own logging started, which is where a bad Control Panel or Neo4j setting shows up |
| An MCP server’s tools do not appear | Check /mcp/status and /mcp/servers - the latter shows whether each MCP server is enabled and healthy and how many tools it exposes (see HTTP endpoints) - then that MCP server’s service.log. An MCP server which was still starting when the gateway started needs a restart to be picked up - see Managing the Windows service |
| The service keeps restarting | The Microsoft Windows Event Log, source nssm, records the restarts |
| Semantic search or natural-language answers fail, structural answers work | Check NEO4J_URL, NEO4J_USER and NEO4J_PASSWORD in the deployed app.config file |
An MCP server is missing from /mcp/status after a port change |
The port is already held by something else, so the MCP server could not bind. See Changing a port after the installation |
| Empty responses | The CAST Imaging APIs are unreachable. Recheck HOSTNAME_CONTROL_PANEL and PORT_CONTROL_PANEL in the deployed app.config file |
Validate the deployed configuration file at %CONFIG_DIR%\setup-config\app.config - the gateway and all three MCP servers read that one file.
Also check that the "url" parameter in the client mcp.json points to the correct URL, and regenerate your API key in the CAST Imaging profile if necessary.
To test connectivity to the CAST Imaging API:
curl -H "x-api-key: <your-imaging-api-key>" http://<your_imaging_public_URL>:8090/rest/ready
CAST Imaging configured in HTTPS mode with self-signed or private certificate authority SSL/TLS certificates
If your CAST Imaging instance is configured in HTTPS mode with SSL/TLS certificates issued by a private or self-signed certificate authority (CA) - not required when you are using an authoritative CA - then you must configure the MCP Server (via the SSL_CA_BUNDLE variable available in the app.config file) with the path to the self-signed certificate chain exported to file, typically in Base-64 PEM format. To do so see the instructions below:
Creating the PEM file
Export the CA certificates from your browser
In Google Chrome, click the padlock on your CAST Imaging URL → Connection is secure → Certificate is valid → Details tab. You will see a certificate hierarchy with up to three levels (root, intermediate, server). Export each CA certificate (root and intermediate - the server certificate is not required) individually, choosing Base64-encoded ASCII format and saving with a .crt extension.
Combine into a single PEM file
If you have both a root and intermediate certificate, combine them into a single PEM file. If you only have a root certificate, simply rename it with a .pem extension.
CMD:
copy /b root.crt + intermediate.crt my_cert.pem
PowerShell:
Get-Content root.crt, intermediate.crt | Set-Content my_cert.pem
Verify the PEM file
Open the file in a text editor and confirm it contains one or more blocks in this format:
-----BEGIN CERTIFICATE-----
(Base64 encoded data)
-----END CERTIFICATE-----
Move the PEM file
Place the PEM file inside a certificates folder under CONFIG_DIR. The folder is created automatically during the installation; if not, create it manually:
%PROGRAMDATA%\CAST\Imaging-MCP-Server\certificates\my_cert.pem
Configure and restart MCP Server
Open %PROGRAMDATA%\CAST\Imaging-MCP-Server\setup-config\app.config and add the following line pointing to the .pem file created earlier:
SSL_CA_BUNDLE=C:\ProgramData\CAST\Imaging-MCP-Server\certificates\my_cert.pem
Restart the MCP Server - see Managing the Windows service - to ensure the setting is taken into account.
Updating configuration after installation
To change a configuration option (for example IMAGING_CODE, DEBUG_MODE, or CONTROL_PANEL_SSL_ENABLED) on an already-installed instance, you do not need to re-run the installer:
- Open the deployed configuration file with a text editor:
%PROGRAMDATA%\CAST\Imaging-MCP-Server\setup-config\app.config
- Change the required setting(s) and save the file.
- Restart the service with
stop-service.batandstart-service.bat- see Managing the Windows service.
This file holds every setting for the gateway and all three MCP servers. DEBUG_MODE continues to set the verbosity of the structural and semantic search MCP servers, and LOG_LEVEL sets it for the gateway and Text2Cypher. Log file paths come from the service and cannot be changed here.
Update process
The installation media includes a dedicated update option that performs an in-place update to this release:
- Ensure your target CAST Imaging release meets the minimum for this MCP Server release - see CAST Imaging compatibility
- Download the installation media for the target release
- Unzip the installation media
- Update the
configuration.conffile to set theSERVICE_HOSTparameter to the IP address, hostname, or FQDN of the machine where MCP Server is installed (the current machine). Important: do not leave this set as “localhost” - Set
NEO4J_URLin theconfiguration.conffile, unless the semantic search and Text2Cypher MCP servers are being left disabled - Open a CMD window with elevated permissions (right click,
Run as administrator) - Navigate to the root directory of the unzipped files and run:
mcp-server-installer.bat --update
What does the update do?
The update stops the service, checks that the ports are free, replaces the programs, restarts the service and health-checks the endpoint and every enabled MCP server behind it. It fails rather than reporting success if any of them does not come back.
Your settings are kept: existing values in the deployed app.config file are left alone and only settings new to the release are added. A bare --update keeps the ports the installation already has. To change ports as part of the update - and have the installer check that they are free first - edit configuration.conf and pass it to the update instead:
mcp-server-installer.bat --update configuration.conf
Post-update action items
- No client reconfiguration is required: your MCP-aware clients continue to connect to CAST Imaging exactly as before.
- Open TCP port 8285 in your firewall rules so that it is reachable from the machine hosting CAST Imaging. Client machines do not need access to this port.
- The tool surface profile is now set per MCP server: check
STRUCTURAL_MCP_TOOL_SURFACE_PROFILEandSEMANTIC_MCP_TOOL_SURFACE_PROFILEin the deployedapp.configfile. To continue exposing all tools directly, set both tofulland restart the service. - Telemetry is pushed to CAST every two hours by default. Set
TELEMETRY_PUSH_ENABLED=falseto keep telemetry on this machine only - see Frequently Asked Questions. - Confirm the deployment is healthy by running
mcpserver_syncronization.batfrom an elevated prompt - see Step 4 - Run the installation.
Uninstall process
The installation media contains a dedicated uninstall option: to run it, open a CMD window with elevated permissions (right click, Run as administrator) and execute the following command from the root of the unzipped files:
mcp-server-installer.bat --uninstall
The uninstall removes the service and deletes both INSTALL_DIR and CONFIG_DIR, including the logs and the Text2Cypher MCP server’s record of ad-hoc queries. Copy anything worth keeping before you run it.