MCP Server
The seven Model Context Protocol server lets AI assistants like Claude Desktop, Claude Code and Cursor interact with the seven.io API directly. It exposes SMS, RCS, voice, lookups, contacts and account management as more than 40 tools across 12 categories.
You have two ways to connect the server:
- Hosted server (URL) - connect directly to
https://mcp.seven.io/mcpwithout any installation. Streamable HTTP transport, OAuth login opens automatically in your browser. - Local install (npx) - the npm package
@seven.io/mcplaunched vianpxover the MCP stdio transport. Source on GitHub.
| Property | Hosted (URL) | Local (npx) |
|---|---|---|
| Transport | Streamable HTTP | stdio |
| Authentication | OAuth 2.0 (PKCE) | OAuth 2.0 or API key |
| Installation | none | npx fetches on demand |
| Updates | server-side, automatic | on every npx start |
| Headless support | yes | API key only |
| Token storage | inside the MCP client | OS keychain |
Hosted server (URL)
Add https://mcp.seven.io/mcp to your MCP client. The server uses the Streamable HTTP transport (not SSE) and OAuth 2.0 with PKCE via Authorization Server Discovery.
Claude Code
claude mcp add --transport http seven https://mcp.seven.io/mcp
Cursor
Add the server to your project's .cursor/mcp.json:
{
"mcpServers": {
"seven": {
"url": "https://mcp.seven.io/mcp"
}
}
}
Claude Desktop
The simplest way is through the UI: Settings → Connectors → Add custom connector, enter the URL https://mcp.seven.io/mcp. Claude then opens the OAuth login in your browser.
Alternatively, add the snippet to your claude_desktop_config.json using the mcp-remote bridge:
{
"mcpServers": {
"seven": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.seven.io/mcp"]
}
}
}
Authentication
On the first connection the MCP client discovers the OAuth endpoint automatically, opens your browser, requests the necessary scopes (SMS, Voice, RCS, …) and stores the tokens. No manual login step required.
Local install (npx)
The npm package @seven.io/mcp is launched by your MCP client via npx. A global install is not necessary - npx fetches the latest version on demand. If you want one anyway:
npm install -g @seven.io/mcp
Claude Code
claude mcp add seven npx @seven.io/mcp
Cursor
Add the server to your project's .cursor/mcp.json:
{
"mcpServers": {
"seven": {
"command": "npx",
"args": ["@seven.io/mcp"]
}
}
}
Claude Desktop
Edit your claude_desktop_config.json:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
{
"mcpServers": {
"seven": {
"command": "npx",
"args": ["@seven.io/mcp"]
}
}
}
Authentication
The local variant supports two methods. OAuth 2.0 with PKCE is recommended - automatic token refresh, fine-grained scopes and tokens stored securely in your operating system's keychain. If both methods are configured, OAuth takes priority.
OAuth 2.0 (recommended)
Run the login command once. It opens your browser, requests the necessary scopes and stores the tokens.
npx @seven.io/mcp login
Other CLI commands:
# Show whether you are signed in
npx @seven.io/mcp status
# Remove the stored tokens
npx @seven.io/mcp logout
API key (legacy)
Set the SEVEN_API_KEY environment variable. Create your key in the seven.io dashboard.
export SEVEN_API_KEY="your-api-key"
In the client configuration:
{
"mcpServers": {
"seven": {
"command": "npx",
"args": ["@seven.io/mcp"],
"env": {
"SEVEN_API_KEY": "your-api-key"
}
}
}
}
Headless or remote setups
The OAuth login flow needs a browser on the same machine that can reach 127.0.0.1:7177 / 9437 / 8659. If you run the MCP server on a headless box or via SSH without port forwarding, switch to the hosted server (URL) or use the API key variant - both paths work without a local browser.
Available tools
The server provides more than 40 tools grouped by capability.
Messaging
| Tool | Description |
|---|---|
send_sms | Send an SMS |
delete_sms | Delete a scheduled SMS |
send_rcs | Send an RCS message |
delete_rcs | Delete an RCS message |
rcs_events | Handle RCS events |
send_voice | Send a text-to-speech call |
hangup_voice | End an active voice call |
Account
| Tool | Description |
|---|---|
get_balance | Check your account balance |
get_pricing | Get pricing per country |
get_analytics | View account statistics |
Lookup
| Tool | Description |
|---|---|
lookup_format | Validate a phone number's format |
lookup_hlr | Home Location Register (network, roaming) |
lookup_mnp | Mobile Number Portability (carrier info) |
lookup_cnam | Caller ID name lookup |
lookup_rcs | Check whether a number supports RCS |
Status & logbook
| Tool | Description |
|---|---|
get_status | Check delivery status |
get_logbook_sent | View sent messages |
get_logbook_received | View received SMS |
get_logbook_voice | View voice call history |
Phone numbers
| Tool | Description |
|---|---|
get_available_numbers | List numbers available to order |
order_number | Purchase a phone number |
get_active_numbers | List your active numbers |
get_number | Get a number's details |
update_number | Update a number's configuration |
delete_number | Cancel a number |
Contacts
| Tool | Description |
|---|---|
list_contacts | List all contacts |
create_contact | Create a new contact |
get_contact | Get a contact by ID |
update_contact | Update a contact |
delete_contact | Delete a contact |
Groups
| Tool | Description |
|---|---|
list_groups | List all groups |
create_group | Create a new group |
get_group | Get a group by ID |
update_group | Update a group |
delete_group | Delete a group |
Subaccounts
| Tool | Description |
|---|---|
list_subaccounts | List all subaccounts |
create_subaccount | Create a new subaccount |
update_subaccount | Update a subaccount |
transfer_credits | Transfer credits to a subaccount |
delete_subaccount | Delete a subaccount |
Webhooks
| Tool | Description |
|---|---|
list_webhooks | List registered webhooks |
create_webhook | Register a new webhook |
delete_webhook | Remove a webhook |
Sender
| Tool | Description |
|---|---|
validate_sender | Validate a sender identifier |
Examples
Once the server is connected, you can ask the assistant in plain language. The MCP client picks the right tool automatically.
Send an SMS:
Send an SMS to +49170123456789 saying 'Order shipped, track at example.com/t/abc123'.
The assistant calls send_sms.
Check your balance:
What is my seven.io account balance?
The assistant calls get_balance.
Pricing per country:
What does an SMS to France, Spain and the United States cost?
The assistant calls get_pricing and filters the results.
Carrier lookup and RCS check:
Look up the carrier for +49170123456789 and tell me whether the number supports RCS.
The assistant chains lookup_mnp and lookup_rcs.
Reachability check, then send:
Use HLR to check whether +49170123456789 is reachable. If yes, send an SMS saying 'Meeting tomorrow at 10am'.
The assistant calls lookup_hlr and decides based on the result whether to run send_sms.
Create a subaccount and transfer credits:
Create a subaccount for our new team and transfer 50 EUR of credits to it.
The assistant chains create_subaccount and transfer_credits.
Troubleshooting
Debug logging
Set SEVEN_LOG_FILE to log every API request and response to a file. Useful when a tool call doesn't behave as expected.
{
"mcpServers": {
"seven": {
"command": "npx",
"args": ["@seven.io/mcp"],
"env": {
"SEVEN_API_KEY": "your-api-key",
"SEVEN_LOG_FILE": "/tmp/mcp-seven-debug.log"
}
}
}
}
Then tail the file:
tail -f /tmp/mcp-seven-debug.log