# MCP email server: send email from Cursor, ChatGPT & more

> Connect a remote MCP email server to Cursor, VS Code, ChatGPT, Codex or Devin Desktop and send through your own SMTP, with no password in a config file.

Source: https://formsmtp.com/guides/mcp-email-server · Last updated November 3, 2026

## What an email MCP server does

The Model Context Protocol (MCP) is how AI apps call outside tools. An email MCP server gives your assistant tools such as “send an email” or “list failed emails”, and the assistant decides when to use them while it works. FormSMTP runs one at `https://app.formsmtp.com/mcp`. It sends through your own SMTP account, so emails come from your own address.

## Remote server or a local SMTP server?

You’ll also find open-source MCP servers that run on your machine and talk to SMTP directly. They work, but look at what they need:

|  | Local SMTP MCP server | FormSMTP (remote) |
| --- | --- | --- |
| Your SMTP password | In a config file or environment variable on each machine | Stored encrypted in FormSMTP; the AI gets a revocable token |
| Who it can email | Anyone, unless the server adds its own checks | Your project’s allowed recipients, with an hourly limit |
| Install | Node or Python, kept up to date on every machine | Nothing: paste a URL |
| Works in ChatGPT and Claude on the web | Not directly: they connect from the vendor’s cloud | Yes |
| Logs, templates, contacts, schedules | Usually not | Included |

A local server is fine for a quick experiment with a throwaway account. For a real mailbox, keep the password out of config files that get synced, shared or committed.

## 1. Create a FormSMTP project

[Sign up free](https://app.formsmtp.com/#/signup) and add a project. Pick your email provider so the SMTP host and port fill in, enter your login, and click *Test connection*. Gmail, Google Workspace, Microsoft 365, Zoho, Amazon SES, Brevo, SendGrid, Resend, Mailgun and any other SMTP server work. Personal Outlook.com and Hotmail addresses don’t, because Microsoft only allows OAuth sign-in for them.

## How clients sign in

Most clients sign in with OAuth: they open a FormSMTP page where you choose a project and full or read-only access. Clients that only take a fixed header can use an **AI key** from the *AI & MCP* page in the dashboard, sent as `Authorization: Bearer YOUR_AI_KEY`. Project API keys don’t work here.

An AI key is a password for sending email from your project. Prefer OAuth. If you use a key, put it only in your user-level config (such as `~/.cursor/mcp.json`) or an environment variable, never in a project file that gets committed, like `.cursor/mcp.json`, `.vscode/mcp.json`, `.devin/mcp_config.json` or `.mcp.json`. Revoke a leaked key on the *AI & MCP* page.

## Cursor

Add this to `~/.cursor/mcp.json` for every project, or `.cursor/mcp.json` for one. Cursor runs the OAuth sign-in when the server asks for it.

```json
{
  "mcpServers": {
    "formsmtp": {
      "url": "https://app.formsmtp.com/mcp"
    }
  }
}
```

To use an AI key instead, add `"headers": { "Authorization": "Bearer YOUR_AI_KEY" }` next to `url`, in `~/.cursor/mcp.json` only, not the project file. Cursor asks for approval before using MCP tools by default.

## VS Code (GitHub Copilot)

Run **MCP: Add Server** from the Command Palette and choose HTTP, or save this as `.vscode/mcp.json` in your workspace:

```json
{
  "servers": {
    "formsmtp": {
      "type": "http",
      "url": "https://app.formsmtp.com/mcp"
    }
  }
}
```

VS Code asks you to sign in to FormSMTP when the server needs it. Approve tool calls as they come up in chat.

## ChatGPT

Custom MCP servers are added on ChatGPT on the web. Whether you can add one depends on your plan and, for Business and Enterprise, your workspace settings.

1. Go to **Plugins** (chatgpt.com/plugins), select **+**, then **Add custom MCP server**.
2. Name it **FormSMTP**, enter `https://app.formsmtp.com/mcp` as the server URL and choose **OAuth**.
3. Read the risk warning, select **I understand and want to continue**, then **Create as a plugin**.
4. Install the plugin, sign in to FormSMTP, and use it in a chat.

ChatGPT treats tools that aren’t marked read-only as write actions and asks you to confirm them by default. In FormSMTP, sending, scheduling and editing tools are write actions; looking things up is read-only.

## Codex CLI

Add the server to `~/.codex/config.toml`, then sign in:

```toml
[mcp_servers.formsmtp]
url = "https://app.formsmtp.com/mcp"
```

```bash
codex mcp login formsmtp
```

With an AI key instead, set `bearer_token_env_var = "FORMSMTP_AI_KEY"` in the same table and export that variable.

## Windsurf, now Devin Desktop

Windsurf’s docs now redirect to Devin Desktop. Its agent supports Streamable HTTP servers and OAuth. Add FormSMTP to `~/.config/devin/mcp_config.json` (or `.devin/mcp_config.json` in a project):

```json
{
  "mcpServers": {
    "formsmtp": {
      "url": "https://app.formsmtp.com/mcp"
    }
  }
}
```

If the server shows “Needs authentication”, click **Authenticate** to sign in. By default the agent asks before calling MCP tools.

## Claude and Claude Code

Claude uses custom connectors, and Claude Code has a one-line `claude mcp add` command. Both are covered step by step in [Can Claude send emails?](https://formsmtp.com/guides/claude-send-email)

## The tools your assistant gets

Sixteen tools: `send_email`, `schedule_email` and `cancel_scheduled_email`; template tools; contact tools; read-only tools for logs, stats, scheduled emails and templates; `check_deliverability` for SPF, DKIM and DMARC; and `get_integration_guide`, which returns contact-form code for your stack. A read-only connection only sees the read-only tools.

## Keeping it safe

- **Pick the project and the access level.** When you sign in, FormSMTP asks which project the assistant may use (one or all) and whether it gets full or read-only access. A read-only connection can look at logs, stats and templates but can’t send.
- **Your project rules still apply.** Allowed recipients and the hourly limit cover every email an assistant sends, exactly as they do for the API. Set Allowed recipients to your own address or domain while you try it.
- **No passwords shared.** The assistant gets its own token (one-hour OAuth tokens that refresh, or an AI key you create). It never sees your SMTP password, and project API keys don’t work on the MCP server.
- **Everything is logged.** The *AI & MCP* page in the dashboard lists each tool call, and emails an assistant sent are marked in *Logs*. Revoke a connection there at any time.

## FAQ

### Which AI apps can use FormSMTP’s MCP server?

Any client that supports remote MCP servers over HTTP. This guide covers Cursor, VS Code, ChatGPT, Codex CLI and Devin Desktop; Claude and Claude Code are in the Claude guide.

### Can ChatGPT send email?

With a connected app or MCP server that can send, yes. Add FormSMTP as a custom MCP server on ChatGPT on the web, sign in, and ChatGPT asks you to confirm before each send by default.

### Is a remote MCP server safer than a local one?

For a real mailbox, usually. A local SMTP server needs your password in a config file on every machine. With FormSMTP the password stays encrypted on the server, and the AI gets a token limited to one project, your allowed recipients and an hourly cap.

### Does the MCP server cost extra?

No. It’s included on every plan, including Free. Emails your assistant sends count toward your monthly limit.

## More guides

- [Can Claude send emails? Connect it to your SMTP](https://formsmtp.com/guides/claude-send-email)
- [Schedule recurring emails and reminders](https://formsmtp.com/guides/schedule-recurring-emails)
- [How to send email from a static website (no backend)](https://formsmtp.com/guides/send-email-from-static-website)
- [HTML contact form that emails you (copy-paste, no backend)](https://formsmtp.com/guides/html-contact-form)
