prodius-mcp 0.2.1692__tar.gz
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.
- prodius_mcp-0.2.1692/PKG-INFO +143 -0
- prodius_mcp-0.2.1692/README.md +122 -0
- prodius_mcp-0.2.1692/pyproject.toml +37 -0
- prodius_mcp-0.2.1692/setup.cfg +4 -0
- prodius_mcp-0.2.1692/src/prodius_mcp/__init__.py +1178 -0
- prodius_mcp-0.2.1692/src/prodius_mcp/__main__.py +5 -0
- prodius_mcp-0.2.1692/src/prodius_mcp/_config.py +129 -0
- prodius_mcp-0.2.1692/src/prodius_mcp/permission_hook.py +568 -0
- prodius_mcp-0.2.1692/src/prodius_mcp/reset.py +142 -0
- prodius_mcp-0.2.1692/src/prodius_mcp.egg-info/PKG-INFO +143 -0
- prodius_mcp-0.2.1692/src/prodius_mcp.egg-info/SOURCES.txt +19 -0
- prodius_mcp-0.2.1692/src/prodius_mcp.egg-info/dependency_links.txt +1 -0
- prodius_mcp-0.2.1692/src/prodius_mcp.egg-info/entry_points.txt +4 -0
- prodius_mcp-0.2.1692/src/prodius_mcp.egg-info/top_level.txt +1 -0
- prodius_mcp-0.2.1692/tests/test_channels_detection.py +241 -0
- prodius_mcp-0.2.1692/tests/test_config.py +153 -0
- prodius_mcp-0.2.1692/tests/test_inject_version.py +185 -0
- prodius_mcp-0.2.1692/tests/test_jsonrpc.py +352 -0
- prodius_mcp-0.2.1692/tests/test_reset.py +139 -0
- prodius_mcp-0.2.1692/tests/test_tool_response_builder.py +249 -0
- prodius_mcp-0.2.1692/tests/test_version.py +45 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: prodius-mcp
|
|
3
|
+
Version: 0.2.1692
|
|
4
|
+
Summary: MCP server shim for Prodius — lets AI agents reach you by voice
|
|
5
|
+
Author-email: Prodius <support@prodius.ai>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://prodius.ai
|
|
8
|
+
Project-URL: Connect, https://prodius.ai/connect/
|
|
9
|
+
Keywords: mcp,model-context-protocol,voice,prodius,ai-agents,claude
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
19
|
+
Requires-Python: >=3.10
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# prodius-mcp
|
|
23
|
+
|
|
24
|
+
**Let your AI agents reach you by voice.**
|
|
25
|
+
|
|
26
|
+
`prodius-mcp` is a lightweight [MCP](https://modelcontextprotocol.io) server that bridges any MCP-capable AI tool (Claude Code, Cursor, Windsurf, Codex CLI, and more) to the [Prodius](https://prodius.ai) desktop app. When an agent needs your input, a popup appears on your screen — wherever you are — and you answer by voice. No switching back to the terminal.
|
|
27
|
+
|
|
28
|
+
It's a thin stdio shim: **standard library only, no third-party dependencies**, fast startup, and it talks only to the Prodius desktop app running locally on `127.0.0.1`.
|
|
29
|
+
|
|
30
|
+
## Requirements
|
|
31
|
+
|
|
32
|
+
- Python 3.10+
|
|
33
|
+
- The [Prodius desktop app](https://prodius.ai/download/) installed and running, with **Voice Bridge** enabled in settings.
|
|
34
|
+
|
|
35
|
+
## Install
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install prodius-mcp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If `prodius-mcp` isn't found afterwards, make sure the Python environment you installed into is on your `PATH` — or use `pipx install prodius-mcp`.
|
|
42
|
+
|
|
43
|
+
## Connect your tool
|
|
44
|
+
|
|
45
|
+
### Claude Code
|
|
46
|
+
|
|
47
|
+
The quickest start is one command:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
claude mcp add prodius -- prodius-mcp
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For the full experience (correct agent label in the modal header, automatic conversation reset on `/clear`), add the block below to your `~/.claude/settings.json` instead. The `claude mcp add` shortcut omits both pieces.
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"env": { "PRODIUS_AGENT_NAME": "Claude Code" },
|
|
58
|
+
"mcpServers": {
|
|
59
|
+
"prodius": {
|
|
60
|
+
"command": "prodius-mcp",
|
|
61
|
+
"args": [],
|
|
62
|
+
"env": { "PRODIUS_AGENT_NAME": "Claude Code" }
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"hooks": {
|
|
66
|
+
"SessionStart": [
|
|
67
|
+
{ "matcher": "*", "hooks": [{ "type": "command", "command": "prodius-mcp-reset" }] }
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The `SessionStart` hook calls `prodius-mcp-reset` whenever you run `/clear` or open a new session so Prodius doesn't carry stale context across conversations. The top-level `env` makes the agent name visible to that hook.
|
|
74
|
+
|
|
75
|
+
To enable **voice push** (microphone stays available between questions so you can speak to Claude anytime, not just when it asks), start Claude with the channels flag:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
claude --dangerously-load-development-channels server:prodius
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Cursor / Windsurf / any MCP client
|
|
82
|
+
|
|
83
|
+
Add to your client's MCP config (e.g. `~/.cursor/mcp.json`):
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"mcpServers": {
|
|
88
|
+
"prodius": { "command": "prodius-mcp" }
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Codex CLI
|
|
94
|
+
|
|
95
|
+
```toml
|
|
96
|
+
[mcp_servers.prodius]
|
|
97
|
+
command = "prodius-mcp"
|
|
98
|
+
env = { PRODIUS_AGENT_NAME = "Codex CLI" }
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Full setup instructions for each tool, including session-reset hooks and optional voice push, live at **[prodius.ai/connect](https://prodius.ai/connect/)**.
|
|
102
|
+
|
|
103
|
+
## Tools exposed
|
|
104
|
+
|
|
105
|
+
| Tool | What it does |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| `ask_user` | Pops a question on your screen and captures your spoken (or typed) reply. Supports optional clickable answer buttons. |
|
|
108
|
+
| `notify` | Reports a result to you via a desktop overlay — meant as the agent's final action so its response is never invisible. |
|
|
109
|
+
|
|
110
|
+
## Configuration
|
|
111
|
+
|
|
112
|
+
The shim auto-discovers the running Prodius app. You rarely need to set anything, but these environment variables override the defaults:
|
|
113
|
+
|
|
114
|
+
| Variable | Purpose | Default |
|
|
115
|
+
| --- | --- | --- |
|
|
116
|
+
| `PRODIUS_MCP_TOKEN` | Auth token for the local Prodius server. | Read from the Prodius app's `settings.json`. |
|
|
117
|
+
| `PRODIUS_BASE_URL` | Prodius local server URL. | Discovered from settings (`http://127.0.0.1:5555`). |
|
|
118
|
+
| `PRODIUS_AGENT_NAME` | Label shown so you know which agent is asking. | `Unknown Agent` |
|
|
119
|
+
|
|
120
|
+
## Console scripts
|
|
121
|
+
|
|
122
|
+
- `prodius-mcp` — the MCP server (run by your AI tool, not by hand).
|
|
123
|
+
- `prodius-mcp-reset` — resets the Prodius conversation. Wire it to a Claude Code `SessionStart` hook (see the snippet above) so a new session doesn't inherit stale context.
|
|
124
|
+
- `prodius-permission-hook` — routes Claude Code tool-approval prompts to the Prodius voice overlay so you can speak "allow" / "deny" from anywhere. Add it as a `PreToolUse` hook in `~/.claude/settings.json`:
|
|
125
|
+
|
|
126
|
+
```json
|
|
127
|
+
"hooks": {
|
|
128
|
+
"PreToolUse": [
|
|
129
|
+
{ "matcher": "*", "hooks": [{ "type": "command", "command": "prodius-permission-hook" }] }
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Falls through to the normal terminal prompt if Prodius isn't running — never blocks you. Full instructions at [prodius.ai/connect](https://prodius.ai/connect/).
|
|
135
|
+
|
|
136
|
+
## Troubleshooting
|
|
137
|
+
|
|
138
|
+
- **Popup doesn't appear?** Confirm the Prodius desktop app is running with Voice Bridge enabled, and that `prodius-mcp` is on your `PATH`.
|
|
139
|
+
- **Agent doesn't receive your answer?** Check your microphone works in Prodius (try a normal dictation), then restart your AI tool after editing its config.
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
MIT
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# prodius-mcp
|
|
2
|
+
|
|
3
|
+
**Let your AI agents reach you by voice.**
|
|
4
|
+
|
|
5
|
+
`prodius-mcp` is a lightweight [MCP](https://modelcontextprotocol.io) server that bridges any MCP-capable AI tool (Claude Code, Cursor, Windsurf, Codex CLI, and more) to the [Prodius](https://prodius.ai) desktop app. When an agent needs your input, a popup appears on your screen — wherever you are — and you answer by voice. No switching back to the terminal.
|
|
6
|
+
|
|
7
|
+
It's a thin stdio shim: **standard library only, no third-party dependencies**, fast startup, and it talks only to the Prodius desktop app running locally on `127.0.0.1`.
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
|
|
11
|
+
- Python 3.10+
|
|
12
|
+
- The [Prodius desktop app](https://prodius.ai/download/) installed and running, with **Voice Bridge** enabled in settings.
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pip install prodius-mcp
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If `prodius-mcp` isn't found afterwards, make sure the Python environment you installed into is on your `PATH` — or use `pipx install prodius-mcp`.
|
|
21
|
+
|
|
22
|
+
## Connect your tool
|
|
23
|
+
|
|
24
|
+
### Claude Code
|
|
25
|
+
|
|
26
|
+
The quickest start is one command:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
claude mcp add prodius -- prodius-mcp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For the full experience (correct agent label in the modal header, automatic conversation reset on `/clear`), add the block below to your `~/.claude/settings.json` instead. The `claude mcp add` shortcut omits both pieces.
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"env": { "PRODIUS_AGENT_NAME": "Claude Code" },
|
|
37
|
+
"mcpServers": {
|
|
38
|
+
"prodius": {
|
|
39
|
+
"command": "prodius-mcp",
|
|
40
|
+
"args": [],
|
|
41
|
+
"env": { "PRODIUS_AGENT_NAME": "Claude Code" }
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"hooks": {
|
|
45
|
+
"SessionStart": [
|
|
46
|
+
{ "matcher": "*", "hooks": [{ "type": "command", "command": "prodius-mcp-reset" }] }
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The `SessionStart` hook calls `prodius-mcp-reset` whenever you run `/clear` or open a new session so Prodius doesn't carry stale context across conversations. The top-level `env` makes the agent name visible to that hook.
|
|
53
|
+
|
|
54
|
+
To enable **voice push** (microphone stays available between questions so you can speak to Claude anytime, not just when it asks), start Claude with the channels flag:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
claude --dangerously-load-development-channels server:prodius
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Cursor / Windsurf / any MCP client
|
|
61
|
+
|
|
62
|
+
Add to your client's MCP config (e.g. `~/.cursor/mcp.json`):
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"mcpServers": {
|
|
67
|
+
"prodius": { "command": "prodius-mcp" }
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Codex CLI
|
|
73
|
+
|
|
74
|
+
```toml
|
|
75
|
+
[mcp_servers.prodius]
|
|
76
|
+
command = "prodius-mcp"
|
|
77
|
+
env = { PRODIUS_AGENT_NAME = "Codex CLI" }
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Full setup instructions for each tool, including session-reset hooks and optional voice push, live at **[prodius.ai/connect](https://prodius.ai/connect/)**.
|
|
81
|
+
|
|
82
|
+
## Tools exposed
|
|
83
|
+
|
|
84
|
+
| Tool | What it does |
|
|
85
|
+
| --- | --- |
|
|
86
|
+
| `ask_user` | Pops a question on your screen and captures your spoken (or typed) reply. Supports optional clickable answer buttons. |
|
|
87
|
+
| `notify` | Reports a result to you via a desktop overlay — meant as the agent's final action so its response is never invisible. |
|
|
88
|
+
|
|
89
|
+
## Configuration
|
|
90
|
+
|
|
91
|
+
The shim auto-discovers the running Prodius app. You rarely need to set anything, but these environment variables override the defaults:
|
|
92
|
+
|
|
93
|
+
| Variable | Purpose | Default |
|
|
94
|
+
| --- | --- | --- |
|
|
95
|
+
| `PRODIUS_MCP_TOKEN` | Auth token for the local Prodius server. | Read from the Prodius app's `settings.json`. |
|
|
96
|
+
| `PRODIUS_BASE_URL` | Prodius local server URL. | Discovered from settings (`http://127.0.0.1:5555`). |
|
|
97
|
+
| `PRODIUS_AGENT_NAME` | Label shown so you know which agent is asking. | `Unknown Agent` |
|
|
98
|
+
|
|
99
|
+
## Console scripts
|
|
100
|
+
|
|
101
|
+
- `prodius-mcp` — the MCP server (run by your AI tool, not by hand).
|
|
102
|
+
- `prodius-mcp-reset` — resets the Prodius conversation. Wire it to a Claude Code `SessionStart` hook (see the snippet above) so a new session doesn't inherit stale context.
|
|
103
|
+
- `prodius-permission-hook` — routes Claude Code tool-approval prompts to the Prodius voice overlay so you can speak "allow" / "deny" from anywhere. Add it as a `PreToolUse` hook in `~/.claude/settings.json`:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
"hooks": {
|
|
107
|
+
"PreToolUse": [
|
|
108
|
+
{ "matcher": "*", "hooks": [{ "type": "command", "command": "prodius-permission-hook" }] }
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Falls through to the normal terminal prompt if Prodius isn't running — never blocks you. Full instructions at [prodius.ai/connect](https://prodius.ai/connect/).
|
|
114
|
+
|
|
115
|
+
## Troubleshooting
|
|
116
|
+
|
|
117
|
+
- **Popup doesn't appear?** Confirm the Prodius desktop app is running with Voice Bridge enabled, and that `prodius-mcp` is on your `PATH`.
|
|
118
|
+
- **Agent doesn't receive your answer?** Check your microphone works in Prodius (try a normal dictation), then restart your AI tool after editing its config.
|
|
119
|
+
|
|
120
|
+
## License
|
|
121
|
+
|
|
122
|
+
MIT
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "prodius-mcp"
|
|
7
|
+
version = "0.2.1692"
|
|
8
|
+
description = "MCP server shim for Prodius — lets AI agents reach you by voice"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [{ name = "Prodius", email = "support@prodius.ai" }]
|
|
13
|
+
keywords = ["mcp", "model-context-protocol", "voice", "prodius", "ai-agents", "claude"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 4 - Beta",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3.10",
|
|
19
|
+
"Programming Language :: Python :: 3.11",
|
|
20
|
+
"Programming Language :: Python :: 3.12",
|
|
21
|
+
"Programming Language :: Python :: 3.13",
|
|
22
|
+
"Operating System :: OS Independent",
|
|
23
|
+
"Topic :: Software Development :: Libraries",
|
|
24
|
+
]
|
|
25
|
+
dependencies = []
|
|
26
|
+
|
|
27
|
+
[project.urls]
|
|
28
|
+
Homepage = "https://prodius.ai"
|
|
29
|
+
Connect = "https://prodius.ai/connect/"
|
|
30
|
+
|
|
31
|
+
[project.scripts]
|
|
32
|
+
prodius-mcp = "prodius_mcp:main"
|
|
33
|
+
prodius-mcp-reset = "prodius_mcp.reset:main"
|
|
34
|
+
prodius-permission-hook = "prodius_mcp.permission_hook:main"
|
|
35
|
+
|
|
36
|
+
[tool.setuptools.packages.find]
|
|
37
|
+
where = ["src"]
|