DEV Community

Michael Crump for Vonage Developers

Posted on

Send Personalized SMS Messages from a Spreadsheet Using Claude Cowork and Vonage

AI assistants are no longer just answering questions - they're taking action. Claude Cowork is a great example of this shift: it can access your local environment, read and write files, and automate tasks that would otherwise eat up your time. Pair it with the Vonage Tooling MCP Server, and you can send real SMS messages to real people, all from a plain-English prompt.

In this tutorial, we'll walk through exactly how to do that. We'll use Claude Cowork to read customer feedback from a local spreadsheet, generate personalized responses using AI, and automatically send each one as an SMS via Vonage.

🎬 Watch the full video walkthrough here: Send a Text in Claude Cowork


What You'll Build

Imagine you run a restaurant. After each visit, customers text you their feedback, and you save their name, phone number, feedback, and a status column (Pending / Sent) in a spreadsheet called restaurant_feedback.xlsx.

Using Claude Cowork, you'll create a task that:

  1. Reads the spreadsheet and finds all rows with a Pending status
  2. Uses AI to determine the sentiment of each message and generate a personalized response
  3. Sends each response as an SMS using the Vonage Tooling MCP Server
  4. Updates the status column to Sent

Prerequisites

Before you get started, make sure you have:


Step 1: Install the Vonage Tooling MCP Server

Open Claude Desktop, click the Claude menu in your computer's menu bar, then go to Settings → Developer → Edit Config.

This opens (or creates) a file called claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Paste in the following configuration:

{
  "mcpServers": {
    "vonage-mcp-server-api-bindings": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@vonage/vonage-mcp-server-api-bindings"
      ],
      "env": {
        "VONAGE_APPLICATION_ID": "<YOUR_VONAGE_APPLICATION_ID>",
        "VONAGE_PRIVATE_KEY64": "<YOUR_VONAGE_PRIVATE_KEY64>",
        "VONAGE_API_KEY": "<YOUR_VONAGE_API_KEY>",
        "VONAGE_API_SECRET": "<YOUR_VONAGE_API_SECRET>",
        "VONAGE_VIRTUAL_NUMBER": "<YOUR_VONAGE_VIRTUAL_NUMBER>",
        "VONAGE_WHATSAPP_NUMBER": "<YOUR_VONAGE_WHATSAPP_NUMBER>",
        "RCS_SENDER_ID": "<YOUR_RCS_SENDER_ID>"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Step 2: Get Your Vonage Credentials

Log in to the Vonage Developer Dashboard and grab the following:

API Key & Secret
From your homepage, click API Secret Management to copy your API key and secret.

Application ID & Private Key

  1. Go to Build → Applications → Create a new application
  2. Give it a name and click Generate public and private key - the private key will download automatically
  3. Under Capabilities, toggle on Messages
  4. Click Generate new application to get your Application ID

Before pasting the private key into the config file, you'll need to base64 encode it. Use the encoder linked in the Vonage MCP Server readme or run:

base64 -i private.key
Enter fullscreen mode Exit fullscreen mode

Virtual Number
Go to Build → Phone Numbers to find or purchase a virtual number. Link it to your application, and if you're in the US, make sure it's 10DLC compliant.

Once your config is saved, restart Claude Desktop. To confirm the server is connected, open a new chat and ask:

"Do you have access to Vonage's tooling server?"

Claude should confirm and list its available capabilities.


Step 3: Set Up Your Spreadsheet

For this demo, create a file called restaurant_feedback.xlsx in a folder called operations. It should have columns for:

Name Phone Feedback Response Status
Jane +1... "Great food!"   Pending
Bob +1... "Service was slow."   Pending

The Status column is what Claude will use to know which messages need to be addressed.


Step 4: Create a claude.md Instructions File

To avoid re-prompting Claude every time, create a file called claude.md in your operations folder. This is a plain-text markdown file where you store persistent instructions for Claude Cowork.

Here's an example of what to put in it:

## Restaurant Feedback Automation

When prompted with `generate_responses`:
- Read `restaurant_feedback.xlsx`
- Find all rows where Status = "Pending"
- Analyze the sentiment of each feedback message
- If positive: set Response to "We're glad you had a positive experience!"
- If negative: set Response to "We're sorry you had a negative experience!"
- Save the responses back to the spreadsheet

When prompted with `send_responses`:
- Read `restaurant_feedback.xlsx`
- For each row where Status = "Pending" and a Response exists:
  - Send the Response as an SMS to the customer's Phone number using the Vonage Tooling MCP Server
  - Update the Status to "Sent"
Enter fullscreen mode Exit fullscreen mode

💡 Tip: You can ask Claude itself to help you write your claude.md file!


Step 5: Run It in Claude Cowork

Switch to Cowork mode in Claude Desktop. Create a new task and click "Work in a project" in the bottom-left corner of the prompt box. Select your operations folder.

Now run:

generate_responses
Enter fullscreen mode Exit fullscreen mode

Claude will scan the spreadsheet, find the Pending rows, analyze sentiment, and write personalized responses back to the file.

When you're ready to send, run:

send_responses
Enter fullscreen mode Exit fullscreen mode

Claude will use the Vonage Tooling MCP Server to send each SMS and update the status to Sent. Open your spreadsheet to confirm - the status column should now show Sent for each row.


What's Next?

This is just the beginning of what you can do with the Vonage Tooling MCP Server. Beyond SMS, you can:

  • Send WhatsApp or RCS messages by populating the corresponding fields in your config
  • Trigger automated voice calls instead of (or in addition to) texts
  • Track delivery status by saving read/delivered receipts back to your spreadsheet
  • Build multi-channel workflows that escalate from SMS to voice if a message goes unread

Resources


Have questions or something cool you built with this? Drop a comment below or connect with us on the Vonage Community Slack. We'd love to see what you create!

Top comments (0)