Skip to main content
Glama
TheEdgeMarina

Xero MCP Server (Vercel)

README.md
# Xero MCP server (Vercel version)

This lets Claude write to Xero directly (invoices, contacts, payments,
bills, and more).

It reuses the official Xero MCP server code
(https://github.com/XeroAPI/xero-mcp-server) for all the Xero logic.
The only new part is `api/mcp.ts`, which exposes it as a live web
address instead of a local-only tool.

## What you need

- A GitHub account (free)
- Your existing Vercel account
- A Xero Custom Connection (Client ID + Secret)

## Setup, step by step

### 1. Create a Xero Custom Connection

1. Go to https://developer.xero.com/app/manage
2. Click "New app"
3. Choose "Custom Connection"
4. Pick the organisation: Savili Maiava and Darryl Scott Pty Ltd
5. Copy the Client ID and Client Secret somewhere safe

### 2. Push this code to GitHub

1. Create a new, empty repo on GitHub (e.g. `xero-mcp-vercel`)
2. Do NOT add a README when creating it (this folder already has one)
3. Follow GitHub's "push an existing folder" instructions with this
   folder

### 3. Import into Vercel as a NEW project

1. In Vercel, click "Add New" → "Project"
2. Import the `xero-mcp-vercel` GitHub repo
3. This creates a separate project from theedgemarina-website

### 4. Add environment variables in Vercel

Before deploying (or right after, then redeploy), add these three,
under Project Settings → Environment Variables:

- `XERO_CLIENT_ID` — from step 1
- `XERO_CLIENT_SECRET` — from step 1
- `MCP_ACCESS_KEY` — make up any long random password yourself

### 5. Deploy

Click Deploy. Vercel gives you a URL like:

`https://xero-mcp-vercel.vercel.app`

### 6. Add to Claude as a custom connector

Your connector URL is:

`https://xero-mcp-vercel.vercel.app/api/mcp?key=YOUR_MCP_ACCESS_KEY`

(replace with your real domain and the password from step 4)

Add that under Claude Settings → Connectors → Add custom connector.

### 7. Test it

Ask Claude to list your Xero contacts, then try creating a test
contact. Check it appears in Xero.

## Security notes

- Nobody can use this URL without the password in it. Keep it secret.
- The Custom Connection only reaches the one Xero organisation you
  picked in step 1.
- No database is used or needed — tokens are fetched fresh from Xero
  on every request.