Skip to content

benjmac/ring-developer-mcp

Repository files navigation

Ring Developer MCP Server

A developer toolkit MCP server for building Amazon Ring integrations. Unlike Ring's official MCP — which provides documentation search — this server generates production-ready code, validates your configuration, and guides you through certification and publishing. One tool call gives you a working, self-contained module instead of requiring multiple doc searches and LLM interpretation.

How It Differs from Ring's Official MCP

Ring provides an official Appstore Knowledge MCP server with two tools (search_docs and get_doc) for searching their documentation. It's a great reference tool, and this server can even proxy queries to it.

This MCP server is a developer toolkit that goes beyond documentation:

  • Code generation — 6 tools that produce self-contained, plug-and-play modules (OAuth, webhooks, device client, streaming, video processing). Each module includes its own auth, error handling, and everything needed to run — no phantom imports, no missing dependencies.
  • Structured API reference — typed endpoint definitions, webhook payload schemas, and OAuth flow details optimized for LLM consumption, not prose paragraphs.
  • Developer workflow — config validation, certification checklist, testing guide, and publishing guide covering the full lifecycle from build to app store.
  • Deterministic output — the same tool call produces the same proven code every time, unlike doc-search approaches where output varies per LLM and per prompt.
  • Offline-first — built-in knowledge base works without network access, with optional remote fallback to Ring's official MCP.

You can use both servers together. This one handles code generation and workflows; Ring's handles live documentation search.

What It Does

This MCP server provides 16 tools across four categories that cover the full Ring development lifecycle:

Documentation & Search

Tool Description
search_ring_docs Search Ring documentation with local knowledge base + optional proxy to Ring's official MCP
refresh_ring_docs Fetch latest docs from the Ring developer portal and update the local cache

API Reference

Tool Description
get_ring_api_reference Browse Ring Partner API endpoints by category or search by keyword
get_ring_webhook_schema Get webhook event payload schemas with examples (motion, person, device events)
get_ring_oauth_reference OAuth 2.0 account linking flow, required endpoints, and configuration

Code Generation

Tool Description
scaffold_ring_project Generate complete project structure (Next.js or Express)
generate_ring_oauth Production-ready OAuth token management with caching and auto-refresh
generate_ring_webhook_handler Webhook handler with HMAC-SHA256 verification and idempotency
generate_ring_device_client Device discovery, status monitoring, and capability inspection
generate_ring_streaming_client WebRTC/WHEP live video streaming with session management
generate_ring_video_processor Video processor plugin for real-time camera feed analysis
generate_ring_env_template Environment variables template with security reminders

Validation & Workflow

Tool Description
validate_ring_config Validate credentials, endpoints (HTTPS), and app metadata
get_ring_certification_checklist Complete certification checklist with common rejection reasons
get_ring_testing_guide Staging environment setup and testing workflows
get_ring_publishing_guide Rollout strategies, monetization, and version management

Quick Start

Prerequisites

Choose one:

  • Node.js 22+ for building from source
  • Docker for containerized deployment

Plus any AI coding assistant that supports MCP (Claude Desktop, Cursor, VS Code, Kiro, Cline, Windsurf).

Option A: Build from Source

git clone https://github.com/benjmac/ring-developer-mcp.git
cd ring-developer-mcp
npm install
npm run build

Option B: Docker

git clone https://github.com/benjmac/ring-developer-mcp.git
cd ring-developer-mcp
docker build -t ring-developer-mcp .

Or using npm scripts:

npm run docker:build

Verify the Docker image works:

echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":1}' | docker run -i --rm ring-developer-mcp

You should see a JSON response with "serverInfo":{"name":"ring-developer-mcp"}.


Connect to Your AI Assistant

Below are configurations for every major AI coding tool. Each shows both Node.js and Docker variants — pick whichever matches how you built the server.

Important: Replace /absolute/path/to/ring-developer-mcp with the actual path where you cloned the repo.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

Node.js
{
  "mcpServers": {
    "ring-developer": {
      "command": "node",
      "args": ["/absolute/path/to/ring-developer-mcp/dist/index.js"]
    }
  }
}
Docker
{
  "mcpServers": {
    "ring-developer": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ring-developer-mcp"]
    }
  }
}

VS Code (Claude Code Extension)

Add to .vscode/settings.json or user settings:

Node.js
{
  "claude-code.mcpServers": {
    "ring-developer": {
      "command": "node",
      "args": ["/absolute/path/to/ring-developer-mcp/dist/index.js"]
    }
  }
}
Docker
{
  "claude-code.mcpServers": {
    "ring-developer": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ring-developer-mcp"]
    }
  }
}

Cursor

Settings > Features > MCP > Edit Config:

Node.js
{
  "mcpServers": {
    "ring-developer": {
      "command": "node",
      "args": ["/absolute/path/to/ring-developer-mcp/dist/index.js"]
    }
  }
}
Docker
{
  "mcpServers": {
    "ring-developer": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ring-developer-mcp"]
    }
  }
}

Kiro

Kiro button > MCP Servers > Edit:

Node.js
{
  "ring-developer": {
    "command": "node",
    "args": ["/absolute/path/to/ring-developer-mcp/dist/index.js"]
  }
}
Docker
{
  "ring-developer": {
    "command": "docker",
    "args": ["run", "-i", "--rm", "ring-developer-mcp"]
  }
}

Cline (VS Code)

Cline icon > MCP Servers > Installed > Add MCP Server:

  • Node.js: node /absolute/path/to/ring-developer-mcp/dist/index.js
  • Docker: docker run -i --rm ring-developer-mcp

Windsurf

Add to MCP configuration:

Node.js
{
  "mcpServers": {
    "ring-developer": {
      "command": "node",
      "args": ["/absolute/path/to/ring-developer-mcp/dist/index.js"]
    }
  }
}
Docker
{
  "mcpServers": {
    "ring-developer": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ring-developer-mcp"]
    }
  }
}

Verify It Works

After configuring, restart your AI assistant and ask:

"Search the Ring docs for how authentication works"

You should see the search_ring_docs tool invoked and get back detailed OAuth and API reference information.

Usage Examples

Once configured, ask your AI assistant questions like:

Getting Started

"Search the Ring docs for how to get started with the Ring API"

"Show me the Ring OAuth flow and generate the auth module"

Building Features

"Generate a webhook handler for my Next.js app with HMAC verification"

"Create a WebRTC streaming client for Ring cameras"

"Generate a device client that lists all cameras and their status"

"Scaffold a new Ring integration project using Express"

Preparing for Launch

"Validate my Ring app configuration for certification"

"Show me the certification checklist — what do I need before submitting?"

"What are the common rejection reasons for Ring app certification?"

Staying Current

"Refresh the Ring documentation cache with the latest content"

Architecture

Each tool is a self-contained module in its own file — one tool, one file — organized by category:

src/
├── index.ts                          # Entry point — stdio MCP transport
├── server.ts                         # Tool registration hub
├── tools/
│   ├── types.ts                      # Shared ToolDefinition and ToolResult types
│   ├── docs/
│   │   ├── cache.ts                  # Documentation cache with 24h TTL
│   │   ├── search-docs.ts           # search_ring_docs
│   │   └── refresh-docs.ts          # refresh_ring_docs
│   ├── api/
│   │   ├── get-api-reference.ts     # get_ring_api_reference
│   │   ├── get-webhook-schema.ts    # get_ring_webhook_schema
│   │   └── get-oauth-reference.ts   # get_ring_oauth_reference
│   ├── codegen/
│   │   ├── scaffold-project.ts      # scaffold_ring_project
│   │   ├── generate-oauth.ts        # generate_ring_oauth
│   │   ├── generate-webhook-handler.ts  # generate_ring_webhook_handler
│   │   ├── generate-device-client.ts    # generate_ring_device_client
│   │   ├── generate-streaming-client.ts # generate_ring_streaming_client
│   │   ├── generate-video-processor.ts  # generate_ring_video_processor
│   │   └── generate-env-template.ts     # generate_ring_env_template
│   └── workflow/
│       ├── validate-config.ts       # validate_ring_config
│       ├── get-certification-checklist.ts  # get_ring_certification_checklist
│       ├── get-testing-guide.ts     # get_ring_testing_guide
│       └── get-publishing-guide.ts  # get_ring_publishing_guide
└── knowledge/
    ├── api-endpoints.ts     # Ring Partner API endpoint definitions
    ├── webhook-schemas.ts   # Webhook event types and payload schemas
    ├── oauth-config.ts      # OAuth configuration and account linking reference
    ├── guides.ts            # Certification, testing, and publishing guides
    └── templates.ts         # Code generation templates (self-contained modules)

Design Decisions

  • Zero runtime dependencies beyond MCP SDK and Zod — no bloat, fast startup
  • Built-in knowledge base — works offline with comprehensive Ring API reference data
  • Remote doc proxy — optionally queries Ring's official Appstore Knowledge MCP server for the latest docs
  • Framework-agnostic code gen — generates code for Next.js, Express, or standalone Node.js
  • Security-first templates — all generated code includes HMAC verification, token caching, HTTPS enforcement, and idempotency

Development

# Watch mode for development
npm run dev

# Type check without emitting
npm run typecheck

# Clean build artifacts
npm run clean

# Full rebuild
npm run clean && npm run build

Ring API Coverage

This server covers the complete Ring Partner API:

Category Endpoints
Authentication OAuth token exchange via refresh_token grant
Users GET /v1/users/me
Devices Discovery, status, capabilities, location, configurations
Video Streaming WHEP session creation (POST) and cleanup (DELETE)
Account Linking POST + PATCH for account link lifecycle
Media Clips POST download for recorded video footage
Webhooks motion_detected, person_detected, button_press, device_added, device_removed, device_online, device_offline

Ring's Official MCP

Ring provides an official Appstore Knowledge MCP server (https://knowledge.appstore-mcp.ring.amazon.dev/mcp) with documentation search powered by Amazon Bedrock. See Ring's MCP docs for setup instructions.

The two servers complement each other well — use Ring's for live documentation search and this one for code generation, structured API reference, and developer workflows. The search_ring_docs tool in this server can proxy queries to Ring's MCP when you set source: "remote" or source: "both".

Ring Developer Resources

Official documentation and references used to build this MCP server:

  • Ring Developer Portalhttps://developer.amazon.com/ring
  • Ring API Hello World — Amazon's official example repo for the Ring Partner API. A great reference for working code examples and was an inspiration for this project. If you're looking for hands-on sample code beyond what this MCP generates, start there.

Developer Lifecycle

API Documentation

Authentication

Device Discovery

Webhook Notifications

Other APIs

License

MIT

About

MCP for aiding in ring development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages