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

The installation package com.castsoftware.imaging.mcpserver external link 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

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.conf file (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 the imaging-viewer component 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-viewer component 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-services component) in your network (see CAST Imaging compatibility below)
  • a CAST Imaging API key, see Generating an API key.
    Available in ≥ 3.6.6-funcrel
    Alternatively, Claude Code and Visual Studio Code can sign in through the browser using OAuth - see Authenticate MCP clients with OAuth

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

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.

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 external link) 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.

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.

Step 5 - Configure your MCP-aware client (GitHub Copilot for Visual Studio Code)

Install GitHub Copilot extension

Install the GitHub Copilot extension (see https://marketplace.visualstudio.com/items?itemName=GitHub.copilot external link) 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 the x-user-tenant line as well) if you only have one domain (tenant).
  • "url" is the IP address/FQDN and port number (8090 by default in http mode) of the machine on which the CAST Imaging imaging-services component is installed. If HTTPS mode has been configured on CAST Imaging for end-user access, use https://<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>"
      }
    }
  }
}

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:

  1. Open Copilot Chat → gear icon → Select tools that are available to chat
  2. + Add More Tools… → + Add MCP Server… → choose HTTP
  3. Enter http[s]://<fqdn-or-IP-address-imaging-services-machine:[port]>/mcp/ and confirm
  4. 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

  1. Launch your MCP-aware client
  2. Enter your CAST Imaging API key when prompted
  3. 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.

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.

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 vulnerabilities
    • cloud - cloud maturity patterns
    • green - sustainability patterns
    • structural-flaws - architectural issues
    • iso-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 insights
    • nodes - list of all objects in the data call graph.
    • links - list of all links/connections between objects in the data call graph
    • graph - 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 insights
    • nodes - list of all objects in the transaction graph
    • links - list of all links/connections between objects in the transaction graph
    • graph - full call graph of the transaction
    • type_graph - graph results aggregated by object types
    • complexity_graph - reduced version of a transaction graph to represent only most complex objects.
    • documents - list documents like post-its attached to a transaction
    • summary - 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 objects
    • inward - incoming dependencies (callers)
    • outward - outgoing dependencies (callees)
    • testing - fetch related transactions and data graphs.
    • code - source code snippets (when IMAGING_CODE=True in the app.config)
    • insights - quality issues/insights for object
    • documents - 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 - use objects with a metric for those.
  • objects - search and filter objects (classes, methods, tables, etc.) in an application. Supports:
    • filtering by name, fullname, type, mangling, filepath or annotation with the contains (default), equals, startswith or endswith operator. 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:internal or searchtype:eq:external.
    • filtering by tags.
    • filtering and sorting by an integer metric, such as Cyclomatic Complexity, Number of code lines, Number of Commented Code Lines or Efferent Coupling (CE). Results can be sorted highest or lowest first, or limited with a threshold (greaterThan, lessThan, greaterThanEqualTo, lessThanEqualTo or equals), and each object is returned with its metric value. A metric can be combined with type, searchtype and tags, and with name or fullname using contains only (case-sensitive). It cannot be combined with mangling, filepath or annotation.
      Available in ≥ 3.1.0-beta3 with CAST Imaging ≥ 3.6.6-funcrel
  • source_file_details - get detailed dependency analysis for source files with multiple nature options:
    • inventory - all defined code elements
    • intra - internal dependencies within file
    • inward - incoming dependencies to file
    • outward - outgoing dependencies from file
    • testing - 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:

  1. Open the deployed configuration file with a text editor:
%PROGRAMDATA%\CAST\Imaging-MCP-Server\setup-config\app.config
  1. Change the required setting(s) and save the file.
  2. Restart the service with stop-service.bat and start-service.bat - see Managing the Windows service.

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.conf file to set the SERVICE_HOST parameter 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_URL in the configuration.conf file, 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_PROFILE and SEMANTIC_MCP_TOOL_SURFACE_PROFILE in the deployed app.config file. To continue exposing all tools directly, set both to full and restart the service.
  • Telemetry is pushed to CAST every two hours by default. Set TELEMETRY_PUSH_ENABLED=false to keep telemetry on this machine only - see Frequently Asked Questions.
  • Confirm the deployment is healthy by running mcpserver_syncronization.bat from 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

FAQ

See Frequently Asked Questions.