@striderlabs/mcp-simplisafe 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
File without changes
package/dist/index.js ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+
4
+ // src/index.ts
5
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
6
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
8
+ var server = new Server(
9
+ { name: "striderlabs-mcp-simplisafe", version: "1.0.0" },
10
+ { capabilities: { tools: {} } }
11
+ );
12
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
13
+ tools: [
14
+ { name: "simplisafe_status", description: "Check SimpliSafe login status", inputSchema: { type: "object", properties: {} } },
15
+ { name: "simplisafe_login", description: "Open SimpliSafe login page. User completes login manually.", inputSchema: { type: "object", properties: {} } },
16
+ { name: "simplisafe_confirm_login", description: "Confirm and save SimpliSafe session", inputSchema: { type: "object", properties: {} } },
17
+ { name: "simplisafe_logout", description: "Clear SimpliSafe session", inputSchema: { type: "object", properties: {} } },
18
+ { name: "simplisafe_get_systems", description: "Get all SimpliSafe systems/locations", inputSchema: { type: "object", properties: {} } },
19
+ { name: "simplisafe_get_sensors", description: "Get all sensors for a system", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" } } } },
20
+ { name: "simplisafe_arm_system", description: "Arm SimpliSafe system. Requires confirm=true.", inputSchema: { type: "object", required: ["system_id", "mode", "confirm"], properties: { system_id: { type: "string" }, mode: { type: "string", enum: ["home", "away"] }, confirm: { type: "boolean" } } } },
21
+ { name: "simplisafe_disarm_system", description: "Disarm SimpliSafe system. Requires confirm=true.", inputSchema: { type: "object", required: ["system_id", "confirm"], properties: { system_id: { type: "string" }, confirm: { type: "boolean" } } } },
22
+ { name: "simplisafe_get_system_status", description: "Get current arm/disarm status", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" } } } },
23
+ { name: "simplisafe_get_events", description: "Get recent alarm events and alerts", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" }, limit: { type: "number", default: 20 } } } },
24
+ { name: "simplisafe_get_cameras", description: "Get SimpliSafe cameras and their status", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" } } } },
25
+ { name: "simplisafe_get_camera_recording", description: "Get recent camera recordings", inputSchema: { type: "object", required: ["camera_id"], properties: { camera_id: { type: "string" }, limit: { type: "number", default: 10 } } } }
26
+ ]
27
+ }));
28
+ server.setRequestHandler(CallToolRequestSchema, async (req) => {
29
+ const { name } = req.params;
30
+ return { content: [{ type: "text", text: JSON.stringify({ success: false, error: `${name}: Not implemented. SimpliSafe API integration pending.` }) }] };
31
+ });
32
+ var transport = new StdioServerTransport();
33
+ await server.connect(transport);
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@striderlabs/mcp-simplisafe",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for SimpliSafe — let AI agents manage SimpliSafe alarm, sensors, and cameras",
5
+ "main": "dist/index.js",
6
+ "bin": { "striderlabs-mcp-simplisafe": "dist/index.js" },
7
+ "type": "module",
8
+ "scripts": {
9
+ "build": "esbuild src/index.ts --bundle --platform=node --format=esm --packages=external --outfile=dist/index.js --banner:js='#!/usr/bin/env node'",
10
+ "start": "node dist/index.js"
11
+ },
12
+ "keywords": ["mcp", "simplisafe", "security", "alarm", "sensors", "ai-agent", "strider"],
13
+ "author": "Strider Labs <hello@striderlabs.ai>",
14
+ "license": "MIT",
15
+ "homepage": "https://striderlabs.ai",
16
+ "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0", "patchright": "^1.58.2" },
17
+ "devDependencies": { "@types/node": "^20.11.0", "esbuild": "^0.20.0", "typescript": "^5.3.3" },
18
+ "mcpName": "io.striderlabs/simplisafe"
19
+ }
package/src/index.ts ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
5
+
6
+ const server = new Server(
7
+ { name: "striderlabs-mcp-simplisafe", version: "1.0.0" },
8
+ { capabilities: { tools: {} } }
9
+ );
10
+
11
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
12
+ tools: [
13
+ { name: "simplisafe_status", description: "Check SimpliSafe login status", inputSchema: { type: "object", properties: {} } },
14
+ { name: "simplisafe_login", description: "Open SimpliSafe login page. User completes login manually.", inputSchema: { type: "object", properties: {} } },
15
+ { name: "simplisafe_confirm_login", description: "Confirm and save SimpliSafe session", inputSchema: { type: "object", properties: {} } },
16
+ { name: "simplisafe_logout", description: "Clear SimpliSafe session", inputSchema: { type: "object", properties: {} } },
17
+ { name: "simplisafe_get_systems", description: "Get all SimpliSafe systems/locations", inputSchema: { type: "object", properties: {} } },
18
+ { name: "simplisafe_get_sensors", description: "Get all sensors for a system", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" } } } },
19
+ { name: "simplisafe_arm_system", description: "Arm SimpliSafe system. Requires confirm=true.", inputSchema: { type: "object", required: ["system_id", "mode", "confirm"], properties: { system_id: { type: "string" }, mode: { type: "string", enum: ["home", "away"] }, confirm: { type: "boolean" } } } },
20
+ { name: "simplisafe_disarm_system", description: "Disarm SimpliSafe system. Requires confirm=true.", inputSchema: { type: "object", required: ["system_id", "confirm"], properties: { system_id: { type: "string" }, confirm: { type: "boolean" } } } },
21
+ { name: "simplisafe_get_system_status", description: "Get current arm/disarm status", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" } } } },
22
+ { name: "simplisafe_get_events", description: "Get recent alarm events and alerts", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" }, limit: { type: "number", default: 20 } } } },
23
+ { name: "simplisafe_get_cameras", description: "Get SimpliSafe cameras and their status", inputSchema: { type: "object", required: ["system_id"], properties: { system_id: { type: "string" } } } },
24
+ { name: "simplisafe_get_camera_recording", description: "Get recent camera recordings", inputSchema: { type: "object", required: ["camera_id"], properties: { camera_id: { type: "string" }, limit: { type: "number", default: 10 } } } },
25
+ ],
26
+ }));
27
+
28
+ server.setRequestHandler(CallToolRequestSchema, async (req) => {
29
+ const { name } = req.params;
30
+ return { content: [{ type: "text", text: JSON.stringify({ success: false, error: `${name}: Not implemented. SimpliSafe API integration pending.` }) }] };
31
+ });
32
+
33
+ const transport = new StdioServerTransport();
34
+ await server.connect(transport);
package/tsconfig.json ADDED
@@ -0,0 +1 @@
1
+ { "compilerOptions": { "target": "ES2022", "module": "ESNext", "moduleResolution": "bundler", "esModuleInterop": true, "strict": true, "skipLibCheck": true, "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*"] }