@seven.io/mcp 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +295 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +129 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +88 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +245 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth/flow.d.ts +12 -0
- package/dist/oauth/flow.d.ts.map +1 -0
- package/dist/oauth/flow.js +132 -0
- package/dist/oauth/flow.js.map +1 -0
- package/dist/oauth/pkce.d.ts +17 -0
- package/dist/oauth/pkce.d.ts.map +1 -0
- package/dist/oauth/pkce.js +39 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/oauth/refresh.d.ts +22 -0
- package/dist/oauth/refresh.d.ts.map +1 -0
- package/dist/oauth/refresh.js +53 -0
- package/dist/oauth/refresh.js.map +1 -0
- package/dist/oauth/server.d.ts +18 -0
- package/dist/oauth/server.d.ts.map +1 -0
- package/dist/oauth/server.js +553 -0
- package/dist/oauth/server.js.map +1 -0
- package/dist/oauth/tokens.d.ts +33 -0
- package/dist/oauth/tokens.d.ts.map +1 -0
- package/dist/oauth/tokens.js +104 -0
- package/dist/oauth/tokens.js.map +1 -0
- package/dist/tools/account.d.ts +68 -0
- package/dist/tools/account.d.ts.map +1 -0
- package/dist/tools/account.js +59 -0
- package/dist/tools/account.js.map +1 -0
- package/dist/tools/contacts.d.ts +101 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +111 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/groups.d.ts +65 -0
- package/dist/tools/groups.d.ts.map +1 -0
- package/dist/tools/groups.js +86 -0
- package/dist/tools/groups.js.map +1 -0
- package/dist/tools/lookup.d.ts +22 -0
- package/dist/tools/lookup.d.ts.map +1 -0
- package/dist/tools/lookup.js +88 -0
- package/dist/tools/lookup.js.map +1 -0
- package/dist/tools/numbers.d.ts +79 -0
- package/dist/tools/numbers.d.ts.map +1 -0
- package/dist/tools/numbers.js +106 -0
- package/dist/tools/numbers.js.map +1 -0
- package/dist/tools/rcs.d.ts +100 -0
- package/dist/tools/rcs.d.ts.map +1 -0
- package/dist/tools/rcs.js +86 -0
- package/dist/tools/rcs.js.map +1 -0
- package/dist/tools/sender.d.ts +25 -0
- package/dist/tools/sender.d.ts.map +1 -0
- package/dist/tools/sender.js +25 -0
- package/dist/tools/sender.js.map +1 -0
- package/dist/tools/sms.d.ts +110 -0
- package/dist/tools/sms.d.ts.map +1 -0
- package/dist/tools/sms.js +95 -0
- package/dist/tools/sms.js.map +1 -0
- package/dist/tools/status.d.ts +81 -0
- package/dist/tools/status.d.ts.map +1 -0
- package/dist/tools/status.js +88 -0
- package/dist/tools/status.js.map +1 -0
- package/dist/tools/subaccounts.d.ts +108 -0
- package/dist/tools/subaccounts.d.ts.map +1 -0
- package/dist/tools/subaccounts.js +98 -0
- package/dist/tools/subaccounts.js.map +1 -0
- package/dist/tools/voice.d.ts +57 -0
- package/dist/tools/voice.d.ts.map +1 -0
- package/dist/tools/voice.js +54 -0
- package/dist/tools/voice.js.map +1 -0
- package/dist/tools/webhooks.d.ts +60 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +58 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
# MCP Seven
|
|
2
|
+
|
|
3
|
+
Model Context Protocol (MCP) server for the [seven.io](https://www.seven.io) API. This server provides comprehensive access to seven.io's SMS, voice, RCS messaging, and account management services.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### Messaging
|
|
8
|
+
- **SMS**: Send and manage SMS messages
|
|
9
|
+
- **RCS**: Send Rich Communication Services messages with media and suggestions
|
|
10
|
+
- **Voice**: Send text-to-speech voice calls
|
|
11
|
+
|
|
12
|
+
### Account Management
|
|
13
|
+
- **Balance**: Check account balance
|
|
14
|
+
- **Pricing**: Get pricing information by country
|
|
15
|
+
- **Analytics**: View account statistics
|
|
16
|
+
|
|
17
|
+
### Lookup Services
|
|
18
|
+
- **Format Validation**: Validate phone number formats
|
|
19
|
+
- **HLR**: Home Location Register lookups (network info, roaming status)
|
|
20
|
+
- **MNP**: Mobile Number Portability lookups (carrier information)
|
|
21
|
+
- **CNAM**: Caller ID name lookups
|
|
22
|
+
- **RCS Capabilities**: Check if a number supports RCS
|
|
23
|
+
|
|
24
|
+
### Contact Management
|
|
25
|
+
- **Contacts**: Full CRUD operations for contacts
|
|
26
|
+
- **Groups**: Manage contact groups
|
|
27
|
+
|
|
28
|
+
### Phone Numbers
|
|
29
|
+
- Browse, purchase, and manage phone numbers
|
|
30
|
+
|
|
31
|
+
### Advanced Features
|
|
32
|
+
- **Webhooks**: Register webhooks for events
|
|
33
|
+
- **Subaccounts**: Create and manage subaccounts
|
|
34
|
+
- **Status & Logbook**: Track message delivery and view history
|
|
35
|
+
|
|
36
|
+
## Installation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install -g @seven.io/seven-mcp
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Authentication
|
|
43
|
+
|
|
44
|
+
This MCP server supports two authentication methods:
|
|
45
|
+
|
|
46
|
+
### Option 1: OAuth 2.0 with PKCE (Recommended)
|
|
47
|
+
|
|
48
|
+
OAuth provides better security with automatic token refresh and fine-grained scopes.
|
|
49
|
+
|
|
50
|
+
1. **Login via CLI**:
|
|
51
|
+
```bash
|
|
52
|
+
npx @seven.io/mcp login
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
This will:
|
|
56
|
+
- Open your browser to seven.io OAuth authorization
|
|
57
|
+
- Request necessary permissions (SMS, Voice, RCS, etc.)
|
|
58
|
+
- Store tokens securely in your system keychain
|
|
59
|
+
- Auto-refresh tokens when they expire
|
|
60
|
+
|
|
61
|
+
**CLI Commands**:
|
|
62
|
+
```bash
|
|
63
|
+
# Login with OAuth
|
|
64
|
+
npx @seven.io/mcp login
|
|
65
|
+
|
|
66
|
+
# Check authentication status
|
|
67
|
+
npx @seven.io/mcp status
|
|
68
|
+
|
|
69
|
+
# Logout (remove stored tokens)
|
|
70
|
+
npx @seven.io/mcp logout
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Option 2: API Key (Legacy)
|
|
74
|
+
|
|
75
|
+
For backwards compatibility, you can still use an API key:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
export SEVEN_API_KEY="your-api-key"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Get your API key from the [seven.io dashboard](https://app.seven.io).
|
|
82
|
+
|
|
83
|
+
### Priority
|
|
84
|
+
|
|
85
|
+
If both authentication methods are configured, OAuth takes priority.
|
|
86
|
+
|
|
87
|
+
## Usage with Claude Desktop
|
|
88
|
+
|
|
89
|
+
Add this to your Claude Desktop configuration file:
|
|
90
|
+
|
|
91
|
+
**MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
92
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
93
|
+
|
|
94
|
+
**With OAuth (recommended)**:
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"mcpServers": {
|
|
98
|
+
"seven": {
|
|
99
|
+
"command": "node",
|
|
100
|
+
"args": ["/absolute/path/to/mcp-seven/dist/index.js"]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**With API Key**:
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"mcpServers": {
|
|
110
|
+
"seven": {
|
|
111
|
+
"command": "node",
|
|
112
|
+
"args": ["/absolute/path/to/mcp-seven/dist/index.js"],
|
|
113
|
+
"env": {
|
|
114
|
+
"SEVEN_API_KEY": "your-api-key"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**With Debug Logging**:
|
|
122
|
+
To enable request/response logging for debugging, add the `SEVEN_LOG_FILE` environment variable:
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"mcpServers": {
|
|
126
|
+
"seven": {
|
|
127
|
+
"command": "node",
|
|
128
|
+
"args": ["/absolute/path/to/mcp-seven/dist/index.js"],
|
|
129
|
+
"env": {
|
|
130
|
+
"SEVEN_API_KEY": "your-api-key",
|
|
131
|
+
"SEVEN_LOG_FILE": "/tmp/mcp-seven-debug.log"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Then monitor the log file:
|
|
139
|
+
```bash
|
|
140
|
+
tail -f /tmp/mcp-seven-debug.log
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Note**: If using OAuth, run `npx @seven.io/mcp login` before starting Claude Desktop.
|
|
144
|
+
|
|
145
|
+
## Available Tools
|
|
146
|
+
|
|
147
|
+
### Messaging Tools
|
|
148
|
+
- `send_sms` - Send SMS messages
|
|
149
|
+
- `delete_sms` - Delete scheduled SMS
|
|
150
|
+
- `send_rcs` - Send RCS messages
|
|
151
|
+
- `delete_rcs` - Delete RCS messages
|
|
152
|
+
- `rcs_events` - Handle RCS events
|
|
153
|
+
- `send_voice` - Send voice calls
|
|
154
|
+
- `hangup_voice` - End active voice calls
|
|
155
|
+
|
|
156
|
+
### Account Tools
|
|
157
|
+
- `get_balance` - Check account balance
|
|
158
|
+
- `get_pricing` - Get pricing information
|
|
159
|
+
- `get_analytics` - View account statistics
|
|
160
|
+
|
|
161
|
+
### Lookup Tools
|
|
162
|
+
- `lookup_format` - Validate phone number format
|
|
163
|
+
- `lookup_hlr` - Home Location Register lookup
|
|
164
|
+
- `lookup_mnp` - Mobile Number Portability lookup
|
|
165
|
+
- `lookup_cnam` - Caller ID name lookup
|
|
166
|
+
- `lookup_rcs` - Check RCS capabilities
|
|
167
|
+
|
|
168
|
+
### Status & Logbook Tools
|
|
169
|
+
- `get_status` - Check message delivery status
|
|
170
|
+
- `get_logbook_sent` - View sent messages
|
|
171
|
+
- `get_logbook_received` - View received SMS
|
|
172
|
+
- `get_logbook_voice` - View voice call history
|
|
173
|
+
|
|
174
|
+
### Phone Numbers Tools
|
|
175
|
+
- `get_available_numbers` - List available numbers
|
|
176
|
+
- `order_number` - Purchase a phone number
|
|
177
|
+
- `get_active_numbers` - List active numbers
|
|
178
|
+
- `get_number` - Get number details
|
|
179
|
+
- `update_number` - Update number configuration
|
|
180
|
+
- `delete_number` - Cancel/delete number
|
|
181
|
+
|
|
182
|
+
### Contact Tools
|
|
183
|
+
- `list_contacts` - List all contacts
|
|
184
|
+
- `create_contact` - Create new contact
|
|
185
|
+
- `get_contact` - Get contact by ID
|
|
186
|
+
- `update_contact` - Update contact
|
|
187
|
+
- `delete_contact` - Delete contact
|
|
188
|
+
|
|
189
|
+
### Group Tools
|
|
190
|
+
- `list_groups` - List all groups
|
|
191
|
+
- `create_group` - Create new group
|
|
192
|
+
- `get_group` - Get group by ID
|
|
193
|
+
- `update_group` - Update group
|
|
194
|
+
- `delete_group` - Delete group
|
|
195
|
+
|
|
196
|
+
### Subaccount Tools
|
|
197
|
+
- `list_subaccounts` - List all subaccounts
|
|
198
|
+
- `create_subaccount` - Create new subaccount
|
|
199
|
+
- `update_subaccount` - Update subaccount settings
|
|
200
|
+
- `transfer_credits` - Transfer credits to subaccount
|
|
201
|
+
- `delete_subaccount` - Delete subaccount
|
|
202
|
+
|
|
203
|
+
### Webhook Tools
|
|
204
|
+
- `list_webhooks` - List registered webhooks
|
|
205
|
+
- `create_webhook` - Register new webhook
|
|
206
|
+
- `delete_webhook` - Delete webhook
|
|
207
|
+
|
|
208
|
+
### Sender Tools
|
|
209
|
+
- `validate_sender` - Validate sender identifiers
|
|
210
|
+
|
|
211
|
+
## Example Usage
|
|
212
|
+
|
|
213
|
+
Once configured, you can use the tools in Claude:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
Send an SMS to +1234567890 saying "Hello from seven.io!"
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
Check my account balance
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
Look up the carrier information for phone number +1234567890
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Development
|
|
228
|
+
|
|
229
|
+
### Watch mode
|
|
230
|
+
```bash
|
|
231
|
+
npm run watch
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Build
|
|
235
|
+
```bash
|
|
236
|
+
npm run build
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Testing
|
|
240
|
+
|
|
241
|
+
Run the comprehensive test suite:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
npm test
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Run tests in watch mode:
|
|
248
|
+
```bash
|
|
249
|
+
npm run test:watch
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Generate coverage report:
|
|
253
|
+
```bash
|
|
254
|
+
npm run test:coverage
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
#### Test Coverage
|
|
258
|
+
|
|
259
|
+
The test suite includes:
|
|
260
|
+
- **Unit tests** for all API client methods
|
|
261
|
+
- **Tool tests** for all 40+ MCP tools covering:
|
|
262
|
+
- RCS messaging (3 tools)
|
|
263
|
+
- SMS messaging (2 tools)
|
|
264
|
+
- Voice calls (2 tools)
|
|
265
|
+
- Account management (3 tools)
|
|
266
|
+
- Lookup services (5 tools)
|
|
267
|
+
- Status & Logbook (4 tools)
|
|
268
|
+
- Phone number management (6 tools)
|
|
269
|
+
- Contact management (5 tools)
|
|
270
|
+
- Group management (5 tools)
|
|
271
|
+
- Subaccount management (5 tools)
|
|
272
|
+
- Webhook management (3 tools)
|
|
273
|
+
- Sender validation (1 tool)
|
|
274
|
+
- **Integration tests** verifying all tools export correctly and have valid schemas
|
|
275
|
+
- **Endpoint validation tests** that verify API endpoint paths are correct (requires SEVEN_API_KEY)
|
|
276
|
+
|
|
277
|
+
Coverage target: 80% for branches, functions, lines, and statements.
|
|
278
|
+
|
|
279
|
+
#### Endpoint Validation
|
|
280
|
+
|
|
281
|
+
To run endpoint validation tests that verify the API paths are correct:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
SEVEN_API_KEY=your-api-key npm test
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
These integration tests ensure that endpoints match the seven.io API documentation and will catch issues like incorrect paths (e.g., using `/logbook/received` instead of `/journal/inbound`).
|
|
288
|
+
|
|
289
|
+
## API Documentation
|
|
290
|
+
|
|
291
|
+
For detailed API documentation, visit [docs.seven.io](https://docs.seven.io).
|
|
292
|
+
|
|
293
|
+
## License
|
|
294
|
+
|
|
295
|
+
MIT
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { performOAuthFlow } from './oauth/flow.js';
|
|
3
|
+
import { getTokens, deleteTokens, hasTokens } from './oauth/tokens.js';
|
|
4
|
+
const CLIENT_ID = 'seven-mcp'; // Static OAuth client ID
|
|
5
|
+
async function main() {
|
|
6
|
+
const command = process.argv[2];
|
|
7
|
+
switch (command) {
|
|
8
|
+
case 'login':
|
|
9
|
+
await handleLogin();
|
|
10
|
+
break;
|
|
11
|
+
case 'logout':
|
|
12
|
+
await handleLogout();
|
|
13
|
+
break;
|
|
14
|
+
case 'status':
|
|
15
|
+
await handleStatus();
|
|
16
|
+
break;
|
|
17
|
+
default:
|
|
18
|
+
showHelp();
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function handleLogin() {
|
|
23
|
+
try {
|
|
24
|
+
// Check if already logged in
|
|
25
|
+
if (await hasTokens()) {
|
|
26
|
+
console.log('You are already logged in.');
|
|
27
|
+
console.log('Run "seven-mcp logout" first if you want to log in again.');
|
|
28
|
+
process.exit(0);
|
|
29
|
+
}
|
|
30
|
+
// Perform OAuth flow
|
|
31
|
+
await performOAuthFlow({
|
|
32
|
+
clientId: CLIENT_ID,
|
|
33
|
+
scope: 'analytics balance contacts groups hooks journal lookup numbers pricing rcs sms status subaccounts validate_for_voice voice',
|
|
34
|
+
});
|
|
35
|
+
console.log('\n✓ Login successful!');
|
|
36
|
+
console.log('You can now use the seven.io MCP server with OAuth authentication.');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error('\n✗ Login failed:', error.message);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function handleLogout() {
|
|
44
|
+
try {
|
|
45
|
+
if (!(await hasTokens())) {
|
|
46
|
+
console.log('You are not logged in.');
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
const deleted = await deleteTokens();
|
|
50
|
+
if (deleted) {
|
|
51
|
+
console.log('✓ Logout successful. Tokens have been removed.');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log('No tokens found to remove.');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('✗ Logout failed:', error.message);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function handleStatus() {
|
|
63
|
+
try {
|
|
64
|
+
const tokens = await getTokens();
|
|
65
|
+
if (!tokens) {
|
|
66
|
+
console.log('Status: Not logged in');
|
|
67
|
+
console.log('\nRun "seven-mcp login" to authenticate.');
|
|
68
|
+
process.exit(0);
|
|
69
|
+
}
|
|
70
|
+
const now = Math.floor(Date.now() / 1000);
|
|
71
|
+
const expiresIn = tokens.expires_at - now;
|
|
72
|
+
console.log('Status: Logged in');
|
|
73
|
+
// Try to get account info from keychain
|
|
74
|
+
try {
|
|
75
|
+
const keytar = await import('keytar');
|
|
76
|
+
const k = keytar.default || keytar;
|
|
77
|
+
const account = await k.getPassword('seven-mcp', 'current-account');
|
|
78
|
+
if (account) {
|
|
79
|
+
console.log(`Account: ${account}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch { }
|
|
83
|
+
console.log(`Token type: ${tokens.token_type}`);
|
|
84
|
+
console.log(`Scope: ${tokens.scope || 'N/A'}`);
|
|
85
|
+
if (expiresIn > 0) {
|
|
86
|
+
const minutes = Math.floor(expiresIn / 60);
|
|
87
|
+
const seconds = expiresIn % 60;
|
|
88
|
+
console.log(`Expires in: ${minutes}m ${seconds}s`);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.log('Token: EXPIRED (will be auto-refreshed on next use)');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error('✗ Failed to check status:', error.message);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function showHelp() {
|
|
100
|
+
console.log(`
|
|
101
|
+
seven-mcp - Seven.io MCP Server CLI
|
|
102
|
+
|
|
103
|
+
USAGE:
|
|
104
|
+
seven-mcp <command>
|
|
105
|
+
|
|
106
|
+
COMMANDS:
|
|
107
|
+
login Authenticate with seven.io using OAuth
|
|
108
|
+
logout Remove stored authentication tokens
|
|
109
|
+
status Show current authentication status
|
|
110
|
+
help Show this help message
|
|
111
|
+
|
|
112
|
+
EXAMPLES:
|
|
113
|
+
# Login with OAuth
|
|
114
|
+
seven-mcp login
|
|
115
|
+
|
|
116
|
+
# Check authentication status
|
|
117
|
+
seven-mcp status
|
|
118
|
+
|
|
119
|
+
# Logout
|
|
120
|
+
seven-mcp logout
|
|
121
|
+
|
|
122
|
+
For more information, visit https://github.com/yourusername/mcp-seven
|
|
123
|
+
`);
|
|
124
|
+
}
|
|
125
|
+
main().catch((error) => {
|
|
126
|
+
console.error('Fatal error:', error);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SevenConfig } from './types.js';
|
|
2
|
+
export declare class SevenClient {
|
|
3
|
+
private client;
|
|
4
|
+
private apiKey?;
|
|
5
|
+
private clientId?;
|
|
6
|
+
private useOAuth;
|
|
7
|
+
constructor(config: SevenConfig);
|
|
8
|
+
get<T>(path: string, params?: Record<string, any>): Promise<T>;
|
|
9
|
+
private encodeFormData;
|
|
10
|
+
post<T>(path: string, data?: Record<string, any>, options?: {
|
|
11
|
+
formEncoded?: boolean;
|
|
12
|
+
}): Promise<T>;
|
|
13
|
+
patch<T>(path: string, data?: Record<string, any>, options?: {
|
|
14
|
+
formEncoded?: boolean;
|
|
15
|
+
}): Promise<T>;
|
|
16
|
+
delete<T>(path: string): Promise<T>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,MAAM,EAAE,WAAW;IAwCzB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKpE,OAAO,CAAC,cAAc;IAahB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAWlG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAWnG,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAI1C"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { getValidAccessToken } from './oauth/refresh.js';
|
|
3
|
+
import { getTokens } from './oauth/tokens.js';
|
|
4
|
+
export class SevenClient {
|
|
5
|
+
client;
|
|
6
|
+
apiKey;
|
|
7
|
+
clientId;
|
|
8
|
+
useOAuth = false;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.apiKey = config.apiKey;
|
|
11
|
+
this.clientId = config.clientId;
|
|
12
|
+
const baseUrl = config.baseUrl || 'https://gateway.seven.io/api';
|
|
13
|
+
this.client = axios.create({
|
|
14
|
+
baseURL: baseUrl,
|
|
15
|
+
headers: {
|
|
16
|
+
'Content-Type': 'application/json',
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
// Add request interceptor to handle authentication
|
|
20
|
+
this.client.interceptors.request.use(async (config) => {
|
|
21
|
+
// Try OAuth first if client ID is provided
|
|
22
|
+
if (this.clientId) {
|
|
23
|
+
try {
|
|
24
|
+
const tokens = await getTokens();
|
|
25
|
+
if (tokens) {
|
|
26
|
+
const accessToken = await getValidAccessToken(this.clientId);
|
|
27
|
+
config.headers.Authorization = `Bearer ${accessToken}`;
|
|
28
|
+
this.useOAuth = true;
|
|
29
|
+
return config;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
// Fall through to API key
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Fallback to API key
|
|
37
|
+
if (this.apiKey) {
|
|
38
|
+
config.headers['X-API-Key'] = this.apiKey;
|
|
39
|
+
}
|
|
40
|
+
else if (!this.useOAuth) {
|
|
41
|
+
throw new Error('No authentication method available. Please set SEVEN_API_KEY or run "seven-mcp login"');
|
|
42
|
+
}
|
|
43
|
+
return config;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async get(path, params) {
|
|
47
|
+
const response = await this.client.get(path, { params });
|
|
48
|
+
return response.data;
|
|
49
|
+
}
|
|
50
|
+
encodeFormData(data) {
|
|
51
|
+
const params = new URLSearchParams();
|
|
52
|
+
for (const [key, value] of Object.entries(data)) {
|
|
53
|
+
if (Array.isArray(value)) {
|
|
54
|
+
// For arrays, append each value with array bracket notation
|
|
55
|
+
value.forEach((item) => params.append(`${key}[]`, item));
|
|
56
|
+
}
|
|
57
|
+
else if (value !== undefined && value !== null) {
|
|
58
|
+
params.append(key, value);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return params.toString();
|
|
62
|
+
}
|
|
63
|
+
async post(path, data, options) {
|
|
64
|
+
const config = options?.formEncoded
|
|
65
|
+
? {
|
|
66
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
67
|
+
transformRequest: [(data) => this.encodeFormData(data)]
|
|
68
|
+
}
|
|
69
|
+
: {};
|
|
70
|
+
const response = await this.client.post(path, data, config);
|
|
71
|
+
return response.data;
|
|
72
|
+
}
|
|
73
|
+
async patch(path, data, options) {
|
|
74
|
+
const config = options?.formEncoded
|
|
75
|
+
? {
|
|
76
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
77
|
+
transformRequest: [(data) => this.encodeFormData(data)]
|
|
78
|
+
}
|
|
79
|
+
: {};
|
|
80
|
+
const response = await this.client.patch(path, data, config);
|
|
81
|
+
return response.data;
|
|
82
|
+
}
|
|
83
|
+
async delete(path) {
|
|
84
|
+
const response = await this.client.delete(path);
|
|
85
|
+
return response.data;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|