Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Remove draft info-macro and clean breadcrumb (post-promotion cleanup)

Reference Cross-tool conventions for the FrameworX MCP SDK , the surfaces it ships, and the tooling extension model— build-visibility propagation from the compile engine into every write-capable MCP tool response.

AI Integration → MCP SDK Reference

InfoNew 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).


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 pages (designer_action Reference and ConsoleMCP Reference) reference this shape instead of redefining it

The FrameworX MCP SDK is the .NET library Tatsoft uses to expose Designer and workspace 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 four compiled server executables, 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
DesignerMCP write_objectsEach affected row in the response carries a compile field populated from the save-time incremental compile.designer_action Reference
DesignerMCP get_objects(detail='full')Each row of the four affected tables carries a lastCompile field from the most recent compile.designer_action Reference
DesignerMCP SolutionContext / RefreshContextA compact build_state section reports last-build pass/fail counts and timestamp.designer_action Reference
ConsoleMCP create_solution_file / update_solution_fileResponse includes the build block read from the produced .dbsln.ConsoleMCP Reference
ConsoleMCP verify_solution_fileNew tool. Opens a current-version .dbsln and returns Name inventory plus the build block.ConsoleMCP Reference

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 four servers. Each one is a distinct executable with its own process, transport, and tool surface.

ServerPurposeTransportExecutable
DesignerMCPLive IDE co-pilot on the same Windows machine as Designer.stdioDesignerMCP.dll
DesignerMCPHttpLive IDE co-pilot over HTTP, for split-host setups (Mac + Windows VM).HTTP (SSE) on port 10150DesignerMCPHttp.dll
ConsoleMCPFile-based workspace engineering, no running Designer.stdioConsoleMCP.dll
ConsoleMCPHttpFile-based workspace engineering over HTTP.HTTP (SSE) on port 10130ConsoleMCPHttp.dll

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.

Runtime Requirements

FrameworX versionRuntimeInstall path
10.1.4 and earlier.NET 8 Desktop RuntimeC:\Program Files\Tatsoft\FrameworX\fx-10\net8.0\
10.1.5 and later.NET 10 Desktop RuntimeC:\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.

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

FrameworXAnthropic MCP SDKNotes10.1.31.0Initial ship of DesignerMCP and DesignerMCPHttp.10.1.41.1ConsoleMCP and ConsoleMCPHttp added.10.1.51.2SDK bump to 1.2. Runtime moves to .NET 10. Workspace architecture v2 (*_workspace tool names, create_solution_file, update_solution_file, from_workspace parameter)

.


In this section...

Page Tree
root@parent