How I built a self-maintaining Homey documentation system with Claude

Great. I’ll get Claude. Would it work initially on the free tier, or would I need to sign up for Pro?

I was clicking on the App link on my Mac. I tried to search for it on my iPhone and got “No results”. Clicked on the link above using my iPad and it worked. The App is now installed.

Do I need to do anything in the App to get the initial viewer working? e.g. http://192.168.0.73:8734

Does it make any difference if I have Port Forwarding turned on?

I get “This site can’t be reached” - Chrome

UPDATE: Apologies. Worked on my iPad but not on my Mac. Using Safari on my Mac I get “Cannot GET /8734/”

Here is what Claude told me.

The app is working perfectly — curl got a full HTML response. The problem is purely that Chrome and Safari on Mac are blocking plain http:// to local addresses for security reasons.

Since curl works, the simplest fix is Firefox. It handles local http:// addresses without complaint. Just download it from firefox.com if you don’t have it, and paste in http://192.168.0.73:8734/ — it should load straight away.

Alternatively, looking at the page source that came back, I can see this is the Homey cross-reference index — a really nice looking app showing all your Homey variables, flows, BLL variables and more. It even has a Setup button for connecting it to Claude Desktop via MCP, which given your interest in Claude could be very handy!

Anyone else have this issue with Safari or Chrome?

Another update. I’m getting MCP Homey server disconnected. Could not attach to MCP server homey.

Claudes summary : The server is healthy and responding correctly

  • A proper MCP initialize request works perfectly when the Accept: application/json, text/event-stream header is included
  • mcp-remote is failing with Unexpected content type: null, suggesting it’s not sending that Accept header correctly

That’s a very specific and actionable bug report — the developer should be able to fix it quickly.

Config file:

{
“mcpServers”: {
“homey”: {
“command”: “npx”,
“args”: [
“-y”,
“mcp-remote”,
“``http://192.168.0.73:8735/mcp”``,
“–allow-http”
],
“env”: {
“PATH”: “/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin”
}
}
},
“preferences”: {
“remoteToolsDeviceName”: “mac-2-modem”,
“coworkWebSearchEnabled”: true,
“coworkScheduledTasksEnabled”: false,
“ccdScheduledTasksEnabled”: false,
“coworkModelAutoFallbackByAccount”: {
“5c8ac489-af47-4548-b1ac-918e0ab0efe6”: true
},
“bypassPermissionsGateByAccount”: {
“5c8ac489-af47-4548-b1ac-918e0ab0efe6”: false
},
“epitaxyPrefs”: {
“starred-local-code-sessions”: ,
“starred-cowork-spaces”: ,
“starred-session-groups”: ,
“dframe-local-slice”: {
“pinnedOrder”: ,
“customGroupAssignments”: {},
“customGroupOrder”: {}
}
}
},
“coworkUserFilesPath”: “/Users/peterbittner/Claude”
}

Log File:



2026-06-04T06:23:13.492Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T06:23:13.503Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
[length]: 4
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T06:23:13.504Z [homey] [info] Server started and connected successfully { metadata: undefined }
2026-06-04T06:23:13.518Z [homey] [info] Message from client: {“method”:“initialize”,“params”:{“protocolVersion”:“2025-11-25”,“capabilities”:{“extensions”:{“io.modelcontextprotocol/ui”:{“mimeTypes”:[“text/html;profile=mcp-app”]}}},“clientInfo”:{“name”:“claude-ai”,“version”:“0.1.0”}},“jsonrpc”:“2.0”,“id”:0} { metadata: undefined }
[18399] Using automatically selected callback port: 34887
[18399] Discovering OAuth server configuration…
[18399] [18399] Connecting to remote server: http://192.168.0.73:8735/mcp
[18399] Using transport strategy: http-first
[18399] Connection error: [TypeError: fetch failed] {
[cause]: Error: connect EHOSTUNREACH 192.168.0.73:8735 - Local (192.168.0.184:58499)
at internalConnect (node:net:1169:16)
at defaultTriggerAsyncIdScope (node:internal/async_hooks:473:12)
at node:net:1415:9
at process.processTicksAndRejections (node:internal/process/task_queues:85:11) {
errno: -65,
code: ‘EHOSTUNREACH’,
syscall: ‘connect’,
address: ‘192.168.0.73’,
port: 8735
}
}
[18399] Fatal error: [TypeError: fetch failed] {
[cause]: Error: connect EHOSTUNREACH 192.168.0.73:8735 - Local (192.168.0.184:58499)
at internalConnect (node:net:1169:16)
at defaultTriggerAsyncIdScope (node:internal/async_hooks:473:12)
at node:net:1415:9
at process.processTicksAndRejections (node:internal/process/task_queues:85:11) {
errno: -65,
code: ‘EHOSTUNREACH’,
syscall: ‘connect’,
address: ‘192.168.0.73’,
port: 8735
}
}
2026-06-04T06:23:14.416Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T06:23:14.416Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T06:23:14.416Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T06:23:14.416Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:23:14.416Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:32:57.465Z [homey] [info] Shutting down server… { metadata: undefined }
2026-06-04T06:32:57.466Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:33:38.980Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T06:33:38.991Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
[length]: 4
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T06:33:38.991Z [homey] [info] Server started and connected successfully { metadata: undefined }
2026-06-04T06:33:39.021Z [homey] [info] Message from client: {“method”:“initialize”,“params”:{“protocolVersion”:“2025-11-25”,“capabilities”:{“extensions”:{“io.modelcontextprotocol/ui”:{“mimeTypes”:[“text/html;profile=mcp-app”]}}},“clientInfo”:{“name”:“claude-ai”,“version”:“0.1.0”}},“jsonrpc”:“2.0”,“id”:0} { metadata: undefined }
[18558] Using automatically selected callback port: 34887
[18558] Discovering OAuth server configuration…
[18558] [18558] Connecting to remote server: http://192.168.0.73:8735/mcp
[18558] Using transport strategy: http-first
[18558] Connection error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
[18558] Fatal error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
2026-06-04T06:33:39.508Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T06:33:39.508Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T06:33:39.509Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T06:33:39.509Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:33:39.509Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:41:07.412Z [homey] [info] Shutting down server… { metadata: undefined }
2026-06-04T06:41:07.412Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:41:28.523Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T06:41:28.533Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
‘–transport’,
‘sse’,
[length]: 6
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T06:41:28.534Z [homey] [info] Server started and connected successfully { metadata: undefined }
2026-06-04T06:41:28.568Z [homey] [info] Message from client: {“method”:“initialize”,“params”:{“protocolVersion”:“2025-11-25”,“capabilities”:{“extensions”:{“io.modelcontextprotocol/ui”:{“mimeTypes”:[“text/html;profile=mcp-app”]}}},“clientInfo”:{“name”:“claude-ai”,“version”:“0.1.0”}},“jsonrpc”:“2.0”,“id”:0} { metadata: undefined }
[18650] Warning: Ignoring invalid transport strategy: sse. Valid values are: sse-only, http-only, sse-first, http-first
[18650] Using automatically selected callback port: 34887
[18650] Discovering OAuth server configuration…
[18650] [18650] Connecting to remote server: http://192.168.0.73:8735/mcp
[18650] Using transport strategy: http-first
[18650] Connection error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
[18650] Fatal error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
2026-06-04T06:41:29.530Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T06:41:29.530Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T06:41:29.530Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T06:41:29.530Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:41:29.530Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:44:00.948Z [homey] [info] Shutting down server… { metadata: undefined }
2026-06-04T06:44:00.948Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:49:17.358Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T06:49:17.368Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
‘–transport’,
‘sse-only’,
[length]: 6
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T06:49:17.369Z [homey] [info] Server started and connected successfully { metadata: undefined }
2026-06-04T06:49:17.398Z [homey] [info] Message from client: {“method”:“initialize”,“params”:{“protocolVersion”:“2025-11-25”,“capabilities”:{“extensions”:{“io.modelcontextprotocol/ui”:{“mimeTypes”:[“text/html;profile=mcp-app”]}}},“clientInfo”:{“name”:“claude-ai”,“version”:“0.1.0”}},“jsonrpc”:“2.0”,“id”:0} { metadata: undefined }
[18750] Using transport strategy: sse-only
[18750] Using automatically selected callback port: 34887
[18750] Discovering OAuth server configuration…
[18750] [18750] Connecting to remote server: http://192.168.0.73:8735/mcp
[18750] Using transport strategy: sse-only
[18750] Connection error: SseError: SSE error: Non-200 status code (405)
at _eventSource.onerror (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19462:24)
at EventSource.failConnection_fn (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19316:55)
at file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19158:74
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: 405,
event: {
type: ‘error’,
message: ‘Non-200 status code (405)’,
code: 405,
defaultPrevented: false,
cancelable: false,
timeStamp: 236.613417
}
}
[18750] Fatal error: SseError: SSE error: Non-200 status code (405)
at _eventSource.onerror (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19462:24)
at EventSource.failConnection_fn (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19316:55)
at file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19158:74
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: 405,
event: {
type: ‘error’,
message: ‘Non-200 status code (405)’,
code: 405,
defaultPrevented: false,
cancelable: false,
timeStamp: 236.613417
}
}
2026-06-04T06:49:17.862Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T06:49:17.862Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T06:49:17.862Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T06:49:17.862Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:49:17.862Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:54:59.211Z [homey] [info] Shutting down server… { metadata: undefined }
2026-06-04T06:54:59.211Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:56:34.646Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T06:56:34.657Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
‘–transport’,
‘sse-first’,
[length]: 6
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T06:56:34.658Z [homey] [info] Server started and connected successfully { metadata: undefined }
[18846] Using transport strategy: sse-first
[18846] Using automatically selected callback port: 34887
[18846] Discovering OAuth server configuration…
[18846] [18846] Connecting to remote server: http://192.168.0.73:8735/mcp
[18846] Using transport strategy: sse-first
[18846] Received error (status unknown): SSE error: Non-200 status code (405)
[18846] Recursively reconnecting for reason: falling-back-to-alternate-transport
[18846] [18846] Connecting to remote server: http://192.168.0.73:8735/mcp
[18846] Using transport strategy: http-only
[18846] Connection error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
[18846] Fatal error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
2026-06-04T06:56:35.556Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T06:56:35.556Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T06:56:35.556Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T06:56:35.556Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T06:56:35.556Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:05:00.892Z [homey] [info] Shutting down server… { metadata: undefined }
2026-06-04T07:05:00.892Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:05:06.664Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T07:05:06.674Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
[length]: 4
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T07:05:06.675Z [homey] [info] Server started and connected successfully { metadata: undefined }
2026-06-04T07:05:06.705Z [homey] [info] Message from client: {“method”:“initialize”,“params”:{“protocolVersion”:“2025-11-25”,“capabilities”:{“extensions”:{“io.modelcontextprotocol/ui”:{“mimeTypes”:[“text/html;profile=mcp-app”]}}},“clientInfo”:{“name”:“claude-ai”,“version”:“0.1.0”}},“jsonrpc”:“2.0”,“id”:0} { metadata: undefined }
[18907] Using automatically selected callback port: 34887
[18907] Discovering OAuth server configuration…
[18907] [18907] Connecting to remote server: http://192.168.0.73:8735/mcp
[18907] Using transport strategy: http-first
[18907] Connection error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
[18907] Fatal error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
2026-06-04T07:05:07.504Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T07:05:07.504Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T07:05:07.504Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T07:05:07.504Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:05:07.504Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:06:00.865Z [homey] [info] Shutting down server… { metadata: undefined }
2026-06-04T07:06:00.866Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:06:06.063Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T07:06:06.081Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
[length]: 4
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T07:06:06.082Z [homey] [info] Server started and connected successfully { metadata: undefined }
2026-06-04T07:06:06.105Z [homey] [info] Message from client: {“method”:“initialize”,“params”:{“protocolVersion”:“2025-11-25”,“capabilities”:{“extensions”:{“io.modelcontextprotocol/ui”:{“mimeTypes”:[“text/html;profile=mcp-app”]}}},“clientInfo”:{“name”:“claude-ai”,“version”:“0.1.0”}},“jsonrpc”:“2.0”,“id”:0} { metadata: undefined }
[18954] Using automatically selected callback port: 34887
[18954] Discovering OAuth server configuration…
[18954] [18954] Connecting to remote server: http://192.168.0.73:8735/mcp
[18954] Using transport strategy: http-first
[18954] Connection error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
[18954] Fatal error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
2026-06-04T07:06:06.628Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T07:06:06.628Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T07:06:06.628Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T07:06:06.628Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:06:06.629Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:11:49.947Z [homey] [info] Shutting down server… { metadata: undefined }
2026-06-04T07:11:49.947Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:11:54.843Z [homey] [info] Initializing server… { metadata: undefined }
2026-06-04T07:11:54.853Z [homey] [info] Using MCP server command: /opt/homebrew/bin/npx with args and path: {
metadata: {
args: [
‘-y’,
‘mcp-remote’,
‘http://192.168.0.73:8735/mcp’,
‘–allow-http’,
[length]: 4
],
paths: [
‘/opt/homebrew/bin’,
‘/opt/homebrew/sbin’,
‘/usr/local/bin’,
‘/System/Cryptexes/App/usr/bin’,
‘/usr/bin’,
‘/bin’,
‘/usr/sbin’,
‘/sbin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin’,
‘/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin’,
‘/pkg/env/global/bin’,
[length]: 12
]
}
} %o
2026-06-04T07:11:54.854Z [homey] [info] Server started and connected successfully { metadata: undefined }
[19035] Using automatically selected callback port: 34887
[19035] Discovering OAuth server configuration…
[19035] [19035] Connecting to remote server: http://192.168.0.73:8735/mcp
[19035] Using transport strategy: http-first
[19035] Connection error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
[19035] Fatal error: StreamableHTTPError: Streamable HTTP error: Unexpected content type: null
at StreamableHTTPClientTransport.send (file:///opt/homebrew/lib/node_modules/mcp-remote/dist/chunk-65X3S4HB.js:19922:17)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
code: -1
}
2026-06-04T07:11:55.744Z [homey] [info] Server transport closed { metadata: undefined }
2026-06-04T07:11:55.744Z [homey] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }
2026-06-04T07:11:55.744Z [homey] [error] Server disconnected. For troubleshooting guidance, please visit our debugging documentation { metadata: { context: ‘connection’, stack: undefined } }
2026-06-04T07:11:55.745Z [homey] [info] Client transport closed { metadata: undefined }
2026-06-04T07:11:55.745Z [homey] [info] Client transport closed { metadata: undefined }

Thanks @Peter_Bittner I’ll take a look and also think through a simple work-around for the https issue. Personally I use a reverse proxy which is why I didn’t hit the issue myself, but that’s a bit over complex just for accessing this so will come up with a simpler solution for users

Apologies for the long story. I finally have it working thanks to Claude. He changed the config file to the one pasted below. (Claude note: the --header "Accept: application/json, text/event-stream" flag was the key that unlocked it.). Wallah! Claude can now list all my devices etc.

{
“mcpServers”: {
“homey”: {
“command”: “npx”,
“args”: [
“-y”,
“mcp-remote@latest”,
“``http://192.168.0.73:8735/mcp”``,
“–allow-http”,
“–header”,
“Accept: application/json, text/event-stream”
],
“env”: {
“PATH”: “/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin”
}
}
},
“preferences”: {
“coworkWebSearchEnabled”: true,
“remoteToolsDeviceName”: “mac-2-modem”,
“coworkModelAutoFallbackByAccount”: {
“5c8ac489-af47-4548-b1ac-918e0ab0efe6”: true
},
“coworkScheduledTasksEnabled”: false,
“ccdScheduledTasksEnabled”: false,
“bypassPermissionsGateByAccount”: {
“5c8ac489-af47-4548-b1ac-918e0ab0efe6”: false
},
“epitaxyPrefs”: {
“starred-local-code-sessions”: ,
“starred-cowork-spaces”: ,
“starred-session-groups”: ,
“dframe-local-slice”: {
“pinnedOrder”: ,
“customGroupAssignments”: {},
“customGroupOrder”: {}
}
}
},
“coworkUserFilesPath”: “/Users/peterbittner/Claude”
}

What form do you keep the docs in, and where do you store them?

Described in more detail in the first post in this thread but the short answer is markdown files and I use NotePlan but there are loads of options for that. Markdown is pretty token efficient for the AI tools.

Thanks Jonathon. Do you have issues with Claudes accuracy. He makes a lot of mistakes when documenting the flows.

I’ve found with most use cases, the first draft of the first one needs a fair bit of iteration. But if you do that iteration in Claude and then ask it to incorporate the approach into your skill then the process gets quicker and requires less correction each time. I put a step in my skill which explicitly looked for and suggested improvements to the skill after each time I used it. After maybe the first 5 notes, the suggestions were getting really minor and I actually removed that step again as the skill was pretty ‘mature’ by that point. Early corrections I had to give were things like paying close attention to whether condition cards were connected by the true / false connector which is pretty important! But it’s a very quick one time fix if you then add that into the skill.

OK, sounds like I need to learn how to create a skill. Would you be able to give a head start. What does “put a step in my skill which explicitly looked for and suggested improvements to the skill after each time I used it.” look like? Or will this become obvious as I start building the skill.

Jonathon, When trying to improve the skill I got Claude to develop a document with a table of devices and the zones they were in. I have a habit (probably a bad one) of naming a device Table Lamp so I have many of them and use the zone they are in to determine differentiate them. This seemed to confuse Claude quite a bit.

Claude said he didn’t have access to zone info. Is this something which could be included?

Hi Peter. Yes the MCP in this app is read only. That’s a limitation of the MCP not Claude. My purposes are for documentation so it only needs to be read only. I have no plans to make it write charges but there are plenty of other MCP options which do that if that’s what you’re looking for.

On your question about skills, the way to start is to ask Claude to help. Generally I’ve found that going through the process in a chat thread step by step once and then asking Claude to turn that process into a repeatable skill is a very good place to start.

Thanks Jonathon. I think I get it now. Apologies for my message changing. I started editing it this morning and onl;y just got around to finishing - then saw you had replierd.

I learned a new lesson re updates today. I made a lot of changes to a small number of related flows. Then I asked for a resync of my documentation only to be thwarted by a 1Mb limit. I thought fit was an AI related limitation but apparently my changed log was huge and Claude wasn’t able to pull it down from Homey due to an API limitation (probably a reasonable one). So now I know, do a re sync often after small changes and don’t let the change log get too large.

Today I installed a new router - Had to be done - so all new IP addresses. Has been a fun day. Everything back working except for this MCP server. I can get to the Homey cross reference index on port 8734, but no luck getting the Claude connector up on 8735. Looks like I might have to delete the App and start again, although I’m not sure that will work either. I have had Claude helping me for about 3 hours now but no luck.

Any ideas Jonathon.

What did you try so far? I would have guessed it would only require editing the Claude desktop config file with the new IP and then restarting Claude. But I guess you already tried that?

Yes, tried that. I’ve tried pretty much everything. I’ll just remove the App and start again.

Wierd. The new router I go was a Netgear Orbi. It was doing some wierd things, especially with Homey. It was connected and had an IP address but I couldn’t ping it. I got Netgear tech support. They changed a couple of parameters in the WiFi section (set channels off auto → channel 6) and away it went. All devices got reconnected and now it all works again.