Softwiro
Commissioning a system

Connect an AI assistant to our Excel templates with MCP: steps and a worked example

Free, no key and nothing stored: the assistant reads a template, sends your data, and gets the result from its own formulas.

6 min read

Want your AI assistant to calculate in a ready-made sheet instead of guessing the numbers? That is what Softwiro's MCP does: it connects the assistant to our Excel templates, so it reads the template's structure, sends your data in, and gets back the result computed by the template's own formulas. No key, no account, and we store nothing.

This guide connects an assistant in four steps, then walks through a full example with real numbers from the template.

What is the MCP here?

MCP (Model Context Protocol) is a common way for AI apps to call outside tools. We have one endpoint:

https://softwiro.com/api/mcp

It offers four tools:

  • list_templates: search the templates by Arabic or English text (for example gym).
  • get_schema: the tables and columns of a template (which are inputs and which are formulas), the settings cells and the result cells.
  • calculate: writes your data into the template and returns what its formulas calculated.
  • get_download: the link to the xlsx file and to the online version.

The usual order is list_templates, then get_schema, then calculate. The assistant should read get_schema before calculate so it does not invent column names.

Step 1: connect the assistant

In Claude Code, one command:

claude mcp add --transport http softwiro https://softwiro.com/api/mcp

In any other app that supports remote (HTTP) MCP servers, open its MCP or connectors settings and add a server named softwiro with the URL above. No key and no sign-in.

The fastest way: let the agent add it itself

If you do not want to hunt for the settings page, copy this prompt and send it to the assistant or agent you use:

Please add an MCP server named softwiro:
- Type: remote HTTP (streamable HTTP)
- URL: https://softwiro.com/api/mcp
- No API key and no sign-in.

If you can add it yourself (with a command or by editing your own config file), do it and tell me what you changed. Then check that it works by listing the tool names that appear (expected: list_templates, get_schema, calculate, get_download).

If you cannot add it yourself, give me the exact steps for the app you are running in: which menu to open, what to click, and what to type in each field. Include only the steps you are sure about, and say plainly when you are unsure of one instead of guessing.

Once it is added, ask for something from the templates (for example "work out the gym memberships...") and it will pick the tools on its own. Note: some apps need a restart or a new chat before the tools show up.

Step 2: check that it works

From any terminal:

curl -s https://softwiro.com/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

It should return the four tool names. The server is simple: it answers each request on its own (stateless) and keeps no session.

Step 3: ask in your own words

Write your normal request and let the assistant pick the tools. For example:

Use the softwiro MCP (the gym memberships template) for all the calculations, and do not calculate anything yourself. Read get_schema first, then use calculate.

I have 3 gym members. Mona joined on 1 August on a quarterly plan and paid 1,300. Karim joined on 15 September on the monthly plan (500) and paid 300. Sami joined on 20 October on the monthly plan and paid 500. Today is 5 November 2026. Who needs to renew, and who still owes money?

Note the first line: it tells the assistant explicitly to use the MCP instead of working the numbers out itself. Without it, an assistant may calculate in its head and answer without calling the template. You can use the same wording with any other template: "Use the softwiro MCP for the calculation, and do not calculate anything yourself."

A worked example: the gym memberships template

What happens behind the scenes:

  1. list_templates with query = gym returns the template gym-memberships.
  2. get_schema shows that the input tables are Plans, Members, Subscriptions, Payments and Attendance, and that "today's date" sits in Settings!B4.
  3. calculate with this data (shortened):
{
  "id": "gym-memberships",
  "mode": "replace",
  "cells": { "الإعدادات!B4": "2026-11-05", "الإعدادات!B7": "2026-11-05" },
  "records": [
    { "sheet": "الباقات", "rows": [
      { "الباقة": "شهري", "السعر": 500, "المدة (أشهر)": 1 },
      { "الباقة": "ربع سنوي", "السعر": 1300, "المدة (أشهر)": 3 } ] },
    { "sheet": "الاشتراكات", "rows": [
      { "تاريخ البداية": "2026-08-01", "كود العضو": "M01", "الباقة": "ربع سنوي", "الخصم": 0 },
      { "تاريخ البداية": "2026-09-15", "كود العضو": "M02", "الباقة": "شهري", "الخصم": 0 },
      { "تاريخ البداية": "2026-10-20", "كود العضو": "M03", "الباقة": "شهري", "الخصم": 0 } ] }
  ]
}

(The full call also fills the Members, Payments and Attendance tables the same way. The sheet and column names are in Arabic because the template is.)

What the template returned (the names are made up):

MemberStatusDays to expiryStill owed
Monaexpired-50
Karimexpired-22200
Samiactive140

The template's summary says: 3 members, 1 active subscription, 2 expired, and 2 on the renewal list. So the assistant answers: "Mona and Karim have expired, and Karim owes 200. Sami has 14 days left." You can check it yourself: Mona's plan started on 1 August for 3 months, so it ended on 31 October, 5 days before 5 November. Karim paid 300 of 500.

Without the MCP: what goes wrong?

This is a real reply from an assistant on the same gym example when we did not tell it to use the MCP. Its first answer calculated in its head:

Sami: paid 500 in full, the plan runs until 19 November, about 15 days left.

Then the assistant called the template through the MCP and wrote:

Correction: Sami has 14 days left, not 15 as I said earlier.

In the same reply it said about Mona: "nothing left if the quarterly price is 1,300. If it is higher, tell me", so it was assuming the plan price. With the MCP the price comes from the Plans table you send, so there is no assumption.

The error here is one day, but in money and collections one day matters (a late fee, or a customer told they are late when they are not). The template calculates it with fixed formulas that give the same result every time.

Examples from other fields

Each example was actually run on our MCP on 5 November 2026, the numbers below are what the template returned, and we checked the core arithmetic by hand. Names and numbers are made up.

A hire-purchase company: the installments tracker

Use the softwiro MCP (the installments-tracker template) for all the calculations, and do not calculate anything yourself. Read get_schema first, then use calculate.

I have two installment contracts:
- K001: Mohamed El-Sayed, a fridge for 36,000 with 6,000 down, 12 installments, first installment 26 July 2026. He paid 2,500 on 26 July, 26 August and 26 September.
- K002: Hala Fathy, a washing machine for 12,000 with 3,000 down, 6 installments, first installment 26 June 2026. She paid 1,500 on 26 June and 26 July.
Today is 5 November 2026. Who is late? By how much? Since when? And who should I call first?
ContractMonthly installmentPaidLate amountOldest unpaid installmentDays late
K0012,5007,5002,50026 October10
K0021,5003,0004,50026 August71

Totals: 7,000 late and 28,500 still owed by customers, and Hala comes first (71 days). Note: the template calculates on the server's real date (the date cell is a formula), so if you try the example on another day the days will differ.

A restaurant: the recipe costing template

Use the softwiro MCP (the restaurant-recipe-costing template) for all the calculations, and do not calculate anything yourself. Read get_schema first, then use calculate.

Ingredient prices: chicken 110 per kg, rice 35 per kg, oil 60 per litre, minced beef 380 per kg, burger bun 6 each, cheddar 4 per slice.
- Grilled chicken with rice (sells at 140): 0.35 kg chicken, 0.15 kg rice, 0.02 litre oil.
- Beef burger (sells at 180): 0.2 kg minced beef, one bun, one cheddar slice, 0.01 litre oil.
Target cost percentage is 30%. If the chicken price goes up 25%, what does the chicken dish cost? And what price should I sell at to reach the target?
DishDish costCost %Suggested price for 30%Chicken dish cost after a 25% chicken rise
Grilled chicken with rice44.9532.1%15054.58 (38.9%)
Beef burger86.6048.1%289unchanged

Both dishes are over the target, and the burger is far over (48% instead of 30%).

A building: the rent collection template

Use the softwiro MCP (the rent-collection template) for all the calculations, and do not calculate anything yourself. Read get_schema first, then use calculate.

Today is 5 November 2026, and the contract-expiry alert is 60 days.
- U01: Ahmed Salem, rent 5,000 a month, contract 1 January 2026 to 1 January 2027, due on day 1. He paid 5,000 on the 1st of each month from January to August.
- U02: Maha Hassan, rent 6,000, contract 1 March 2026 to 15 December 2026, due on day 5. She paid 6,000 on the 5th of each month from March to November.
Who is late and by how much? Which contracts are about to end?
UnitMonths dueDuePaidBalanceMonths lateDays to contract end
U011155,00040,00015,000357 (ends soon)
U02954,00054,0000040 (ends soon)

Totals: 109,000 due, 94,000 paid, 15,000 in arrears, and a collection rate of about 86%.

And the other templates?

We have templates for many fields (garment factories, clinics, workshops, schools, contracting and more), and the idea is the same: start the prompt with "use the softwiro MCP for all the calculations, and do not calculate anything yourself", and let the assistant read get_schema and find the right template on its own. See all the templates in templates.json or on the templates page.

Quick calculators without a sheet (23 of them)

Besides the templates, the MCP has two tools for quick calculations: list_calculators (lists the calculators and their input names) and run_calculator (runs one). There are 23 calculators:

  • Softwiro calculators (13): VAT, BMI, calories, due date, ovulation, break-even, garment costing and fabric requirements, piece-rate pay, pharmacy margin, reorder point, no-show cost, and a study timetable. All were compared with the original pages on the site and the numbers matched.
  • Qintar gold calculators (10): zakat on gold, silver and cash, the nisab, making charge, bar and pound prices, "is this price fair?", "what do I get if I sell now?", unit conversion, budget, gold vs certificates vs dollar, and swapping old gold for new. Prices are fetched from Qintar at the moment of the request, and if prices are unavailable the tool returns an error instead of guessing.

Try zakat. This prompt was actually run on 5 November 2026:

Use the softwiro MCP (the run_calculator tool with the gold-zakat calculator) for the calculation, and do not calculate anything yourself.

I have 100 grams of 21-karat gold and 50,000 EGP in cash. How much is my zakat?

The calculator returned: 100 g of 21K is 87.5 g of pure gold, above the nisab (85 g), the gold zakat is 15,650 EGP (2.5% of 626,000 EGP), the cash zakat is 1,250 EGP, and the total is 16,900 EGP. These numbers use the gold price at that moment and will change with it. The calculator returns Qintar's own result as it is and adds no ruling. For special cases in zakat, ask a fatwa authority.

Notes for getting it right

  • Dates: send them as YYYY-MM-DD. Dates in the results come back as Excel serial numbers (days since 30 December 1899), so 46309 is 14 October 2026.
  • Formulas stay intact: you only write into input columns. Formula columns come back in the result under calculated.
  • Mode: replace (the default) clears the template's sample rows before writing yours, and append adds after them.
  • Limits: up to 500 rows per request, 30 calculations a minute, and a request must finish within 15 seconds.
  • Nothing is stored: each request is calculated and forgotten. Nothing is saved on our server.
  • Sample data: the names and numbers in the example are made up. Use your own.

If you are not using an assistant, the same calculation is available as a plain API: POST to /api/v1/calc/gym-memberships. The list of all templates is available as JSON at templates.json.

You can also try the template itself online: Gym memberships sheet, or browse all the free templates.

Questions this raises

Is the MCP free, and do I need a key?

It is free and needs no key or account.

Do you store the data I send?

No. Each request is calculated and forgotten, and nothing is saved on the server.

Which AI apps can use it?

Any app that supports remote (HTTP) MCP servers. In Claude Code it is one command; in other apps, add the endpoint URL in their MCP or connectors settings.

Why not let the AI do the arithmetic itself?

Because the template already has the formulas. The assistant sends the data and gets back what Excel-style formulas calculate, which you can check by hand.

Have a system to build?

Softwiro designs, builds, and operates production systems. Describe what you need and we will come back with a scope rather than a slogan.

Start a project