@speakai/mcp-server 1.0.4 → 1.0.6

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.
Files changed (3) hide show
  1. package/README.md +87 -29
  2. package/dist/index.js +7 -7
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
  <img src="assets/logo.png" alt="Speak AI" width="120" />
3
3
  </p>
4
4
 
5
- <h1 align="center">Speak AI MCP Server</h1>
5
+ <h1 align="center">Speak AI MCP Server & CLI</h1>
6
6
 
7
7
  <p align="center">
8
8
  Connect Claude, ChatGPT, and other AI assistants to your <a href="https://speakai.co">Speak AI</a> workspace.<br/>
9
- Transcribe meetings, analyze media, extract insights — all through natural conversation.
9
+ Transcribe meetings, analyze media, extract insights — through AI assistants or the command line.
10
10
  </p>
11
11
 
12
12
  <p align="center">
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## What You Can Do
21
21
 
22
- Ask your AI assistant to work with your Speak AI data:
22
+ **With AI assistants:**
23
23
 
24
24
  > "Transcribe this audio file and give me the key takeaways"
25
25
 
@@ -27,9 +27,14 @@ Ask your AI assistant to work with your Speak AI data:
27
27
 
28
28
  > "Export all Q1 interview transcripts as PDFs with speaker names"
29
29
 
30
- > "Schedule the meeting assistant for my Zoom call at 2pm"
30
+ **From the command line:**
31
31
 
32
- > "Create a folder called Customer Research and move these recordings into it"
32
+ ```sh
33
+ speakai-mcp upload https://example.com/meeting.mp3 --wait
34
+ speakai-mcp transcript abc123 --plain
35
+ speakai-mcp ask abc123 "What were the action items?"
36
+ speakai-mcp export abc123 -f pdf --speakers
37
+ ```
33
38
 
34
39
  ---
35
40
 
@@ -43,37 +48,82 @@ Ask your AI assistant to work with your Speak AI data:
43
48
 
44
49
  That's it — the server handles access token management automatically.
45
50
 
46
- ### 2. Connect to Your AI Assistant
47
-
48
- There are two ways to connect — choose the one that fits your setup:
51
+ ### 2. Choose How to Use It
49
52
 
50
53
  ---
51
54
 
52
- ## Option A: Claude Web / ChatGPT (Remote Connector)
55
+ ## CLI (Command Line)
53
56
 
54
- For **Claude on the web** (claude.ai) and **ChatGPT**, use the hosted endpoint. No installation required.
57
+ Install globally and configure your API key once:
55
58
 
56
- **Claude (claude.ai):**
59
+ ```sh
60
+ npm install -g @speakai/mcp-server
61
+ speakai-mcp config set-key
62
+ ```
57
63
 
58
- 1. Go to **Settings > Connectors > Add Connector**
59
- 2. Enter the URL: `https://api.speakai.co/v1/mcp`
60
- 3. Add your authentication headers
61
- 4. Start chatting with your Speak AI data
64
+ Or run without installing:
65
+
66
+ ```sh
67
+ npx @speakai/mcp-server config set-key
68
+ ```
69
+
70
+ Then use any command:
71
+
72
+ ```sh
73
+ speakai-mcp ls # List all media
74
+ speakai-mcp upload https://example.com/call.mp3 # Upload media
75
+ speakai-mcp transcript <id> # Get transcript
76
+ speakai-mcp insights <id> # Get AI insights
77
+ speakai-mcp ask <id> "Summarize this meeting" # Ask AI questions
78
+ speakai-mcp export <id> -f pdf --speakers # Export transcript
79
+ speakai-mcp schedule-meeting <zoom-url> # Join a meeting
80
+ ```
62
81
 
63
- **ChatGPT:**
82
+ ### All CLI Commands
64
83
 
65
- 1. Go to **Settings > Connectors > Create**
66
- 2. Enter the MCP URL: `https://api.speakai.co/v1/mcp`
67
- 3. Configure authentication with your API key
68
- 4. Done your GPT can now access Speak AI
84
+ | Command | Description |
85
+ |---|---|
86
+ | `config set-key [key]` | Set your API key (interactive if no key given) |
87
+ | `config show` | Show current configuration |
88
+ | `config set-url <url>` | Set custom API base URL |
89
+ | `list-media` / `ls` | List media files with filtering and pagination |
90
+ | `get-transcript` / `transcript <id>` | Get transcript (formatted, `--plain`, or `--json`) |
91
+ | `get-insights` / `insights <id>` | Get AI insights (topics, sentiment, keywords) |
92
+ | `upload <url>` | Upload media from URL (`--wait` to poll until done) |
93
+ | `export <id>` | Export transcript (`-f pdf\|docx\|srt\|vtt\|txt\|csv\|md`) |
94
+ | `status <id>` | Check media processing status |
95
+ | `create-text <name>` | Create text note (`--text` or pipe via stdin) |
96
+ | `list-folders` / `folders` | List all folders |
97
+ | `ask <id> <prompt>` | Ask AI a question about a media file |
98
+ | `schedule-meeting <url>` | Schedule meeting assistant to join a call |
99
+
100
+ ### CLI Options
101
+
102
+ Every command supports:
103
+ - `--json` — output raw JSON (for scripting and piping)
104
+ - `--help` — show command-specific help
105
+
106
+ ```sh
107
+ # Pipe transcript to a file
108
+ speakai-mcp transcript abc123 --plain > meeting.txt
109
+
110
+ # Upload and wait for processing
111
+ speakai-mcp upload https://example.com/interview.mp3 -n "Q1 Interview" --wait
112
+
113
+ # Create text note from stdin
114
+ cat notes.txt | speakai-mcp create-text "Meeting Notes"
115
+
116
+ # List only video files as JSON
117
+ speakai-mcp ls --type video --json | jq '.mediaList[].name'
118
+ ```
69
119
 
70
120
  ---
71
121
 
72
- ## Option B: Claude Desktop / Claude Code (Local Server)
122
+ ## MCP Server (AI Assistants)
73
123
 
74
- For **Claude Desktop** and **Claude Code**, the server runs locally on your machine via npm.
124
+ ### Claude Desktop
75
125
 
76
- **Claude Desktop** — add to your config file:
126
+ Add to your config file:
77
127
 
78
128
  macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
79
129
  Windows: `%APPDATA%\Claude\claude_desktop_config.json`
@@ -92,16 +142,23 @@ Windows: `%APPDATA%\Claude\claude_desktop_config.json`
92
142
  }
93
143
  ```
94
144
 
95
- **Claude Code (CLI):**
145
+ ### Claude Code
96
146
 
97
147
  ```sh
98
148
  export SPEAK_API_KEY="your-api-key"
99
-
100
149
  claude mcp add speak-ai -- npx -y @speakai/mcp-server
101
- claude
102
150
  ```
103
151
 
104
- **Any STDIO-compatible MCP client:**
152
+ ### Claude Web (claude.ai)
153
+
154
+ 1. Go to **Settings > Connectors > Add Connector**
155
+ 2. Enter the URL: `https://api.speakai.co/v1/mcp`
156
+ 3. Add your `x-speakai-key` and `x-access-token` headers
157
+ 4. Start chatting with your Speak AI data
158
+
159
+ ### Any MCP Client
160
+
161
+ Any STDIO-compatible client can connect:
105
162
 
106
163
  ```sh
107
164
  SPEAK_API_KEY=your-key npx @speakai/mcp-server
@@ -310,8 +367,9 @@ All requests require `x-speakai-key` (API key) and `x-access-token` (JWT) header
310
367
  ## Development
311
368
 
312
369
  ```sh
313
- git clone https://github.com/speakai/speak-mcp.git
314
- cd speak-mcp
370
+ git clone https://github.com/speakai/speakai-mcp.git
371
+ cd speakai-mcp
372
+
315
373
  npm install
316
374
  npm run dev # Run with hot reload
317
375
  npm run build # Production build
package/dist/index.js CHANGED
@@ -47,7 +47,7 @@ function getApiKey() {
47
47
  async function authenticate() {
48
48
  const apiKey = getApiKey();
49
49
  if (!apiKey) {
50
- throw new Error("SPEAK_API_KEY is not set. Run 'speak-mcp config set-key' or set the environment variable.");
50
+ throw new Error("SPEAK_API_KEY is not set. Run 'speakai-mcp config set-key' or set the environment variable.");
51
51
  }
52
52
  try {
53
53
  const res = await import_axios.default.post(
@@ -64,11 +64,11 @@ async function authenticate() {
64
64
  accessToken = res.data.data.accessToken;
65
65
  refreshToken = res.data.data.refreshToken ?? "";
66
66
  tokenExpiresAt = Date.now() + 50 * 60 * 1e3;
67
- process.stderr.write("[speak-mcp] Authenticated successfully\n");
67
+ process.stderr.write("[speakai-mcp] Authenticated successfully\n");
68
68
  }
69
69
  } catch (err) {
70
70
  process.stderr.write(
71
- `[speak-mcp] Authentication failed: ${err instanceof Error ? err.message : err}
71
+ `[speakai-mcp] Authentication failed: ${err instanceof Error ? err.message : err}
72
72
  `
73
73
  );
74
74
  }
@@ -93,7 +93,7 @@ async function refreshAccessToken() {
93
93
  accessToken = res.data.data.accessToken;
94
94
  refreshToken = res.data.data.refreshToken ?? refreshToken;
95
95
  tokenExpiresAt = Date.now() + 50 * 60 * 1e3;
96
- process.stderr.write("[speak-mcp] Token refreshed\n");
96
+ process.stderr.write("[speakai-mcp] Token refreshed\n");
97
97
  }
98
98
  } catch {
99
99
  return authenticate();
@@ -1886,14 +1886,14 @@ function requireApiKey() {
1886
1886
  resolveBaseUrl();
1887
1887
  if (!key) {
1888
1888
  printError(
1889
- 'No API key configured. Run "speak-mcp config set-key" or set SPEAK_API_KEY.'
1889
+ 'No API key configured. Run "speakai-mcp config set-key" or set SPEAK_API_KEY.'
1890
1890
  );
1891
1891
  process.exit(1);
1892
1892
  }
1893
1893
  }
1894
1894
  function createCli() {
1895
1895
  const program = new import_commander.Command();
1896
- program.name("speak-mcp").description(
1896
+ program.name("speakai-mcp").description(
1897
1897
  "Speak AI CLI & MCP Server \u2014 transcribe, analyze, and manage media from the command line"
1898
1898
  ).version("1.0.0");
1899
1899
  const config = program.command("config").description("Manage configuration");
@@ -2315,7 +2315,7 @@ if (isCliMode) {
2315
2315
  const transport = new StdioServerTransport();
2316
2316
  server.connect(transport).then(() => {
2317
2317
  process.stderr.write(
2318
- "[speak-mcp] Server started on stdio transport\n"
2318
+ "[speakai-mcp] Server started on stdio transport\n"
2319
2319
  );
2320
2320
  });
2321
2321
  });
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@speakai/mcp-server",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Official Speak AI MCP Server — connect Claude and other AI assistants to Speak AI's transcription, insights, and media management API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
8
- "speak-mcp": "dist/index.js"
8
+ "speakai-mcp": "dist/index.js"
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsup src/index.ts --format cjs --clean && cp src/types.d.ts dist/index.d.ts",