You can use the AppStruct Sheets MCP server to let an AI assistant read a spreadsheet and make a specific, reviewed change. In this tutorial, the task is to find a service request and change its status while keeping the other rows intact.
The example uses fictional requests in a workbook you create for practice. It is a walkthrough of the available tools, rather than a customer case study or a claim about time saved. You will create the workbook in Sheets, connect a compatible MCP client, read the data, add one request and verify an update.
If you want customers to submit requests through an app, start with the separate service request app tutorial. This article uses an independent spreadsheet; connecting the assistant does not synchronize it with an App Builder database.
Prepare a small workbook you own
Open AppStruct Sheets, create a workbook called Service requests — practice, and name its first sheet Requests. Enter this five-column table in cells A1:E3:
| Request ID | Customer | Service | Status | Notes |
|---|---|---|---|---|
| DEMO-001 | Example A | Consultation | New | Discuss a fictional installation |
| DEMO-002 | Example B | Maintenance | In progress | Check an example device |
These names and notes are invented. Keep the exercise in its own workbook so it is easy to inspect. The request ID is the stable reference; a customer name alone is an unreliable way to identify a row.
Before connecting the assistant, close any second editor that might overwrite the same cells. Confirm that the table is saved by reopening the workbook. MCP API keys can access workbooks owned by the key's account; a workbook shared with that account is not included in this API-key view.
Connect the Sheets MCP server
The remote endpoint is:
https://api.appstruct.cloud/v1/sheets/mcp
Use the MCP connection guide to reach the Sheets API-key settings. A key with sheets:read supports the initial inspection. Adding and updating values requires sheets:write as well. The practice table does not require permission to edit protected cells.
For Claude Code, the HTTP connection command has this form:
claude mcp add --transport http appstruct-sheets https://api.appstruct.cloud/v1/sheets/mcp --header "Authorization: Bearer YOUR_APPSTRUCT_SHEETS_API_KEY"
The command contains a placeholder. Replace it locally with your own key when configuring the client. Open /mcp in Claude Code to inspect the connection. Other clients have their own remote-server setup; use the same endpoint and Bearer authorization header where supported. The official Claude Code documentation explains its connection and tool-approval controls.
A successful connection is only the first check. Ask the assistant to list the workbooks it can actually read. The tools available to it depend on the key's scopes, so an unavailable write tool can indicate missing permission rather than a missing spreadsheet.
Read the structure and a bounded range
Start with this prompt:
Find the workbook named “Service requests — practice”. List matching workbooks and show me their IDs before choosing one. Inspect the selected workbook's sheet names, used ranges and protected ranges. Read Requests!A1:E3. Do not change any cells.
The corresponding tools are sheets_list_spreadsheets, sheets_get_spreadsheet and sheets_read_range. The returned spreadsheet ID is the identifier used in subsequent calls. Choose the exact workbook if more than one has the same name.
Check the reply against the browser table. It should contain the five headers and the two example requests. Requests!A1:E3 is an A1 cell range, not a named-range alias. Bounded ranges keep the result focused and make it clear which cells the assistant inspected.
If it reports an empty range, first check the sheet name, workbook ID and saved cells. An empty response is not permission to recreate the entire table.
Add one fictional request
Once the read result is correct and the connection has the required write permission, ask:
In this same workbook, append exactly one request to the Requests table: DEMO-003, Example C, Installation, New, “Practice entry only”. Read the header first, use RAW input, and show the proposed row before writing. After the approved write, read back the affected row.
The sheets_append_rows tool adds values beneath existing data. For this table, its arguments look like this:
{
"spreadsheet_id": "YOUR_SPREADSHEET_ID",
"range": "Requests!A:E",
"values": [["DEMO-003", "Example C", "Installation", "New", "Practice entry only"]],
"input": "RAW"
}
Replace the spreadsheet-ID placeholder with the ID discovered in the previous step. RAW stores the supplied strings literally. After the operation, use the range reported by the tool to read the new row. With only the starting table above, it should occupy A4:E4.
If a write times out or the client disconnects, read the table before retrying. Repeating an append can create a duplicate; check for DEMO-003 first.
Update one status and verify its neighbors
Now resolve the first request:
Read Requests!A1:E4 and locate DEMO-001. Propose changing only that request's Status cell to Resolved. Leave its other fields and every other request unchanged. After the approved write, read Requests!A1:E4 again and compare the results.
In the unchanged practice layout, DEMO-001 is on row 2 and Status is column D. The sheets_write_range arguments are:
{
"spreadsheet_id": "YOUR_SPREADSHEET_ID",
"range": "Requests!D2",
"values": [["Resolved"]],
"input": "RAW"
}
Re-read the row before using that address: sorting or inserting rows can move the request. This tool overwrites the targeted cells, and the MCP server has no undo tool. Review the range and proposed value before allowing the write in your client.
The expected result is specific: D2 reads Resolved, DEMO-001's customer and notes are unchanged, DEMO-002 remains In progress, and DEMO-003 remains New. Reopen the workbook in Sheets to confirm the saved result in the browser as well.
Diagnose incomplete results
| Observation | What to check |
|---|---|
| The workbook is not listed | Confirm the account owns it and that the key belongs to that account. |
| A write tool is unavailable | Inspect the key's write scope and refresh the client's tool discovery after changing the connection. |
| A write reports protected cells were kept | Read the affected cells. Choose an editable practice range and check the workbook's protection rules. |
| A request appears twice | Inspect the request ID before repeating an append after an uncertain response. |
| A formula reads as formula text | The API stores formulas without evaluating them. Open the workbook for spreadsheet recalculation. |
This exercise changes values. The API's formatting tools read formatting; do not expect a prompt to apply fonts, colors or cell styles through these write tools. Review the current Sheets API reference for the REST surface alongside MCP.
Choose the next workflow
The useful outcome of this exercise is a verified sequence: locate an owned workbook, inspect its structure, read a small range, propose a narrow write and read the result back. Reuse that sequence for an inventory list or a task tracker with its own stable IDs and acceptance checks.
Explore AppStruct Workspace for the document and spreadsheet tools, or follow the MCP setup guide for Docs and Slides connections too. For a form, database and published application, continue with App Builder and its service request guide.