
SiLA 2 Bridge
io.github.K-Dense-AI由 GitHub 帳號 K-Dense-AI 發布v0.1.2更新於 Oct 24, 2026
MCP bridge to any SiLA 2 server (lab-automation standard).
概覽
本機 MCP 橋接服務,讓助理探索、檢視並控制實作 SiLA 2 實驗室自動化標準的儀器。
- 可以做什麼
- 探索區域網路中的 SiLA 2 伺服器,辨識已連線儀器的身分、功能、指令與屬性,包含型別、單位與限制條件。讀取並訂閱儀器屬性,例如在一段時間內觀察溫度是否穩定。執行 SiLA 指令,包含長時間執行的可觀察指令,並查詢狀態、進度與結果。透過 SiLA 的 CancelController 取消執行中的指令,或在斷電重啟後重新連線。檢視原始指令日誌,方便除錯與記錄。
- 適用情境
- 適用於擁有支援 SiLA 2 的實驗室硬體或中介軟體(例如分注工作站、培養箱、盤式讀取儀、機械手臂或天平),並希望助理檢視能力、讀取感測器或執行並監控指令的情境。內建模擬器可在沒有硬體時試用。
- 執行需求
- 以 Python 套件(uvx labmcp-sila2)透過 stdio 在本機執行。需以 LABMCP_ADDRESS 提供儀器位址或使用探索名稱,並能存取該裝置的網路。預設使用 TLS:需提供伺服器 CA 憑證作為 root_cert,測試伺服器可用 insecure=true;雙向 TLS 需要 client_cert 與 client_key。可選用 LABMCP_LIMITS、LABMCP_READ_ONLY 與 LABMCP_SIMULATE。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 SiLA 2 Bridge,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
SiLA 2 Bridge — MCP Server
Let an AI agent work with any SiLA 2 server: liquid handlers, incubators, plate readers, robotic arms, balances or scheduling middleware that implement the open SiLA 2 lab-automation standard. The bridge reads the server's own Feature Definitions (FDL), so it knows every command, property, parameter type, unit and constraint. It validates parameters against the FDL before sending, runs and tracks long-running (observable) commands, and cancels them through SiLA's CancelController.
Try it without hardware
--simulate starts a real SiLA 2 server in-process, built with the sila2 library. It runs on 127.0.0.1 on a free port, unencrypted, with discovery off. It implements a simulated thermoblock feature (org.labmcp/simulation/TemperatureController/v1) and the official CancelController feature:
- the observable
CurrentTemperatureproperty, plusTargetTemperature,RampRateandDeviceState ControlTemperature, an observable command with progress, intermediate responses and aDeviceBusydefined errorRunProgram, taking a list of{TargetTemperature, HoldTime}structuresSetRampRate, constrained to 0 < rate ≤ 10 K/sSwitchOff
The whole bridge runs through the real gRPC and FDL path.
Connect your SiLA server
- Find it. Use the
discover_serverstool (mDNS_sila._tcp), or run the server with its address and port shown. SiLA has no default port, but 50052 is common. - TLS. SiLA 2 servers use TLS by default, and most generate a self-signed certificate at startup. Pass that certificate's CA as
--option root_cert=ca.pem: many servers write it to a file or publish it in their discovery record. Servers started in insecure test mode need--option insecure=true. For mutual TLS, add--option client_cert=… --option client_key=…. - Test the connection:
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
--read-only lets the agent browse features, read and subscribe to properties, and check command status, but not call commands. cancel_command stays available. To restrict which commands may run, use --option command_allowlist=Feature.Command,Feature.*. Entries can also be separated by ; or spaces, which is handy inside LABMCP_OPTIONS=command_allowlist=A.B;C.*.
Tools
Safety limits
Override at launch, e.g. --limit max_command_wait_s=60. The main guards for commands:
The server always re-validates too, so parameters rejected there come back as SiLA validation errors.
Example prompts
- "What SiLA servers are on the network, and what can the incubator do?"
- "Set the incubator to 37 °C and tell me when it has reached the temperature."
- "Watch the plate reader's chamber temperature for a minute and tell me if it's stable."
- "Run the 'PCR-short' program on the thermocycler, poll its progress every 30 seconds, and report the result."
- "Something's wrong, cancel everything that's running on the liquid handler."
- "Show me the parameters (types, units and allowed ranges) of the robot's MovePlate command."
Notes
- Types as JSON.
list_featuresrenders each SiLA type as a JSON-schema-like dict:Realbecomesnumber,Integerbecomesinteger,ListbecomesarrayandStructurebecomesobject. SiLA units appear asx-unit(the label) andx-unit-si(the conversion to SI base units, SI = value × factor + offset). Other SiLA details usex-sila-*keys. Values are passed as JSON:Binary: base64 stringsDate:YYYY-MM-DD[±HH:MM]Time:HH:MM:SS[±HH:MM]Timestamp: ISO 8601, UTC if no offset is givenAny:{"type": "Real", "value": 1.5}, basic types only
- Observable commands return an
execution_idright away.get_command_statusreports the SiLA execution status (waiting,running,finishedSuccessfully,finishedWithError), progress, estimated remaining time and the latest intermediate response.get_command_resultreturns the responses, or the defined/undefined execution error together with the error's description from the FDL. Passwait_stocall_commandfor short runs. Executions are tracked only for this session and are forgotten onreconnect. - Cancellation isn't part of core SiLA. It needs the server to implement
org.silastandard/core.commands/CancelController/v1, andget_server_inforeports whether it does. Some vendors provide their ownStop/Abortcommands instead, whichlist_featuresshows. - SiLA client metadata (e.g. a
LockControllerlock identifier or anAuthorizationServiceaccess token) can be passed withmetadata={"LockController.LockIdentifier": "…"}oncall_command,get_propertyandsubscribe_property. Values are validated against the metadata's FDL type. - Feature Definitions are parsed only after refusing any
DOCTYPE/entity declaration (SiLA FDL never uses one), so a hostile server can't trigger XML entity expansion. Features that thesila2library rejects as invalid are left out oflist_features(the command log records why). - Not checked locally:
SchemaandContentTypeconstraints, and theUnitconstraint, which is informational. The server enforces these. Large binaries (over 2 MB) use SiLA binary transfer, which thesila2library handles. - Library limitation (sila2 ≤ 0.14): a Constrained List used directly as a command parameter or response can't be unpacked. Parameters are affected on servers built with
sila2, which is why the simulator'sRunProgramuses a plain list and checks the 1–10 steps itself. Responses of that shape are affected in this bridge: the server executes the command, but its response can't be decoded. The bridge reports this as "WAS EXECUTED … could not be decoded" so the command is not repeated blindly. Properties of that shape decode fine. Plain (unconstrained) lists are not affected. - Discovery browses mDNS for the requested time and returns what servers advertise (UUID, name, version, address, whether a CA certificate is published) without connecting to them. In
--simulatemode it returns only the simulated server and sends nothing on the network.
Hardware verification
來源:servers/protocols/sila2/README.md,提交 46545ea
工具
0版本歷史
2- v0.1.2最新Sep 27, 2026
- v0.1.0Sep 26, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分