MCP Server

Divya & Sreejith Wedding

Model Context Protocol v2024-11-05

What is This?

This is a Model Context Protocol (MCP) server that provides AI agents and applications with structured access to wedding information. MCP enables AI assistants like Claude, GitHub Copilot, and other tools to fetch real-time event details, venue information, and accept RSVPs programmatically.

Configuration

Add this to your MCP client configuration:

{
  "mcpServers": {
    "divya-sreejith-wedding": {
      "url": "https://divyasreeni.com/.well-known/mcp",
      "transport": {
        "type": "http"
      },
      "description": "Wedding information and RSVP service for Divya & Sreejith"
    }
  }
}
Endpoint: POST /.well-known/mcp
Protocol: HTTP (JSON-RPC 2.0)

Available Tools 10 tools

get_wedding_details

GET

Get comprehensive wedding information including couple details, date, and location.

View Response Example
{
  "couple": {
    "bride": {
        "name": "Divya Mol",
        "education": "B.Tech, College of Engineering, Cherthala",
        "profession": "Software Engineer",
        "parents": "Shri SunilKumar & Smt. Sajimol",
        "address": "Madathikkattil house, Puthenkavu, Ernakulam 682307",
        "instagram": "@the_curl_lover"
    },
    "groom": {
        "name": "Sreejith Sivaram",
        "education": "B.Tech, College of Engineering, Cherthala",
        "profession": "Electrical Engineer",
        "parents": "Shri Sivaraman & Smt. Sujatha",
        "address": "Thindamcheril house, Punnamada, Avalookkunnu, Alappuzha 680007",
        "instagram": "@sivaramsreejith"
    }
  },
  "date": "2026-08-23",
  "location": [
    {
      "type": "wedding",
      "address": "NSS Karayogam Auditorium Amballur, Near Poothotta, Kochi 682315",
      "mapUrl": "https://www.google.com/maps/search/?api=1&query=NSS%20Karayogam%20Auditorium%2C%20Amballur%2C%20Kochi%20682315"
    },
    {
      "type": "reception",
      "address": "St. Mary's Church Punnamada, Alappuzha 688006",
      "mapUrl": "https://www.google.com/maps/search/?api=1&query=St.%20Mary%27s%20Church%2C%20Punnamada"
    }
  ],
  "website": "https://divyasreeni.com",
  "description": "A Royal Union of Divya and Sreejith"
}

get_event_schedule

GET

Get the complete schedule of wedding events with timings and locations.

Optional Parameters: date: string (YYYY-MM-DD)
View Response Example
[
  {
    "name": "The Wedding Ceremony",
    "date": "2026-08-23",
    "startTime": "10:00",
    "endTime": "11:00",
    "description": "Join us as we exchange our vows and start our new journey",
    "type": "ceremony",
    "location": "NSS Karayogam Auditorium Amballur, Near Poothotta, Kochi 682315",
    "mapUrl": "https://www.google.com/maps/search/?api=1&query=NSS%20Karayogam%20Auditorium"
  },
  {
    "name": "The Wedding Party",
    "date": "2026-08-23",
    "startTime": "11:30",
    "endTime": "14:00",
    "description": "We look forward to sharing our first meal as a married couple",
    "type": "party",
    "location": "NSS Karayogam Auditorium Amballur, Near Poothotta, Kochi 682315"
  },
  {
    "name": "The Wedding Reception",
    "date": "2026-08-23",
    "startTime": "18:00",
    "endTime": "21:00",
    "description": "Join us for the wedding reception and celebrate our union",
    "type": "reception",
    "location": "St. Mary's Church Punnamada, Alappuzha 688006"
  }
]

get_venue_info

GET

Get venue locations and map information for ceremony and reception.

View Response Example
{
  "venue": [
    {
      "location": "NSS Karayogam Auditorium Amballur, Near Poothotta, Kochi 682315",
      "mapUrl": "https://www.google.com/maps/search/?api=1&query=NSS%20Karayogam%20Auditorium",
      "description": "The wedding ceremony and after party will be held at the same venue in Kochi",
      "hasInteractiveMap": true
    },
    {
      "location": "St. Mary's Church Punnamada, Alappuzha 688006",
      "mapUrl": "https://www.google.com/maps/search/?api=1&query=St.%20Mary%27s%20Church%2C%20Punnamada",
      "description": "The wedding reception will be held at St. Mary's Church in Alappuzha",
      "hasInteractiveMap": true
    }
  ]
}

post_rsvp_wishes

POST

Submit RSVP and wishes for the wedding. Data is saved to Firebase Firestore.

Required: name: string message: string
Optional: email: string attending: 'yes' | 'no' | 'maybe' guestCount: number
View Request Example
{
  "name": "John Doe",
  "email": "john@example.com",
  "message": "Congratulations! Wishing you both a lifetime of love and happiness",
  "attending": "yes",
  "guestCount": 2
}
View Response Example
{
  "success": true,
  "message": "Thank you! Your RSVP and wishes have been saved to Firebase Firestore. ✨",
  "data": {
    "name": "John Doe",
    "attendance": "yes",
    "wishes": "Congratulations! Wishing you both...",
    "email": "john@example.com",
    "guestCount": 2,
    "source": "mcp-tool",
    "submittedAt": "2026-07-18T10:30:00.000Z"
  },
  "documentId": "abc123xyz"
}

add_to_calendar

GET

Get calendar integration links to add wedding events to Google, Apple, or Outlook calendars. Supports event-specific links.

Optional Parameters:
event: 'wedding' | 'reception' | 'all' (default: 'all')
provider: 'google' | 'apple' | 'outlook'
View Response Example (wedding event, google)
{
  "event": "wedding",
  "provider": "google",
  "url": "https://calendar.google.com/calendar/render?action=TEMPLATE&text=Divya+%26+Sreejith+-+Wedding+Ceremony+%26+Party...",
  "description": "Wedding ceremony (10:00-11:00) and party (11:30-14:00) at NSS Karayogam Auditorium, Kochi",
  "message": "Calendar link for google - wedding"
}
View Response Example (all events, all providers)
{
  "event": "all",
  "description": "All wedding events: ceremony & party in Kochi (10:00-14:00), reception in Alappuzha (18:00-21:00)",
  "availableProviders": {
    "google": "https://calendar.google.com/calendar/render?action=TEMPLATE...",
    "apple": "https://divyasreeni.com/resources/divya-sreejith-wedding.ics",
    "outlook": "https://divyasreeni.com/resources/divya-sreejith-wedding.ics"
  },
  "message": "Calendar links for all events. Choose a provider to add to your calendar.",
  "instructions": {
    "google": "Opens Google Calendar with pre-filled event details",
    "apple": "Downloads .ics file compatible with Apple Calendar",
    "outlook": "Downloads .ics file compatible with Outlook"
  }
}

get_countdown

GET

Get the time remaining until the wedding date (August 23, 2026 at 10:00 AM IST).

View Response Example
{
  "countdown": {
    "days": 35,
    "hours": 14,
    "minutes": 23,
    "seconds": 45
  },
  "totalMilliseconds": 3065025000,
  "weddingDate": "2026-08-23T04:30:00.000Z",
  "formattedCountdown": "35 days, 14 hours, 23 minutes until the wedding",
  "message": "Only 35 days left until Divya & Sreejith's wedding!"
}

get_guest_responses

GET

Retrieve the list of RSVP responses from wedding guests with optional filtering.

Optional Parameters:
limit: number (default: 50, max: 100)
attending: 'yes' | 'no' | 'maybe' | 'all' (default: 'all')
source: string (filter by submission source)
View Response Example
{
  "success": true,
  "totalCount": 3,
  "limit": 50,
  "filters": {
    "attending": "all",
    "source": null
  },
  "responses": [
    {
      "name": "John Doe",
      "attendance": "yes",
      "wishes": "Congratulations! Looking forward to celebrating...",
      "email": "john@example.com",
      "guestCount": 2,
      "source": "mcp-tool",
      "submittedAt": "2026-07-18T10:30:00.000Z"
    },
    {
      "name": "Jane Smith",
      "attendance": "maybe",
      "wishes": "Wishing you all the best!",
      "email": "",
      "guestCount": 1,
      "source": "webmcp-tool",
      "submittedAt": "2026-07-17T15:20:00.000Z"
    }
  ],
  "message": "Retrieved 3 guest response(s)"
}

generate_share_url

POST

Generate personalized invitation links for one or more guests with base64-encoded names. Supports bulk generation.

Option 1: Bulk Generation (Recommended):
guests: array (Array of guest objects)
Each guest object contains: guestName, invitedBy, eventType
Option 2: Single Guest (Legacy):
guestName: string (e.g., "Ranjith & Family")
invitedBy: 'bride' | 'groom' (Divya or Sreejith)
eventType: string (see options below)

Event Type Options:

  • wedding_only - Ceremony only (bride side)
  • reception_only - Reception only (groom side)
  • wedding_and_reception - Both events (either side)
View Bulk Request Example (Multiple Guests)
{
  "guests": [
    {
      "guestName": "Ranjith & Family",
      "invitedBy": "bride",
      "eventType": "wedding_and_reception"
    },
    {
      "guestName": "Suresh Kumar",
      "invitedBy": "groom",
      "eventType": "reception_only"
    },
    {
      "guestName": "Priya & Arun",
      "invitedBy": "bride",
      "eventType": "wedding_only"
    }
  ]
}
View Single Guest Request Example (Legacy)
{
  "guestName": "Ranjith & Family",
  "invitedBy": "bride",
  "eventType": "wedding_and_reception"
}
View Response Example
{
  "success": true,
  "totalGuests": 3,
  "successfulLinks": 3,
  "failedLinks": 0,
  "results": [
    {
      "success": true,
      "shareUrl": "https://divyasreeni.com/bride/reception?rid=UmFuaml0aCAmIEZhbWlseQ%3D%3D",
      "guestName": "Ranjith & Family",
      "invitedBy": "Divya (Bride)",
      "eventType": "wedding_and_reception",
      "eventDescription": "Wedding Ceremony & Reception"
    },
    {
      "success": true,
      "shareUrl": "https://divyasreeni.com/groom?rid=U3VyZXNoIEt1bWFy",
      "guestName": "Suresh Kumar",
      "invitedBy": "Sreejith (Groom)",
      "eventType": "reception_only",
      "eventDescription": "Reception Only"
    },
    {
      "success": true,
      "shareUrl": "https://divyasreeni.com/bride?rid=UHJpeWEgJiBBcnVu",
      "guestName": "Priya & Arun",
      "invitedBy": "Divya (Bride)",
      "eventType": "wedding_only",
      "eventDescription": "Wedding Ceremony Only"
    }
  ],
  "message": "Generated 3 invitation link(s) for 3 guest(s)"
}

get_our_story

GET

Get the love story and relationship timeline of Divya and Sreejith with key milestones from their journey.

No parameters required
View Response Example
{
  "success": true,
  "our_story": {
    "names": "Divya & Sreejith",
    "title": "Milestones of Our Journey",
    "timeline": [
      {
        "date": "1995 Nov 21",
        "title": "A New Beginning",
        "description": "In the timeless beauty of Alappuzha, Kerala, his story began."
      },
      {
        "date": "1998 Feb 23",
        "title": "Her Story Begins",
        "description": "Miles away, another story unfolded—full of warmth, strength, and dreams..."
      },
      {
        "date": "2016",
        "title": "When Paths Crossed",
        "description": "At CEC College, Cherthala, two paths crossed without expectations..."
      }
      // ... 6 more milestones through 2026
    ]
  },
  "totalMilestones": 9,
  "message": "Retrieved love story with 9 milestones"
}

get_faq

GET

Get frequently asked questions and answers about the wedding, including venue directions, dress code, timing, parking, and photography guidelines.

No parameters required
View Response Example
{
  "success": true,
  "faq": {
    "subtitle": "Need to Know",
    "title": "Frequently Asked",
    "questions_and_answers": [
      {
        "question": "How do I get to the wedding venues?",
        "answer": "Use the \"Open in Maps\" buttons on the Events section to get turn-by-turn directions directly to each venue."
      },
      {
        "question": "What is the dress code?",
        "answer": "There is no specific dress code — wear whatever makes you feel comfortable and celebratory. Come as you are and enjoy the day!"
      },
      {
        "question": "What time should I arrive?",
        "answer": "We recommend arriving at least 15–20 minutes before each event begins. Early arrivals are always welcome!"
      }
      // ... 2 more questions
    ]
  },
  "totalQuestions": 5,
  "message": "Retrieved 5 frequently asked questions"
}

Quick Start

  1. 1 Add the configuration to your MCP client (Claude Desktop, VS Code, etc.)
  2. 2 Restart your AI assistant to load the new server
  3. 3 Ask questions like "What are the wedding details?" or "Get event schedule"

Integration Guides

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "divya-sreejith-wedding": {
      "url": "https://divyasreeni.com/.well-known/mcp",
      "transport": { "type": "http" }
    }
  }
}

VS Code / GitHub Copilot

Add to settings.json:

{
  "github.copilot.advanced": {
    "mcp": {
      "servers": {
        "divya-sreejith-wedding": {
          "url": "https://divyasreeni.com/.well-known/mcp",
          "transport": { "type": "http" }
        }
      }
    }
  }
}

ChatGPT MCP Plugin

Add this MCP server as a plugin in ChatGPT:

  1. 1. Go to ChatGPT Settings (profile icon → Settings)
  2. 2. Navigate to PluginsBrowse PluginsAdd Plugin
  3. 3. Name: Divya & Sreejith Wedding
  4. 4. Connection: Select Server URL tab
  5. 5. Server URL: https://divyasreeni.com/.well-known/mcp
  6. 6. Authentication: None (change from OAuth to None)
  7. 7. Accept the risk warning and click Create

🧪 Test prompts after enabling:

  • • "What are the wedding details?"
  • • "Show me the event schedule"
  • • "How many days until the wedding?"
  • • "Generate a link for Ranjith & Family from bride's side"

Direct API Access

Call the API directly using curl or your HTTP client:

curl -X POST https://divyasreeni.com/.well-known/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "get_wedding_details",
      "arguments": {}
    }
  }'

WebMCP Support

AI agents can interact with this wedding invitation directly through the browser using WebMCP

What is WebMCP?

WebMCP (Web Model Context Protocol) enables AI agents to discover and call MCP tools directly from web pages via the document.modelContext API. When an AI agent browses this wedding website, it automatically detects available tools using getTools() and executes them with executeTool() to perform actions like fetching event details, generating personalized invitation links, or submitting RSVPs—all without leaving the browser.

✨ Key Benefits:

  • Browser-Native: Works directly in the browser without server configuration
  • Auto-Discovery: AI agents automatically find available tools via getTools()
  • Real-Time: Execute tools with executeTool() and get instant responses
  • Zero Setup: No installation or configuration needed for end users

How It Works

  1. 1
    Script Injection:

    The wedding website includes a WebMCP registration script that exposes 10 tools to AI agents

  2. 2
    Tool Discovery:

    When an AI agent browses the page, it detects document.modelContext and calls getTools() to retrieve an alphabetically ordered list of all available tools the agent is authorized to access

  3. 3
    Tool Execution:

    The agent calls executeTool(toolName, argsJSON) with the tool name and arguments as a JSON string. Tools return wedding data immediately or interact with Firebase for RSVP submissions

  4. 4
    Response Handling:

    Results are returned to the agent and presented to the user in natural language

Implementation

The wedding website uses the WebMCP document.modelContext API to register tools:

// WebMCP - Exposes wedding information tools to AI agents
if (typeof document !== 'undefined' && 
    document.modelContext && 
    typeof document.modelContext.registerTool === 'function') {
  
  // Register each tool individually
  document.modelContext.registerTool({
    name: 'get_wedding_details',
    description: 'Get comprehensive wedding information including date, location, and couple details',
    inputSchema: {
      type: 'object',
      properties: {},
      required: []
    },
    execute: async () => {
      return {
        bride: { name: 'Divya Mol', /* ... */ },
        groom: { name: 'Sreejith Sivaram', /* ... */ },
        date: '2026-08-23',
        location: [/* ... */],
        website: 'https://divyasreeni.com'
      };
    }
  });
  
  // Register 9 more tools: get_event_schedule, get_venue_info,
  // post_rsvp_wishes, add_to_calendar, get_countdown,
  // get_guest_responses, generate_share_url,
  // get_our_story, get_faq
  
  console.log('[WebMCP] Successfully registered 10 wedding invitation tools');
}

📝 Key Features:

  • • Uses standard document.modelContext.registerTool() API
  • • AI agents discover tools via document.modelContext.getTools()
  • • Tools are executed via document.modelContext.executeTool(name, args)
  • • Each tool registered individually with name, description, schema, and execute function
  • • Tools return data directly (no HTTP calls needed from browser)
  • • Includes usage tracking via Firebase and Umami Analytics

Tool Discovery API

AI agents use document.modelContext.getTools() to discover available tools:

// Discover all available tools (asynchronous)
const tools = await document.modelContext.getTools();

// Returns an alphabetically ordered array of tool objects:
[
  {
    name: "add_to_calendar",
    description: "Get calendar integration links to add wedding events...",
    inputSchema: { type: "object", properties: { ... } }
  },
  {
    name: "generate_share_url",
    description: "Generate personalized wedding invitation links...",
    inputSchema: { type: "object", properties: { ... } }
  },
  {
    name: "get_countdown",
    description: "Get the time remaining until the wedding date",
    inputSchema: { type: "object", properties: {} }
  },
  // ... 8 more tools (10 total)
]

🔍 Key Points:

  • getTools() is asynchronous and returns a Promise
  • • Tools are returned in alphabetical order by name
  • • Only tools the calling document is authorized to access are returned
  • • Each tool includes name, description, and input schema
  • • AI agents call this method automatically to discover capabilities

Tool Execution API

AI agents execute tools using document.modelContext.executeTool() with input arguments as a JSON string:

// Execute a tool with no parameters
const weddingDetails = await document.modelContext.executeTool(
  'get_wedding_details',
  '{}'
);

// Execute a tool with parameters
const eventSchedule = await document.modelContext.executeTool(
  'get_event_schedule',
  JSON.stringify({ date: '2026-08-23' })
);

// Execute RSVP submission
const rsvpResult = await document.modelContext.executeTool(
  'post_rsvp_wishes',
  JSON.stringify({
    name: 'John Doe',
    message: 'Congratulations!',
    attending: 'yes',
    guestCount: 2
  })
);

// Generate personalized invitation link
const shareUrl = await document.modelContext.executeTool(
  'generate_share_url',
  JSON.stringify({
    guestName: 'Ranjith & Family',
    invitedBy: 'bride',
    eventType: 'wedding_and_reception'
  })
);

⚡ Key Points:

  • executeTool(toolName, argsJSON) is asynchronous and returns a Promise
  • • First parameter is the tool name (string)
  • • Second parameter is input arguments as a valid JSON string
  • • Returns the result of tool execution, or null when navigation is triggered
  • • Arguments must match the tool's inputSchema
  • • Use JSON.stringify() to convert objects to JSON strings

Sample Use Cases

🤖

AI-Powered Guest Assistance

An AI agent (like Claude or ChatGPT with browser access) visits the wedding website and helps a guest by:

User: "What time is the wedding ceremony?"
Agent: [Calls get_event_schedule tool]
Agent: "The wedding ceremony is on August 23, 2026, from 10:00 AM to 11:00 AM at NSS Karayogam Auditorium in Kochi."
🎨

Automated Invitation Generation

An AI agent helps the couple create personalized invitation links for multiple guests:

User: "Generate invitation links for: Ranjith & Family (bride, both events), Suresh Kumar (groom, reception only)"
Agent: [Calls generate_share_url tool with bulk parameters]
Agent: "Generated 2 personalized links:
• Ranjith & Family: https://divyasreeni.com/bride/reception?rid=...
• Suresh Kumar: https://divyasreeni.com/groom?rid=..."
📝

Interactive RSVP Submission

A guest uses an AI agent to submit their RSVP naturally:

User: "I'm John Doe, I'll be attending with my wife. Looking forward to it!"
Agent: [Calls post_rsvp_wishes tool]
Agent: "Thank you, John! Your RSVP has been saved. We've noted you'll be attending with 2 guests total. ✨"
⏱️

Real-Time Wedding Countdown

An AI agent provides live countdown information:

User: "How many days until the wedding?"
Agent: [Calls get_countdown tool]
Agent: "Only 35 days, 14 hours, and 23 minutes left until Divya & Sreejith's wedding! 🎉"

Testing WebMCP

You can verify WebMCP integration in the browser console:

  1. 1. Visit https://divyasreeni.com in a browser
  2. 2. Open browser console (F12 → Console)
  3. 3. Check for: [WebMCP] Successfully registered 10 wedding invitation tools
  4. 4. Check API availability: document.modelContext
  5. 5. Discover available tools: await document.modelContext.getTools()
  6. 6. Execute a tool: await document.modelContext.executeTool('get_countdown', '{}')
  7. 7. Verify registration method: typeof document.modelContext.registerTool

ℹ️ Note:

AI agents with WebMCP support automatically discover tools by calling await document.modelContext.getTools(), then execute them with await document.modelContext.executeTool(name, args). Both methods return alphabetically ordered results. The console verification is for developers - end users don't need to interact with the console.

✅ Compatible AI Agents:

Any AI agent that supports the document.modelContext API, including Claude with browser access, ChatGPT with browsing capability, GitHub Copilot with WebMCP support, and other AI agents that can detect and invoke registered browser tools.

Wedding Website

Visit the main invitation →

Developer Tools

API testing & docs →

Server Card

View JSON schema →

Powered by Model Context Protocol

Built with ❤️ for Divya & Sreejith's Wedding • August 23, 2026