@spekoai/mcp 1.0.0 → 1.0.4

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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +142 -36
  3. package/dist/index.d.ts +26 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +112 -25
  6. package/package.json +44 -40
  7. package/dist/data/benchmarks.d.ts +0 -124
  8. package/dist/data/benchmarks.d.ts.map +0 -1
  9. package/dist/data/benchmarks.js +0 -176
  10. package/dist/data/benchmarks.js.map +0 -1
  11. package/dist/data/templates.d.ts +0 -39
  12. package/dist/data/templates.d.ts.map +0 -1
  13. package/dist/data/templates.js +0 -385
  14. package/dist/data/templates.js.map +0 -1
  15. package/dist/index.js.map +0 -1
  16. package/dist/lib/api-client.d.ts +0 -71
  17. package/dist/lib/api-client.d.ts.map +0 -1
  18. package/dist/lib/api-client.js +0 -282
  19. package/dist/lib/api-client.js.map +0 -1
  20. package/dist/lib/benchmark-utils.d.ts +0 -45
  21. package/dist/lib/benchmark-utils.d.ts.map +0 -1
  22. package/dist/lib/benchmark-utils.js +0 -244
  23. package/dist/lib/benchmark-utils.js.map +0 -1
  24. package/dist/lib/project-scanner.d.ts +0 -16
  25. package/dist/lib/project-scanner.d.ts.map +0 -1
  26. package/dist/lib/project-scanner.js +0 -154
  27. package/dist/lib/project-scanner.js.map +0 -1
  28. package/dist/lib/tier-gate.d.ts +0 -14
  29. package/dist/lib/tier-gate.d.ts.map +0 -1
  30. package/dist/lib/tier-gate.js +0 -27
  31. package/dist/lib/tier-gate.js.map +0 -1
  32. package/dist/tools/agent-crud.d.ts +0 -3
  33. package/dist/tools/agent-crud.d.ts.map +0 -1
  34. package/dist/tools/agent-crud.js +0 -114
  35. package/dist/tools/agent-crud.js.map +0 -1
  36. package/dist/tools/legacy.d.ts +0 -3
  37. package/dist/tools/legacy.d.ts.map +0 -1
  38. package/dist/tools/legacy.js +0 -354
  39. package/dist/tools/legacy.js.map +0 -1
  40. package/dist/tools/migrate.d.ts +0 -3
  41. package/dist/tools/migrate.d.ts.map +0 -1
  42. package/dist/tools/migrate.js +0 -145
  43. package/dist/tools/migrate.js.map +0 -1
  44. package/dist/tools/recommend.d.ts +0 -3
  45. package/dist/tools/recommend.d.ts.map +0 -1
  46. package/dist/tools/recommend.js +0 -163
  47. package/dist/tools/recommend.js.map +0 -1
  48. package/dist/tools/setup.d.ts +0 -3
  49. package/dist/tools/setup.d.ts.map +0 -1
  50. package/dist/tools/setup.js +0 -104
  51. package/dist/tools/setup.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SpekoAI
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 CHANGED
@@ -1,59 +1,165 @@
1
- # @speko/mcp
2
-
3
- MCP server for voice AI development inside AI-assisted coding environments.
1
+ # @spekoai/mcp
2
+
3
+ Local stdio bridge for MCP clients that cannot connect to remote HTTP MCP
4
+ servers directly. It proxies SpekoAI's hosted MCP server and does not contain
5
+ Speko tool logic of its own.
6
+
7
+ Use the hosted endpoint directly when your client supports remote MCP:
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "spekoai": {
13
+ "url": "https://mcp.speko.ai/mcp-auth"
14
+ }
15
+ }
16
+ }
17
+ ```
4
18
 
5
- `@speko/mcp` helps teams and agents recommend optimal STT+LLM+TTS stacks, benchmark combinations, migrate from existing voice providers, and scaffold new voice agent projects.
19
+ Use this package for stdio-only clients.
6
20
 
7
21
  ## Install
8
22
 
9
23
  ```bash
10
- claude mcp add speko -- npx -y @speko/mcp
24
+ npx @spekoai/mcp@latest --help
25
+ ```
26
+
27
+ The package exposes the `spekoai-mcp` binary.
28
+
29
+ ## Claude Code
30
+
31
+ OAuth-capable remote MCP clients should prefer the hosted endpoint:
32
+
33
+ ```bash
34
+ claude mcp add --transport http spekoai https://mcp.speko.ai/mcp-auth
35
+ ```
36
+
37
+ For a stdio bridge install:
38
+
39
+ ```bash
40
+ claude mcp add spekoai -- npx -y @spekoai/mcp@latest
41
+ ```
42
+
43
+ For API-key auth in a headless setup, provide `SPEKO_API_KEY` in the MCP
44
+ client environment. The bridge forwards it as `Authorization: Bearer ...`.
45
+
46
+ ## Cursor
47
+
48
+ Add this to `~/.cursor/mcp.json`:
49
+
50
+ ```json
51
+ {
52
+ "mcpServers": {
53
+ "spekoai": {
54
+ "command": "npx",
55
+ "args": ["-y", "@spekoai/mcp@latest"]
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ With API-key auth:
62
+
63
+ ```json
64
+ {
65
+ "mcpServers": {
66
+ "spekoai": {
67
+ "command": "npx",
68
+ "args": ["-y", "@spekoai/mcp@latest"],
69
+ "env": {
70
+ "SPEKO_API_KEY": "sk_live_xxx"
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## OpenCode
78
+
79
+ Add this to `opencode.json`:
80
+
81
+ ```json
82
+ {
83
+ "$schema": "https://opencode.ai/config.json",
84
+ "mcp": {
85
+ "spekoai": {
86
+ "type": "local",
87
+ "command": ["pnpm", "dlx", "@spekoai/mcp@latest"],
88
+ "enabled": true
89
+ }
90
+ }
91
+ }
11
92
  ```
12
93
 
13
- ## Tools
94
+ With API-key auth:
95
+
96
+ ```json
97
+ {
98
+ "$schema": "https://opencode.ai/config.json",
99
+ "mcp": {
100
+ "spekoai": {
101
+ "type": "local",
102
+ "command": ["pnpm", "dlx", "@spekoai/mcp@latest"],
103
+ "enabled": true,
104
+ "environment": {
105
+ "SPEKO_API_KEY": "{env:SPEKO_API_KEY}"
106
+ }
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ ## Generic MCP Config
113
+
114
+ ```json
115
+ {
116
+ "mcpServers": {
117
+ "spekoai": {
118
+ "command": "npx",
119
+ "args": ["-y", "@spekoai/mcp@latest"]
120
+ }
121
+ }
122
+ }
123
+ ```
14
124
 
15
- ### Tier 1 — Works immediately, no account needed
125
+ ## Configuration
16
126
 
17
- | Tool | Description |
18
- |------|-------------|
19
- | `speko_recommend` | Recommend optimal STT+LLM+TTS combo for your language, use case, and priorities |
20
- | `speko_benchmark` | Browse benchmark data for tested voice AI combinations |
21
- | `speko_compare` | Side-by-side comparison of two stacks |
22
- | `speko_providers` | List supported providers across STT, LLM, TTS, and S2S |
23
- | `speko_health` | System health and coverage metrics |
24
- | `speko_migrate` | Scan codebase for existing voice providers and generate migration plan |
127
+ Defaults:
25
128
 
26
- ### Tier 2 — Requires Speko account
129
+ - Authenticated endpoint: `https://mcp.speko.ai/mcp-auth`
130
+ - Public-only endpoint: `https://mcp.speko.ai/mcp`
27
131
 
28
- | Tool | Description |
29
- |------|-------------|
30
- | `speko_setup` | Scaffold Speko SDK integration into Next.js/React/vanilla projects |
31
- | `speko_agent_create` | Create a voice agent via API |
32
- | `speko_agent_update` | Update voice agent configuration |
33
- | `speko_agent_status` | Get agent health and metrics |
132
+ Environment variables:
34
133
 
35
- Get your API key at [app.speko.ai](https://app.speko.ai/).
134
+ - `SPEKOAI_MCP_AUTH_URL`: override the authenticated endpoint.
135
+ - `SPEKOAI_MCP_URL`: override the public endpoint.
136
+ - `SPEKO_API_KEY`: forward an API key as a bearer token.
36
137
 
37
- ## Development
138
+ CLI examples:
38
139
 
39
140
  ```bash
40
- bun install
41
- bun run build
42
- bun run test
141
+ npx @spekoai/mcp@latest
142
+ npx @spekoai/mcp@latest --public
143
+ SPEKO_API_KEY=sk_live_xxx npx @spekoai/mcp@latest
144
+ SPEKOAI_MCP_AUTH_URL=https://mcp-staging.speko.dev/mcp-auth npx @spekoai/mcp@latest
145
+ npx @spekoai/mcp@latest https://mcp-staging.speko.dev/mcp-auth --debug
43
146
  ```
44
147
 
45
- ## Environment
148
+ All remaining arguments are passed through to `mcp-remote`.
46
149
 
47
- - `SPEKO_API_KEY` — required for Tier 2 tools
48
- - `SPEKO_API_URL` — override API endpoint (default: `https://api.speko.ai`)
150
+ ## Troubleshooting
49
151
 
50
- When no API key is set, Tier 1 tools work with built-in benchmark data. Tier 2 tools return a helpful message directing users to get an API key.
152
+ Run:
51
153
 
52
- ## Repository
154
+ ```bash
155
+ npx @spekoai/mcp@latest --help
156
+ ```
53
157
 
54
- - GitHub: [spekoAI/speko-mcp](https://github.com/spekoAI/speko-mcp)
55
- - Website: [speko.ai](https://speko.ai)
158
+ For `mcp-remote` auth cache issues, restart the MCP client after clearing:
56
159
 
57
- ## License
160
+ ```bash
161
+ rm -rf ~/.mcp-auth
162
+ ```
58
163
 
59
- MIT
164
+ For connection or OAuth issues, pass `--debug` and inspect the log path printed
165
+ by `mcp-remote`.
package/dist/index.d.ts CHANGED
@@ -1,3 +1,28 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export declare const DEFAULT_AUTH_MCP_URL = "https://mcp.speko.ai/mcp-auth";
3
+ export declare const DEFAULT_PUBLIC_MCP_URL = "https://mcp.speko.ai/mcp";
4
+ export declare const AUTH_HEADER_ENV = "SPEKOAI_MCP_AUTH_HEADER";
5
+ export type Environment = Record<string, string | undefined>;
6
+ export type CliConfig = {
7
+ serverUrl: string;
8
+ passthroughArgs: string[];
9
+ publicOnly: boolean;
10
+ help: boolean;
11
+ };
12
+ export type AuthHeaderConfig = {
13
+ args: string[];
14
+ envValue?: string;
15
+ };
16
+ export declare const HELP_TEXT = "Usage: spekoai-mcp [url] [mcp-remote flags]\n\nBridge local stdio MCP clients to SpekoAI's hosted MCP server.\n\nDefaults:\n Authenticated endpoint: https://mcp.speko.ai/mcp-auth\n Public-only endpoint: https://mcp.speko.ai/mcp\n\nOptions:\n --public Connect to the public docs/scaffolding endpoint.\n -h, --help Print this help text.\n\nEnvironment:\n SPEKOAI_MCP_AUTH_URL Override the authenticated endpoint.\n SPEKOAI_MCP_URL Override the public endpoint.\n SPEKO_API_KEY Forward as Authorization bearer token.\n\nExamples:\n spekoai-mcp\n spekoai-mcp --public\n SPEKO_API_KEY=sk_live_xxx spekoai-mcp\n SPEKOAI_MCP_AUTH_URL=https://mcp-staging.speko.dev/mcp-auth spekoai-mcp\n spekoai-mcp https://mcp-staging.speko.dev/mcp-auth --debug\n\nAll remaining arguments are passed through to mcp-remote.\n";
17
+ export declare function resolveCliConfig(argv: readonly string[], env?: Environment): CliConfig;
18
+ export declare function buildAuthHeaderArgs(env?: Environment): AuthHeaderConfig;
19
+ export declare function buildProxyArgv(options: {
20
+ nodePath: string;
21
+ proxyPath: string;
22
+ serverUrl: string;
23
+ authArgs: readonly string[];
24
+ passthroughArgs: readonly string[];
25
+ }): string[];
26
+ export declare function resolveProxyPath(): string;
27
+ export declare function run(argv?: string[], env?: NodeJS.ProcessEnv): Promise<void>;
3
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;AACpE,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,g1BAyBrB,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,WAAyB,GAC7B,SAAS,CAwBX;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,WAAyB,GAAG,gBAAgB,CAUpF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GAAG,MAAM,EAAE,CAQX;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAsB,GAAG,CAAC,IAAI,WAAwB,EAAE,GAAG,oBAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBxF"}
package/dist/index.js CHANGED
@@ -1,26 +1,113 @@
1
1
  #!/usr/bin/env node
2
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
- import { registerAgentCrudTools } from "./tools/agent-crud.js";
5
- import { registerLegacyTools } from "./tools/legacy.js";
6
- import { registerMigrateTool } from "./tools/migrate.js";
7
- import { registerRecommendTool } from "./tools/recommend.js";
8
- import { registerSetupTool } from "./tools/setup.js";
9
- const server = new McpServer({
10
- name: "speko",
11
- version: "0.3.0",
12
- });
13
- registerSetupTool(server);
14
- registerMigrateTool(server);
15
- registerAgentCrudTools(server);
16
- registerRecommendTool(server);
17
- registerLegacyTools(server);
18
- async function main() {
19
- const transport = new StdioServerTransport();
20
- await server.connect(transport);
21
- }
22
- main().catch((error) => {
23
- console.error("Speko MCP server error:", error);
24
- process.exit(1);
25
- });
26
- //# sourceMappingURL=index.js.map
2
+ import { createRequire } from 'node:module';
3
+ import { pathToFileURL } from 'node:url';
4
+ export const DEFAULT_AUTH_MCP_URL = 'https://mcp.speko.ai/mcp-auth';
5
+ export const DEFAULT_PUBLIC_MCP_URL = 'https://mcp.speko.ai/mcp';
6
+ export const AUTH_HEADER_ENV = 'SPEKOAI_MCP_AUTH_HEADER';
7
+ export const HELP_TEXT = `Usage: spekoai-mcp [url] [mcp-remote flags]
8
+
9
+ Bridge local stdio MCP clients to SpekoAI's hosted MCP server.
10
+
11
+ Defaults:
12
+ Authenticated endpoint: ${DEFAULT_AUTH_MCP_URL}
13
+ Public-only endpoint: ${DEFAULT_PUBLIC_MCP_URL}
14
+
15
+ Options:
16
+ --public Connect to the public docs/scaffolding endpoint.
17
+ -h, --help Print this help text.
18
+
19
+ Environment:
20
+ SPEKOAI_MCP_AUTH_URL Override the authenticated endpoint.
21
+ SPEKOAI_MCP_URL Override the public endpoint.
22
+ SPEKO_API_KEY Forward as Authorization bearer token.
23
+
24
+ Examples:
25
+ spekoai-mcp
26
+ spekoai-mcp --public
27
+ SPEKO_API_KEY=sk_live_xxx spekoai-mcp
28
+ SPEKOAI_MCP_AUTH_URL=https://mcp-staging.speko.dev/mcp-auth spekoai-mcp
29
+ spekoai-mcp https://mcp-staging.speko.dev/mcp-auth --debug
30
+
31
+ All remaining arguments are passed through to mcp-remote.
32
+ `;
33
+ export function resolveCliConfig(argv, env = process.env) {
34
+ const help = argv.includes('--help') || argv.includes('-h');
35
+ const withoutPublicFlag = argv.filter((arg) => arg !== '--public');
36
+ const publicOnly = withoutPublicFlag.length !== argv.length;
37
+ const first = withoutPublicFlag[0];
38
+ const hasExplicitUrl = isHttpUrl(first);
39
+ if (hasExplicitUrl) {
40
+ return {
41
+ serverUrl: first,
42
+ passthroughArgs: withoutPublicFlag.slice(1),
43
+ publicOnly,
44
+ help,
45
+ };
46
+ }
47
+ return {
48
+ serverUrl: publicOnly
49
+ ? envUrl(env.SPEKOAI_MCP_URL, DEFAULT_PUBLIC_MCP_URL)
50
+ : envUrl(env.SPEKOAI_MCP_AUTH_URL, DEFAULT_AUTH_MCP_URL),
51
+ passthroughArgs: withoutPublicFlag,
52
+ publicOnly,
53
+ help,
54
+ };
55
+ }
56
+ export function buildAuthHeaderArgs(env = process.env) {
57
+ const apiKey = env.SPEKO_API_KEY?.trim();
58
+ if (!apiKey) {
59
+ return { args: [] };
60
+ }
61
+ return {
62
+ args: ['--header', `Authorization:\${${AUTH_HEADER_ENV}}`],
63
+ envValue: `Bearer ${apiKey}`,
64
+ };
65
+ }
66
+ export function buildProxyArgv(options) {
67
+ return [
68
+ options.nodePath,
69
+ options.proxyPath,
70
+ options.serverUrl,
71
+ ...options.authArgs,
72
+ ...options.passthroughArgs,
73
+ ];
74
+ }
75
+ export function resolveProxyPath() {
76
+ return createRequire(import.meta.url).resolve('mcp-remote/dist/proxy.js');
77
+ }
78
+ export async function run(argv = process.argv.slice(2), env = process.env) {
79
+ const config = resolveCliConfig(argv, env);
80
+ if (config.help) {
81
+ process.stdout.write(HELP_TEXT);
82
+ return;
83
+ }
84
+ const auth = buildAuthHeaderArgs(env);
85
+ if (auth.envValue) {
86
+ env[AUTH_HEADER_ENV] = auth.envValue;
87
+ }
88
+ else {
89
+ delete env[AUTH_HEADER_ENV];
90
+ }
91
+ const proxyPath = resolveProxyPath();
92
+ process.argv = buildProxyArgv({
93
+ nodePath: process.execPath,
94
+ proxyPath,
95
+ serverUrl: config.serverUrl,
96
+ authArgs: auth.args,
97
+ passthroughArgs: config.passthroughArgs,
98
+ });
99
+ await import(pathToFileURL(proxyPath).href);
100
+ }
101
+ function envUrl(value, fallback) {
102
+ const trimmed = value?.trim();
103
+ return trimmed || fallback;
104
+ }
105
+ function isHttpUrl(value) {
106
+ return value?.startsWith('https://') === true || value?.startsWith('http://') === true;
107
+ }
108
+ if (pathToFileURL(process.argv[1] ?? '').href === import.meta.url) {
109
+ run().catch((error) => {
110
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
111
+ process.exit(1);
112
+ });
113
+ }
package/package.json CHANGED
@@ -1,54 +1,58 @@
1
1
  {
2
2
  "name": "@spekoai/mcp",
3
- "version": "1.0.0",
4
- "description": "MCP server for voice AI development \u2014 recommend, benchmark, and scaffold STT+LLM+TTS stacks with Speko",
5
- "author": "Beknazar Abdikamalov <bek@speko.ai>",
3
+ "version": "1.0.4",
4
+ "description": "Local stdio bridge for the hosted SpekoAI MCP server",
6
5
  "license": "MIT",
7
- "type": "module",
8
- "bin": {
9
- "speko-mcp": "./dist/index.js"
6
+ "author": "Speko",
7
+ "homepage": "https://github.com/SpekoAI/mcp-bridge#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/SpekoAI/mcp-bridge.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/SpekoAI/mcp-bridge/issues"
10
14
  },
15
+ "keywords": [
16
+ "speko",
17
+ "spekoai",
18
+ "mcp",
19
+ "stdio",
20
+ "voice-ai"
21
+ ],
22
+ "type": "module",
11
23
  "main": "./dist/index.js",
24
+ "module": "./dist/index.js",
12
25
  "types": "./dist/index.d.ts",
26
+ "bin": {
27
+ "spekoai-mcp": "dist/index.js"
28
+ },
29
+ "sideEffects": false,
13
30
  "files": [
14
- "dist"
31
+ "dist",
32
+ "README.md",
33
+ "LICENSE"
15
34
  ],
16
- "scripts": {
17
- "build": "tsc",
18
- "dev": "tsc --watch",
19
- "start": "node dist/index.js",
20
- "prepare": "npm run build",
21
- "prepublishOnly": "npm run build",
22
- "lint": "echo 'No lint configured for @speko/mcp'",
23
- "test": "bun run build && bun run vitest run",
24
- "test:unit": "vitest run tests/*.test.ts",
25
- "test:e2e": "bun run build && bun run vitest run tests/mcp-e2e.test.ts"
35
+ "exports": {
36
+ "./package.json": "./package.json",
37
+ ".": {
38
+ "@spekoai/source": "./src/index.ts",
39
+ "types": "./dist/index.d.ts",
40
+ "import": "./dist/index.js",
41
+ "default": "./dist/index.js"
42
+ }
43
+ },
44
+ "publishConfig": {
45
+ "access": "public",
46
+ "registry": "https://registry.npmjs.org/",
47
+ "provenance": true
26
48
  },
27
49
  "dependencies": {
28
- "@modelcontextprotocol/sdk": "^1.12.1",
29
- "zod": "^3.24.1"
50
+ "mcp-remote": "^0.1.38",
51
+ "tslib": "^2.3.0"
30
52
  },
31
53
  "devDependencies": {
32
- "@types/node": "^22.15.21",
33
- "typescript": "^5.8.3",
34
- "vitest": "^4.0.18"
35
- },
36
- "keywords": [
37
- "mcp",
38
- "voice-ai",
39
- "stt",
40
- "tts",
41
- "llm",
42
- "elevenlabs",
43
- "deepgram",
44
- "cartesia",
45
- "livekit",
46
- "speko",
47
- "claude-code",
48
- "voice-agents"
49
- ],
50
- "repository": {
51
- "type": "git",
52
- "url": "https://github.com/spekoAI/speko-mcp"
54
+ "@types/node": "^25",
55
+ "typescript": "~6.0.3",
56
+ "vitest": "~4.1.6"
53
57
  }
54
58
  }
@@ -1,124 +0,0 @@
1
- /**
2
- * Benchmark data from production voice AI deployments.
3
- * Covers 8+ languages across enterprise use cases.
4
- *
5
- * Each row is a tested STT+LLM+TTS combination with real latency,
6
- * quality (UTMOS), and cost measurements.
7
- */
8
- export interface BenchmarkEntry {
9
- stt: string;
10
- sttModel: string;
11
- llm: string;
12
- llmModel: string;
13
- tts: string;
14
- ttsModel: string;
15
- latencyMs: number;
16
- quality: number;
17
- costPerMin: number;
18
- mos?: number;
19
- languages: string[];
20
- notes?: string;
21
- }
22
- export interface UseCasePriorities {
23
- latency: number;
24
- quality: number;
25
- cost: number;
26
- }
27
- export interface ProviderCatalogEntry {
28
- url: string;
29
- models: string[];
30
- strengths: string;
31
- }
32
- export interface S2SOption {
33
- provider: "openai-realtime" | "gemini-live";
34
- model: string;
35
- latencyMs: number;
36
- quality: number;
37
- costPerHour: number;
38
- languages: string[];
39
- notes: string;
40
- }
41
- export declare const BENCHMARK_DATA: BenchmarkEntry[];
42
- export declare const USE_CASE_PRIORITIES: Record<string, UseCasePriorities>;
43
- export declare const SUPPORTED_LANGUAGES: string[];
44
- export declare const PROVIDER_INFO: {
45
- stt: {
46
- Deepgram: {
47
- url: string;
48
- models: string[];
49
- strengths: string;
50
- };
51
- AssemblyAI: {
52
- url: string;
53
- models: string[];
54
- strengths: string;
55
- };
56
- OpenAI: {
57
- url: string;
58
- models: string[];
59
- strengths: string;
60
- };
61
- Speechmatics: {
62
- url: string;
63
- models: string[];
64
- strengths: string;
65
- };
66
- Google: {
67
- url: string;
68
- models: string[];
69
- strengths: string;
70
- };
71
- };
72
- llm: {
73
- OpenAI: {
74
- url: string;
75
- models: string[];
76
- strengths: string;
77
- };
78
- Anthropic: {
79
- url: string;
80
- models: string[];
81
- strengths: string;
82
- };
83
- Google: {
84
- url: string;
85
- models: string[];
86
- strengths: string;
87
- };
88
- Groq: {
89
- url: string;
90
- models: string[];
91
- strengths: string;
92
- };
93
- ElevenLabs: {
94
- url: string;
95
- models: string[];
96
- strengths: string;
97
- };
98
- };
99
- tts: {
100
- Cartesia: {
101
- url: string;
102
- models: string[];
103
- strengths: string;
104
- };
105
- ElevenLabs: {
106
- url: string;
107
- models: string[];
108
- strengths: string;
109
- };
110
- PlayHT: {
111
- url: string;
112
- models: string[];
113
- strengths: string;
114
- };
115
- Rime: {
116
- url: string;
117
- models: string[];
118
- strengths: string;
119
- };
120
- };
121
- };
122
- export declare const S2S_PROVIDER_INFO: Record<string, ProviderCatalogEntry>;
123
- export declare const S2S_OPTIONS: S2SOption[];
124
- //# sourceMappingURL=benchmarks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmarks.d.ts","sourceRoot":"","sources":["../../src/data/benchmarks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,iBAAiB,GAAG,aAAa,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,cAAc,EAAE,cAAc,EAiG1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAWjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAG/B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAWlE,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,EAmBlC,CAAC"}