Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Promote 10.1.5 draft body into live MCP SDK Reference

Draft preview of the 10.1.5 additions to the MCP SDK — build-visibility propagation from the compile engine into every write-capable MCP tool response.

MCP SDK Reference → MCP SDK Reference (10.1.5 draft)


Info

This is a 10.1.5 draft preview. The tools and parameters described here are not yet released in the currently shipping version. When 10.1.5 ships, this content will be merged into the parent page and this draft retired.


FrameworX has always compiled user-authored .NET (Script Tasks, Script Classes, Script Expressions, and Displays code-behind) incrementally as objects are saved, and RuntimeBuildAndPublish in Designer has always produced a per-object error table. What is new in 10.1.5 is that this compile output is now propagated into MCP tool responses, so AI agents see the same build feedback an engineer sees in the Designer Output pane.

This page defines the shared build block once. Sibling drafts (designer_action Reference (10.1.5 draft) and ConsoleMCP Reference (10.1.5 draft)) reference this shape instead of redefining it

Reference for the FrameworX MCP SDK, the surfaces it ships, and the tooling extension model.

AI Integration → MCP SDK Reference

Info

New in 10.1.5. SDK upgraded to Anthropic MCP SDK 1.2.0. The runtime target is now .NET 10 (.NET 8 remains for 10.1.4 and earlier). RuntimeMCP adds an HTTP transport, a Windows Service variant, and target rebinding by (solution, profile).

The FrameworX MCP SDK is the .NET library Tatsoft uses to expose Designer, workspace, and runtime tools to MCP clients (Claude Desktop, Claude Code, VS Code GitHub Copilot, any MCP-compatible LLM). It is layered on top of the Anthropic MCP SDK for .NET and ships as seven compiled server executables across three families — Designer, Console, and Runtime — each targeting a specific workflow.

Setup steps are covered in MCP and Claude Setup and Claude Code MCP Setup. Tool-level reference lives in the dedicated pages listed below.

Table of Contents
maxLevel2
minLevel2
stylenone


Principle: MCP Surfaces, It Does Not Implement

The FrameworX compile engine is unchanged in 10.1.5. No new compiler, no new validation passes, no new error categories. The MCP SDK is a thin adapter over product capability — when the product gains a signal worth exposing, the adapter routes it; when the product lacks a signal, the adapter does not fabricate one. Build visibility follows this principle: the compile output already existed inside Designer and inside the produced .dbsln; the 10.1.5 work was to surface it to MCP callers.

Practically, this means the build block described below is drawn from the same internal sources an engineer already consults — the incremental compile result held by the Designer save pipeline, the error columns on the four *Contents tables in the solution file, and the per-object diagnostics produced by RuntimeBuildAndPublish.


The build Block

All MCP tools that report compile output return the same JSON shape. The shape is stable across DesignerMCP, ConsoleMCP, and the new verify_solution_file tool.

Code Block
languagejs

{
  "objects": [
    {
      "type": "Script|Display",
      "name": "<object name>",
      "status": "ok|error",
      "diagnostics": [
        { "line": <int>, "msg": "<string>" }
      ],
      "elapsedMs": <int>
    }
  ],
  "summary": {
    "built":     <int>,
    "failed":    <int>,
    "skipped":   <int>,
    "timestamp": "<ISO8601>"
  }
}
      

Fields

FieldMeaning
objects[].typeEither Script (covers the three Scripts tables) or Display.
objects[].nameName of the compiled object, as it appears in the owning table.
objects[].statusok if the incremental compile produced no diagnostics, error otherwise.
objects[].diagnostics[]Zero or more entries, each with a source line number and a compiler message. Empty array when status is ok.
objects[].elapsedMsCompile time for that object in milliseconds.
summary.builtCount of objects whose status is ok.
summary.failedCount of objects whose status is error.
summary.skippedCount of objects not compiled in this run (for example, unchanged objects when rebuild_all=false).
summary.timestampISO-8601 timestamp of the build run.

Affected Tables

Four tables carry user-authored .NET and participate in the build pipeline:

TableCarries
ScriptsTasksBackground script tasks.
ScriptsClassesNamed script classes reusable across the solution.
ScriptsExpressionsReusable compiled expressions.
DisplaysListDisplay code-behind.

A write that touches a row in any other table does not produce a build block (there is nothing to compile). A write that touches a row in one of these four tables carries per-row compile feedback in its response.


Where The Block Appears

SurfaceMechanismReference
DesignerMCP designer_action('build', …)Returns a full build block from RuntimeBuildAndPublish.designer_action Reference (10.1.5 draft)
DesignerMCP write_objectsEach affected row in the response carries a compile field populated from the save-time incremental compile.designer_action Reference (10.1.5 draft)
DesignerMCP get_objects(detail='full')Each row of the four affected tables carries a lastCompile field from the most recent compile.designer_action Reference (10.1.5 draft)
DesignerMCP SolutionContext / RefreshContextA compact build_state section reports last-build pass/fail counts and timestamp.designer_action Reference (10.1.5 draft)
ConsoleMCP create_solution_file / update_solution_fileResponse includes the build block read from the produced .dbsln.ConsoleMCP Reference (10.1.5 draft)
ConsoleMCP verify_solution_fileNew tool. Opens a current-version .dbsln and returns Name inventory plus the build block.ConsoleMCP Reference (10.1.5 draft)

Source Of The Data

DesignerMCP draws the build block from the live Designer compile pipeline — the same path that populates the Output pane when an engineer saves a script or runs RuntimeBuildAndPublish.

ConsoleMCP has no live Designer. It reads the same information directly from the produced solution file. A .dbsln is a SQLite database; each of the four affected tables has a companion *Contents table (ScriptsTasksContents, ScriptsClassesContents, ScriptsExpressionsContents, DisplaysListContents) whose error columns hold the compile result written at build time. ConsoleMCP queries those columns and assembles the build block. This is not stdout parsing of SolutionCreator logs — it is a direct read of the compiled result persisted inside the .dbsln.


Agent Usage Pattern

A well-behaved agent writes, reads the compile field on the response, and stops on the first error status rather than piling up additional writes on a broken tree. Typical loop:

Code Block
languagetext

1. write_objects([...])                    # Designer or Console
2. inspect response[i].compile.status      # for each affected row
3. if any status == "error":
     fix the offending diagnostics and retry
   else:
     proceed to the next batch
4. at commit boundary (Designer): designer_action('build', rebuild_all=true)
   at commit boundary (Console):  create_solution_file / update_solution_file
5. inspect summary.failed; stop if > 0
      

The commit-boundary step is what catches cross-object breakage (an edit to a Script Class that breaks a Script Task referencing it): the row-level compile on a single write only reports what the incremental pipeline saw for that object; the commit-boundary build reports the whole tree

Server Surfaces

The SDK ships seven servers across three families. Each one is a distinct executable with its own process, transport, and tool surface.

Server

Purpose

Transport

Executable

DesignerMCP

Live IDE co-pilot on the same Windows machine as Designer.

stdio

DesignerMCP.dll

DesignerMCPHttp

Live IDE co-pilot over HTTP, for split-host setups (Mac + Windows VM).

HTTP (SSE) on port 10150

DesignerMCPHttp.dll

ConsoleMCP

File-based workspace engineering, no running Designer.

stdio

ConsoleMCP.dll

ConsoleMCPHttp

File-based workspace engineering over HTTP.

HTTP (SSE) on port 10151

ConsoleMCPHttp.dll

RuntimeMCP

Read live tags, alarms, historian, and UNS from a running TServer.

stdio

RuntimeMCP.dll

RuntimeMCPHttp

Same runtime surface over HTTP. Supports target rebinding and multi-runtime setups.

HTTP (SSE) on port 10120

RuntimeMCPHttp.dll

RuntimeMCPHttpService

Windows Service wrapper that starts and stops RuntimeMCPHttp as a system service.

N/A (launches subprocess)

RuntimeMCPHttpService.exe

The HTTP servers add bearer-token authentication and DNS rebinding protection defaults suitable for Parallels-internal Mac-to-Windows networks. Use a reverse proxy if you expose the HTTP surface beyond a trusted subnet.

Port Reservations

The HTTP servers use a fixed default port. The full reserved range — including the block reserved for Tatsoft internal MCP tooling — is documented here so that custom integrations and remote setups do not collide with future additions.

Port

Server

Notes

10120

RuntimeMCPHttp

Live runtime MCP. Configurable in RuntimeMCPHttp.json via appSettings.ListenPort, or via /ListenPort:N on the command line.

10150

DesignerMCPHttp

Live IDE Designer MCP. Configurable in DesignerMCPHttp.json.

10151

ConsoleMCPHttp

File-based workspace MCP. Configurable in ConsoleMCPHttp.json.

1016010169

Reserved

Reserved for Tatsoft internal MCP tooling used by Tatsoft staff. Customer integrations should avoid this block to stay forward-compatible with future shipped tools.

To run multiple instances of an HTTP server on the same host (for example, one runtime per execution profile), pass /ListenPort:N on the command line, or set per-instance appSettings.ListenPortN keys with the instance suffix in the JSON config. See Runtime MCP Reference for the multi-runtime pattern.

Runtime Requirements

FrameworX version

Runtime

Install path

10.1.4 and earlier

.NET 8 Desktop Runtime

C:\Program Files\Tatsoft\FrameworX\fx-10\net8.0\

10.1.5 and later

.NET 10 Desktop Runtime

C:\Program Files\Tatsoft\FrameworX\fx-10\net10.0\

Verify with dotnet --list-runtimes. A mismatched runtime surfaces as the server failing to start under Claude Desktop or Claude Code.

Exception: RuntimeMCPHttpService targets .NET Framework 4.8 because it uses System.ServiceProcess for Windows Service Control Manager integration. It launches RuntimeMCPHttp.dll (net10.0) as a child process at service start, so the .NET 10 runtime is still required on the host.

Transport Model

Every server speaks JSON-RPC 2.0 over its transport. The SDK framing rules follow the MCP 1.2 streamable-HTTP specification for the HTTP servers and the stdio specification for the stdio servers.

stdio servers

The MCP client spawns the server as a subprocess. stdin carries requests, stdout carries responses, stderr is reserved for logging. Environment variables set on the client process flow to the server.

HTTP servers

The server listens on its configured port. The client negotiates a session over POST /sse and then streams events over GET /sse. Authorization is Authorization: Bearer <token>. The token is configured in %APPDATA%\FrameworX\Mcp\config.json on first run.

Tool Reference

Each tool-level reference lives on its own page.

Extensibility

The SDK is NOT a public plug-in surface. Tools are compiled into the shipped executables and are not loaded from user-supplied assemblies. The extension path for customer-specific behavior is via Claude Skills (markdown playbooks loaded by the MCP client) and via search_docs, both of which run on top of the existing tool catalog.

For customer-specific automation via scripts and expressions, see Skill Scripts Expressions.

Version History

FrameworX

Anthropic MCP SDK

Notes

10.1.3

1.0

Initial ship of DesignerMCP and DesignerMCPHttp.

10.1.4

1.1

ConsoleMCP and ConsoleMCPHttp added. RuntimeMCP (stdio) added with the initial runtime tool surface.

10.1.5

1.2

SDK bump to 1.2. Runtime moves to .NET 10. Workspace architecture v2 (*_workspace tool names, create_solution_file, update_solution_file, from_workspace parameter). RuntimeMCPHttp, RuntimeMCPHttpService, and (solution, profile) target rebinding added

.


In this section...

Page Tree
root@parent