ROS MCP Server
Inspect and command ROS 1 and ROS 2 robots from an MCP client through rosbridge
Local MCP endpoint inside OutSystems Service Studio for reading and changing O11 modules
Official · OutSystems C# Local · Streamable HTTP Developer tools
32 popularity score ★ 30
Opens the app, which asks before it adds the server.
claude mcp add --transport http outsystems-11 http://127.0.0.1:41820/mcp{
"mcpServers": {
"outsystems-11": {
"url": "http://127.0.0.1:41820/mcp"
}
}
}{
"servers": {
"outsystems-11": {
"type": "http",
"url": "http://127.0.0.1:41820/mcp"
}
}
}[mcp_servers.outsystems-11]
url = "http://127.0.0.1:41820/mcp"gemini mcp add --scope user --transport http outsystems-11 http://127.0.0.1:41820/mcpOutSystems builds this MCP server into Service Studio, the desktop IDE for OutSystems 11 applications. You start it from the IDE for each session. It then listens on http://127.0.0.1:41820/mcp unless you pick another port in the start dialog, and a coding agent connected to it can inspect the open module: data model, actions, screens, web blocks, roles, themes, settings and validation messages. For anything those reads miss there is a free-form ModelQL query tool. Reading is Generally Available.
Writing is a Beta Feature. The agent sends C# lambdas written against the OutSystems Model API through applyModelApiCode, and they run on a copy of the module. Nothing reaches the real module until omlMerge, which by default opens Service Studio's Compare-and-Merge window so you can review the change (a Service Studio setting can make it merge with no dialog). Separate tools refresh references and run 1-Click Publish.
The GitHub repository holds no server code. What you get there is an agent skill (SKILL.md plus reference files), AGENTS.md, and MCP client configs for Claude Code, Copilot CLI and VS Code, Cursor, Kiro, Antigravity and Codex CLI. Its tool reference lists 57 tools, far more than the README names, and says an older searchModel tool was removed and the old oml_-prefixed names are gone (servicestudio-mcp-oml/reference/verb-reference.md). If port 41820 is busy, the server moves to the next port, trying up to 20 times (MCP-DESIGN-CHOICES.md), so check the URL the dialog shows.
| Runs on | macOS, Windows, Linux |
|---|---|
| OutSystems 11 | Service Studio 11.55.91 or later with an O11 module open |
| Also |
|
Install or update Service Studio to 11.55.91 or later and open the module to work on. Start the server each session from Edit > MCP Server: confirm the port (41820 by default), click Start MCP Server, and copy the URL the dialog shows. Register that URL in your client. The first call from each agent connection shows an approval prompt in Service Studio. The bundled skill installer scripts need git and bash or PowerShell, and install for Claude Code only.
Writes (applyModelApiCode, omlMerge, omlReset, omlRefreshReferences, omlPublish) are Beta and may change or be withdrawn between Service Studio releases under the OutSystems Beta Features Agreement. It works only on the module open in Service Studio; it does not start automatically, and clients get ConnectionRefused until it is started. Edits made in the IDE during an unmerged chain are invisible to the agent. Writes time out after 300 s and reads after 120 s. Starting Service Studio wipes %TEMP%\ServiceStudio.MCPServer, where staged module files live. omlPublish returns blocked until the user grants publish permission in the MCP dialog. It covers OutSystems 11 only, not ODC.
It suits OutSystems 11 teams who want a coding agent to explain, document or audit existing modules, and, accepting Beta status, to draft entities, screens and actions that they then review in Compare-and-Merge. Because it runs inside Service Studio on the developer's machine, it fits on-premises and air-gapped estates. It is no use without a Service Studio licence and an O11 module, cannot run headless or in CI, and does not reach OutSystems Developer Cloud (ODC) apps.
52 only read, 5 change things. A ? marks an optional parameter.
applyModelApiCode changeseSpaceName: stringcode: stringimports: arraycreateSessionTokenclientName?: stringlistAppsomlMerge changeseSpaceName: stringmutatedOmlPath: stringomlReset changeseSpaceName: stringomlRefreshReferences changeseSpaceName: stringomlPublish changeseSpaceName: stringgetDataModeleSpaceName: stringincludeJson: enumgetStructureseSpaceName: stringincludeJson: enumgetActionNameseSpaceName: stringobjectType: enumgetServerActioneSpaceName: stringobjectName: stringincludeJson: enumgetClientActioneSpaceName: stringobjectName: stringincludeJson: enumgetServiceActioneSpaceName: stringobjectName: stringincludeJson: enumgetEventseSpaceName: stringincludeJson: enumgetEventHandlerseSpaceName: stringincludeJson: enumgetTimerseSpaceName: stringincludeJson: enumgetIntegrationseSpaceName: stringincludeJson: enumgetScreenNameseSpaceName: stringgetScreeneSpaceName: stringobjectName: stringincludeJson: enumgetWebBlockNameseSpaceName: stringgetWebBlockeSpaceName: stringobjectName: stringincludeJson: enumgetThemeNameseSpaceName: stringgetThemeeSpaceName: stringobjectName: stringincludeJson: enumgetEmailTemplateNameseSpaceName: stringgetEmailTemplateeSpaceName: stringobjectName: stringincludeJson: enumgetExternalSiteNameseSpaceName: stringgetExternalSiteeSpaceName: stringobjectName: stringincludeJson: enumgetScreenNamesTraditionaleSpaceName: stringgetScreenTraditionaleSpaceName: stringobjectName: stringincludeJson: enumgetWebBlockNamesTraditionaleSpaceName: stringgetWebBlockTraditionaleSpaceName: stringobjectName: stringincludeJson: enumgetThemeNamesTraditionaleSpaceName: stringgetThemeTraditionaleSpaceName: stringobjectName: stringincludeJson: enumgetEmailTemplateNamesTraditionaleSpaceName: stringgetEmailTemplateTraditionaleSpaceName: stringobjectName: stringincludeJson: enumgetExternalSiteNamesTraditionaleSpaceName: stringgetExternalSiteTraditionaleSpaceName: stringobjectName: stringincludeJson: enumgetSettingseSpaceName: stringincludeJson: enumgetRoleNameseSpaceName: stringgetRoleeSpaceName: stringobjectName: stringincludeJson: enumgetRoleExceptionseSpaceName: stringincludeJson: enumgetUserExceptionseSpaceName: stringincludeJson: enumgetExceptioneSpaceName: stringobjectName: stringincludeJson: enumgetResourceNameseSpaceName: stringgetResourceeSpaceName: stringobjectName: stringincludeJson: enumgetImageNameseSpaceName: stringgetImageeSpaceName: stringobjectName: stringincludeJson: enumgetScriptNameseSpaceName: stringgetScripteSpaceName: stringobjectName: stringincludeJson: enumgetLocaleseSpaceName: stringincludeJson: enumgetClientVariableseSpaceName: stringincludeJson: enumgetSessionVariableseSpaceName: stringincludeJson: enumrunQueryeSpaceName: stringquery: stringexecutionOptions?: objectgetValidationMessageseSpaceName: stringfilter?: arraygetSerializedObjecteSpaceName: stringgetSerializedObjectByKeyeSpaceName: stringobjectKey: stringgetSerializedObjectByNameAndTypeeSpaceName: stringobjectName: stringobjectType: string