@originalvoices/mcp-server 1.0.0
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/README.md +99 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +34 -0
- package/package.json +45 -0
package/README.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# OriginalVoices MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP (Model Context Protocol) server that provides access to [OriginalVoices](https://originalvoices.ai) AI twins for audience research.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @originalvoices/mcp-server
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Configuration
|
|
12
|
+
|
|
13
|
+
### Environment Variables
|
|
14
|
+
|
|
15
|
+
| Variable | Description | Required |
|
|
16
|
+
|----------|-------------|----------|
|
|
17
|
+
| `ORIGINALVOICES_API_KEY` | Your OriginalVoices API key | Yes |
|
|
18
|
+
|
|
19
|
+
### Claude Desktop
|
|
20
|
+
|
|
21
|
+
Add to your `claude_desktop_config.json`:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"mcpServers": {
|
|
26
|
+
"originalvoices": {
|
|
27
|
+
"command": "npx",
|
|
28
|
+
"args": ["@originalvoices/mcp-server"],
|
|
29
|
+
"env": {
|
|
30
|
+
"ORIGINALVOICES_API_KEY": "your-api-key"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### From Source
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"mcpServers": {
|
|
42
|
+
"originalvoices": {
|
|
43
|
+
"command": "node",
|
|
44
|
+
"args": ["/path/to/ov-mcp-server/dist/index.js"],
|
|
45
|
+
"env": {
|
|
46
|
+
"ORIGINALVOICES_API_KEY": "your-api-key"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Tools
|
|
54
|
+
|
|
55
|
+
### ask_twins
|
|
56
|
+
|
|
57
|
+
Ask questions to a specific audience using OriginalVoices AI twins.
|
|
58
|
+
|
|
59
|
+
**Parameters:**
|
|
60
|
+
|
|
61
|
+
| Name | Type | Description |
|
|
62
|
+
|------|------|-------------|
|
|
63
|
+
| `audience` | string | Description of the audience |
|
|
64
|
+
| `questions` | string[] | Array of questions to ask the audience |
|
|
65
|
+
|
|
66
|
+
**Example:**
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"audience": "Software developers aged 25-40 in the US",
|
|
71
|
+
"questions": [
|
|
72
|
+
"What is your biggest frustration with current dev tools?",
|
|
73
|
+
"How do you discover new tools and frameworks?"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Development
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Install dependencies
|
|
82
|
+
npm install
|
|
83
|
+
|
|
84
|
+
# Build
|
|
85
|
+
npm run build
|
|
86
|
+
|
|
87
|
+
# Watch mode
|
|
88
|
+
npm run dev
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## FAQ
|
|
92
|
+
|
|
93
|
+
### How do I get an API key?
|
|
94
|
+
|
|
95
|
+
You can create an API key on the [OriginalVoices Platform](https://platform.originalvoices.ai).
|
|
96
|
+
|
|
97
|
+
## License
|
|
98
|
+
|
|
99
|
+
MIT
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
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 { z } from "zod";
|
|
5
|
+
import OriginalVoices from "originalvoices";
|
|
6
|
+
const server = new McpServer({
|
|
7
|
+
name: "originalvoices",
|
|
8
|
+
version: "1.0.0",
|
|
9
|
+
});
|
|
10
|
+
const client = new OriginalVoices({
|
|
11
|
+
apiKey: process.env.ORIGINALVOICES_API_KEY,
|
|
12
|
+
});
|
|
13
|
+
server.tool("ask_twins", "Ask questions to a specific audience using Original Voices AI twins", {
|
|
14
|
+
audience: z.string().describe("Description of the audience"),
|
|
15
|
+
questions: z.array(z.string()).describe("Array of questions to ask the audience"),
|
|
16
|
+
}, async ({ audience, questions }) => {
|
|
17
|
+
const response = await client.ask.open({
|
|
18
|
+
questions,
|
|
19
|
+
audiencePrompt: audience,
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
content: [
|
|
23
|
+
{
|
|
24
|
+
type: "text",
|
|
25
|
+
text: JSON.stringify(response.data, null, 2),
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
async function main() {
|
|
31
|
+
const transport = new StdioServerTransport();
|
|
32
|
+
await server.connect(transport);
|
|
33
|
+
}
|
|
34
|
+
main().catch(console.error);
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@originalvoices/mcp-server",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for Original Voices - Ask AI twins questions about any audience",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"originalvoices-mcp": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"start": "node dist/index.js",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"prepublishOnly": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"model-context-protocol",
|
|
19
|
+
"originalvoices",
|
|
20
|
+
"ai",
|
|
21
|
+
"twins",
|
|
22
|
+
"audience-research"
|
|
23
|
+
],
|
|
24
|
+
"author": "Original Voices",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/originalvoices/mcp-server.git"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=20"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
38
|
+
"originalvoices": "^0.11.0",
|
|
39
|
+
"zod": "^4.3.5"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^25.0.8",
|
|
43
|
+
"typescript": "^5.9.3"
|
|
44
|
+
}
|
|
45
|
+
}
|