Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Read-only MCP server for ABB robot controllers, through abb-rws-daemon on 127.0.0.1.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"abb-rws": {
"command": "npx",
"args": [
"-y",
"abb-rws-mcp"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add abb-rws -- npx -y abb-rws-mcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"abb-rws": {
"command": "npx",
"args": [
"-y",
"abb-rws-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"abb-rws": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"abb-rws-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 8일 점검
레지스트리 이름이 GitHub 계정 ichbinmeraj 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.2.0)은 8일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Cape Winelands Visit Planner
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cape Winelands wine farm finder and day-route planner
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
A Model Context Protocol (MCP) server that lets an AI assistant read what an ABB robot controller is doing and why it stopped. It reads only. It reads through abb-rws-daemon on 127.0.0.1, which holds the one session per controller over Robot Web Services: RWS 1.0 (IRC5, RobotWare 6) and RWS 2.0 (OmniCore, RobotWare 7 and 8). This server opens no controller session and never sees controller credentials.
Status: 0.2.0. Read-only. Tested on 2026-10-31 through abb-rws-daemon 0.1.1
(snapshot schema 0.15) on three RobotStudio virtual controllers: RobotWare 6.16.03
(RWS 1.0), 7.21.4 and 8.2.1 (RWS 2.0). Every tool and the prompt ran through an MCP
client over stdio, and every request the server sent the daemon was recorded: reads
only, plus one sampling request per controller when motion sampling was on. On all three,
read_rapid_variablegave a test string with an inner doubled quote and the characters
& < >exactly as the controller holds it. 0.1.0 was tested the same way through
abb-rws-daemon 0.1.0. Not yet run against a real controller. Changes are listed in
CHANGELOG.md.
Read-only. The server has 10 tools and 1 prompt. Every tool reads. None of them sets a signal, starts or stops a program, moves a program pointer, loads or edits a module, switches motors, changes the speed, or requests mastership or write access. There is no write tool behind a flag either. The server writes no file and starts no process. It calls only the daemon's read routes. The one request that is not a GET asks the daemon to sample joint positions for 15 s (see Motion sampling).
read_rapid_variable, which says the daemon needs an update. The server reads snapshot schema 0.13 or a later 0.x. It was tested with 0.15, which abb-rws-daemon 0.1.1 serves, and with 0.14 and 0.13 before. It does not read the field 0.14 adds (whether a lock holder is the FlexPendant). With a later 0.x it logs one warning that the schema is newer than the ones it was tested with, and list_controllers says the same.Start the daemon first and add your controller there. Then add this server to your MCP host. Pin the version, as below.
Claude Desktop (claude_desktop_config.json) and Cursor (~/.cursor/mcp.json):
{
"mcpServers": { "abb-rws": { "command": "npx", "args": ["-y", "abb-rws-mcp@0.2.0"] } } }
VS Code (.vscode/mcp.json):
{
"servers": { "abb-rws": { "type": "stdio", "command": "npx", "args": ["-y", "abb-rws-mcp@0.2.0"] } } }
Claude Code:
claude mcp add abb-rws -- npx -y abb-rws-mcp@0.2.0
The daemon on another port: add "env": { "ABB_RWS_MCP_DAEMON_URL": "http://127.0.0.1:7811" } to the server entry.
The server finds the daemon's token file where the daemon keeps it. If the daemon runs with --token-file, set the same file for this server (see Configuration).
The published package is one bundled file with no runtime dependencies, so npx fetches nothing else.
Each tool below says what it answers, then whether it reaches the controller.
summarize_controller: start here. The state in one sentence, facts from the snapshot, recent errors and warnings with ABB's recommended actions, the operational messages, and the source line at each program pointer. It reaches the controller for at most two module reads, failed ones included.list_controllers: the controllers the daemon knows, each with a state line ("motors on, Auto, running"), and the daemon's own state. Call it first, and when other tools fail. It does not reach the controller.get_controller_status: controller state, operating mode, speed override, collision detection, RAPID execution, the link, what the daemon can read here, and the access status as the controller reported it. It does not reach the controller.get_robot_position: joint positions, the TCP pose with Euler angles, whether the arm moves, how close each joint is to its limits. It reaches the controller through motion sampling, see below.read_io_signals: signals and values from the daemon's signal table, or a signal search. It reaches the controller only for a search.get_event_log: the controller's event log as the daemon keeps it, filtered by severity, time, category or code. It does not reach the controller.explain_event: one event laid out for explaining it. What the controller says (ABB's description, causes, consequences and actions) is kept apart from our reading (category, severity, time, the RAPID line the event names), next to the events just before and after. It does not say what caused the event. Name the event by its code, or by its seq together with the feed from the same answer. It reaches the controller once, to read the module of the line the event names.get_rapid_execution: execution state and the program and motion pointers of each task. It does not reach the controller.read_rapid_source: a module's RAPID source with line numbers, as a routine, the lines around a line, or a page. It reaches the controller on the first read of a module.read_rapid_variable: the value of one RAPID data symbol as RAPID text, the form the controller gives it, with no type. A value the controller answers with no value at all is said so, never shown as empty. Needs abb-rws-daemon 0.1.1. It reaches the controller unless the daemon read the same value in the last 2 s.The prompt why_did_it_stop (a slash command in hosts that show prompts) asks the assistant to find out what a controller is doing and why it stopped, with a fixed recipe: summary first, then the problems and their actions, the line at the program pointer, the signals that line names, the age of every value, and only causes the data shows.
explain_event, read_rapid_variable and read_rapid_source also say where the value came from, in provenance: the daemon's id for the controller (the same id every answer starts with, which the daemon may make from the system name), virtual or real, the RobotWare version, when the value was read, whether it came from the daemon's snapshot, the controller, this server's cache or a recording the daemon replays, and the RWS resource the daemon read, as a template.Event-log messages, RAPID source, signal names and controller names come from the controller. Anyone who can change the controller's programs or configuration can write that text. abb-rws-mcp passes it to the assistant marked as controller data, not as instructions: in the text, inside a block whose markers carry a random value made for that answer, and in the structured JSON, under controllerData. Escape sequences are removed from it, and hidden characters (control, zero-width, direction and tag characters) are replaced by a visible mark (U+FFFD). A few short values also appear outside that block, in the status line, the RAPID line an event names and provenance: the controller id, the RobotWare version, and task, module and routine names. They appear there only when they have the form of an id, a version number or a RAPID name, and are left out otherwise. This server has no tool that changes anything, so controller text cannot make it act. Other tools your assistant has can still act. Read what the assistant proposes before you run it.
get_robot_position asks the daemon to sample joint positions and the pose for 15 s, unless another program already does. These are controller reads, the ones the daemon README lists under "Reads on demand": about 8 joint reads a second per mechanical unit and 2 pose reads a second per robot, while the sampling runs. The server asks at most once per 15 s per controller, and never while the link is not live or the controller reports that it is busy. Turn it off with --motion-sampling off. The tool then returns the last sampled values with their time.
The signal table is read from the daemon's memory, with values of unknown age. A search by device, network or category, or a read with fresh: true, is a read-only RWS search request on the controller (sent as a POST by the daemon, not a GET). A search needs a name prefix of at least 3 characters or a device, so it does not page through the whole table. This server limits its own controller reads (searches, module reads and value reads): per controller, one at a time, at most two in a row, then one every 2 s.
Each option has an environment variable. An option wins over its variable. An empty variable counts as unset.
--daemon-url , variable ABB_RWS_MCP_DAEMON_URL. Default http://127.0.0.1:7810. Only http://127.0.0.1: or http://localhost: . localhost is a spelling only: the server always connects to 127.0.0.1. Every other host, [::1] included, is refused at start.--token-file , variable ABB_RWS_DAEMON_TOKEN_FILE. Default is the daemon's own: %APPDATA%\abb-rws-daemon\token on Windows, $XDG_CONFIG_HOME/abb-rws-daemon/token or ~/.config/abb-rws-daemon/token elsewhere. The variable is the one the daemon reads, so setting it once serves both.--allow-replay, variable ABB_RWS_MCP_ALLOW_REPLAY. Off by default. Read a daemon that replays a recording. Every answer then says REPLAY.--motion-sampling , variable ABB_RWS_MCP_MOTION_SAMPLING. Default on. See Motion sampling.--mark-codes , variable ABB_RWS_MCP_MARK_CODES. Off by default. A text file of event codes, one per line (# starts a comment). Events with a listed code say marked: true in get_event_log, explain_event and summarize_controller, so you can find them before you share an answer. Without a file every event says marked: null. The file is read once at start.ABB_RWS_MCP_LOG, a variable with no option. Default warn. error, warn앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요