@reaatech/prompt-version-control-mcp 0.1.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/CHANGELOG.md +9 -0
- package/LICENSE +21 -0
- package/README.md +194 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/package.json +63 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# @reaatech/prompt-version-control-mcp
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Initial release
|
|
6
|
+
|
|
7
|
+
- `pvc-mcp` binary implementing a Model Context Protocol server backed by Prompt Version Control
|
|
8
|
+
- Exposes prompt retrieval as MCP tools so AI agents can pull managed prompts at runtime
|
|
9
|
+
- Reads `PVC_API_URL` and `PVC_API_KEY` from the environment (matches Claude Desktop config)
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 prompt-version-control contributors
|
|
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,194 @@
|
|
|
1
|
+
# @reaatech/prompt-version-control-mcp
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@reaatech/prompt-version-control-mcp)
|
|
4
|
+
[](https://github.com/reaatech/prompt-version-control/blob/main/LICENSE)
|
|
5
|
+
[](https://github.com/reaatech/prompt-version-control/actions/workflows/ci.yml)
|
|
6
|
+
|
|
7
|
+
> **Status:** Pre-1.0 — APIs may change in minor versions. Pin to a specific version in production.
|
|
8
|
+
|
|
9
|
+
A [Model Context Protocol](https://modelcontextprotocol.io) server that exposes managed prompts to AI agents at runtime. Connects to a Prompt Version Control API server, fetches the production version of any prompt, and renders it with Handlebars template interpolation — all via a single MCP tool.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g @reaatech/prompt-version-control-mcp
|
|
15
|
+
# or
|
|
16
|
+
pnpm add -g @reaatech/prompt-version-control-mcp
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The package ships the `pvc-mcp` binary. Run it as an MCP server via stdio transport.
|
|
20
|
+
|
|
21
|
+
## Feature Overview
|
|
22
|
+
|
|
23
|
+
- **Single MCP tool** — `prompt.get` fetches and renders the production version of any prompt
|
|
24
|
+
- **Handlebars rendering** — template variables injected with `noEscape` for safe interpolation
|
|
25
|
+
- **Variable metadata** — returns which variables were used and which are missing, enabling agents to self-correct
|
|
26
|
+
- **Stdio transport** — standard MCP communication over stdin/stdout
|
|
27
|
+
- **Zero-config runtime** — configure with two environment variables (`PVC_API_URL`, `PVC_API_KEY`)
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
### Claude Desktop
|
|
32
|
+
|
|
33
|
+
Add to your Claude Desktop configuration (`claude_desktop_config.json`):
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"mcpServers": {
|
|
38
|
+
"prompt-version-control": {
|
|
39
|
+
"command": "pvc-mcp",
|
|
40
|
+
"env": {
|
|
41
|
+
"PVC_API_URL": "http://localhost:3000",
|
|
42
|
+
"PVC_API_KEY": "pvc_your-api-key"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Cursor / Other MCP Clients
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"mcpServers": {
|
|
54
|
+
"pvc": {
|
|
55
|
+
"command": "npx",
|
|
56
|
+
"args": ["@reaatech/prompt-version-control-mcp"],
|
|
57
|
+
"env": {
|
|
58
|
+
"PVC_API_URL": "http://localhost:3000",
|
|
59
|
+
"PVC_API_KEY": "pvc_your-api-key"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Once configured, restart your client. The `prompt.get` tool will be available to AI agents.
|
|
67
|
+
|
|
68
|
+
## API Reference
|
|
69
|
+
|
|
70
|
+
### Environment Variables
|
|
71
|
+
|
|
72
|
+
| Variable | Required | Default | Description |
|
|
73
|
+
|----------|----------|---------|-------------|
|
|
74
|
+
| `PVC_API_URL` | No | `http://localhost:3000` | URL of the Prompt Version Control API server |
|
|
75
|
+
| `PVC_API_KEY` | Yes | — | API key for authentication |
|
|
76
|
+
|
|
77
|
+
### Tools
|
|
78
|
+
|
|
79
|
+
#### `prompt.get`
|
|
80
|
+
|
|
81
|
+
Fetches the production-tagged version of a prompt from the API server and renders it with Handlebars template interpolation using the provided variables.
|
|
82
|
+
|
|
83
|
+
**Arguments:**
|
|
84
|
+
|
|
85
|
+
| Name | Type | Required | Description |
|
|
86
|
+
|------|------|----------|-------------|
|
|
87
|
+
| `promptId` | `string` | Yes | Prompt ID or name |
|
|
88
|
+
| `variables` | `Record<string, string>` | No | Template variables to substitute |
|
|
89
|
+
|
|
90
|
+
**Returns:**
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"version": 3,
|
|
95
|
+
"content": "You are a {{role}}. Respond to: {{query}}",
|
|
96
|
+
"rendered": "You are a support agent. Respond to: I can't log in",
|
|
97
|
+
"variablesUsed": ["role", "query"],
|
|
98
|
+
"missingVariables": [],
|
|
99
|
+
"metadata": { "author": "ops-team" }
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Return Fields:**
|
|
104
|
+
|
|
105
|
+
| Field | Type | Description |
|
|
106
|
+
|-------|------|-------------|
|
|
107
|
+
| `version` | `number` | The production version number |
|
|
108
|
+
| `content` | `string` | The raw template with `{{handlebars}}` placeholders |
|
|
109
|
+
| `rendered` | `string` | The template with all provided variables substituted |
|
|
110
|
+
| `variablesUsed` | `string[]` | All variables referenced in the template |
|
|
111
|
+
| `missingVariables` | `string[]` | Variables referenced but not provided — agents can re-invoke with these |
|
|
112
|
+
| `metadata` | `Record<string, unknown> \| null` | User-defined metadata from the prompt |
|
|
113
|
+
|
|
114
|
+
### MCP Server Capabilities
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"name": "prompt-version-control",
|
|
119
|
+
"version": "0.1.0",
|
|
120
|
+
"capabilities": {
|
|
121
|
+
"tools": {}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The server exposes only the `tools` capability with a single tool. Resources, prompts, and logging capabilities are not currently exposed.
|
|
127
|
+
|
|
128
|
+
## Usage Patterns
|
|
129
|
+
|
|
130
|
+
### Variable-Aware Agent Loop
|
|
131
|
+
|
|
132
|
+
The `missingVariables` field enables agents to detect incomplete invocations and retry:
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Agent calls prompt.get with partial variables
|
|
136
|
+
const result1 = await mcp.callTool("prompt.get", {
|
|
137
|
+
promptId: "customer-support",
|
|
138
|
+
variables: { role: "support agent" }
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// result1.missingVariables === ["query"]
|
|
142
|
+
// Agent asks the user for the missing value, then retries:
|
|
143
|
+
|
|
144
|
+
const result2 = await mcp.callTool("prompt.get", {
|
|
145
|
+
promptId: "customer-support",
|
|
146
|
+
variables: { role: "support agent", query: "I can't log in" }
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// result2.missingVariables === []
|
|
150
|
+
// result2.rendered === "You are a support agent. Respond to: I can't log in"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Prompt-Driven Agent Behavior
|
|
154
|
+
|
|
155
|
+
Use `prompt.get` to pull managed system prompts at runtime, centralizing prompt changes without agent redeployment:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
// Instead of hardcoding a system prompt:
|
|
159
|
+
// const systemPrompt = "You are a helpful assistant..."
|
|
160
|
+
|
|
161
|
+
// Pull the managed production prompt:
|
|
162
|
+
const { rendered } = await mcp.callTool("prompt.get", {
|
|
163
|
+
promptId: "my-assistant-system-prompt",
|
|
164
|
+
variables: { user_name: "Alice" }
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// Use `rendered` as the system prompt for the LLM call
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Configuration Reference
|
|
171
|
+
|
|
172
|
+
### Direct Execution
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
PVC_API_URL=http://localhost:3000 PVC_API_KEY=pvc_your-api-key pvc-mcp
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### With npx
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
PVC_API_URL=http://localhost:3000 PVC_API_KEY=pvc_your-api-key \
|
|
182
|
+
npx @reaatech/prompt-version-control-mcp
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Related Packages
|
|
186
|
+
|
|
187
|
+
- [`@reaatech/prompt-version-control-server`](https://www.npmjs.com/package/@reaatech/prompt-version-control-server) — API server this MCP server calls
|
|
188
|
+
- [`@reaatech/prompt-version-control`](https://www.npmjs.com/package/@reaatech/prompt-version-control) — TypeScript SDK (used internally by the MCP server)
|
|
189
|
+
- [`@reaatech/prompt-version-control-shared`](https://www.npmjs.com/package/@reaatech/prompt-version-control-shared) — Template rendering and shared types
|
|
190
|
+
- [`@reaatech/prompt-version-control-cli`](https://www.npmjs.com/package/@reaatech/prompt-version-control-cli) — CLI tool
|
|
191
|
+
|
|
192
|
+
## License
|
|
193
|
+
|
|
194
|
+
[MIT](https://github.com/reaatech/prompt-version-control/blob/main/LICENSE)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { PVCClient } from '@reaatech/prompt-version-control';
|
|
6
|
+
import { renderTemplate } from '@reaatech/prompt-version-control-shared';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
const PromptGetArgsSchema = z.object({
|
|
9
|
+
promptId: z.string().min(1),
|
|
10
|
+
variables: z.record(z.string()).optional(),
|
|
11
|
+
});
|
|
12
|
+
const API_URL = process.env.PVC_API_URL || 'http://localhost:3000';
|
|
13
|
+
const API_KEY = process.env.PVC_API_KEY || '';
|
|
14
|
+
const client = new PVCClient({ apiKey: API_KEY, baseUrl: API_URL });
|
|
15
|
+
const server = new Server({
|
|
16
|
+
name: 'prompt-version-control',
|
|
17
|
+
version: '0.1.0',
|
|
18
|
+
}, {
|
|
19
|
+
capabilities: {
|
|
20
|
+
tools: {},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
24
|
+
return {
|
|
25
|
+
tools: [
|
|
26
|
+
{
|
|
27
|
+
name: 'prompt.get',
|
|
28
|
+
description: 'Retrieve the production version of a prompt with optional variable substitution',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
promptId: { type: 'string', description: 'Prompt ID or name' },
|
|
33
|
+
variables: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
additionalProperties: { type: 'string' },
|
|
36
|
+
description: 'Variables to interpolate into the template',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
required: ['promptId'],
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
46
|
+
if (request.params.name === 'prompt.get') {
|
|
47
|
+
const args = PromptGetArgsSchema.parse(request.params.arguments);
|
|
48
|
+
const version = await client.getProduction(args.promptId);
|
|
49
|
+
const { rendered, variablesUsed, missingVariables } = renderTemplate(version.template, args.variables ?? {});
|
|
50
|
+
return {
|
|
51
|
+
content: [
|
|
52
|
+
{
|
|
53
|
+
type: 'text',
|
|
54
|
+
text: JSON.stringify({
|
|
55
|
+
version: version.number,
|
|
56
|
+
content: version.content,
|
|
57
|
+
rendered,
|
|
58
|
+
variablesUsed,
|
|
59
|
+
missingVariables,
|
|
60
|
+
metadata: version.metadata,
|
|
61
|
+
}, null, 2),
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Unknown tool: ${request.params.name}`);
|
|
67
|
+
});
|
|
68
|
+
async function main() {
|
|
69
|
+
const transport = new StdioServerTransport();
|
|
70
|
+
await server.connect(transport);
|
|
71
|
+
}
|
|
72
|
+
main().catch(console.error);
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reaatech/prompt-version-control-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Prompt Version Control MCP server",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Rick Somers <rick@reaatech.com> (https://reaatech.com)",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/reaatech/prompt-version-control.git",
|
|
10
|
+
"directory": "packages/mcp"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/reaatech/prompt-version-control/issues"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/reaatech/prompt-version-control/tree/main/packages/mcp#readme",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"prompt",
|
|
18
|
+
"version-control",
|
|
19
|
+
"mcp",
|
|
20
|
+
"model-context-protocol"
|
|
21
|
+
],
|
|
22
|
+
"type": "module",
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=22"
|
|
25
|
+
},
|
|
26
|
+
"main": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"bin": {
|
|
29
|
+
"pvc-mcp": "./dist/index.js"
|
|
30
|
+
},
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"import": "./dist/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"CHANGELOG.md"
|
|
40
|
+
],
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
46
|
+
"zod": "^3.22.0",
|
|
47
|
+
"@reaatech/prompt-version-control-shared": "0.1.0",
|
|
48
|
+
"@reaatech/prompt-version-control": "0.1.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^25.8.0",
|
|
52
|
+
"tsx": "^4.22.1",
|
|
53
|
+
"typescript": "^5.8.3",
|
|
54
|
+
"vitest": "^3.1.1"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "tsc",
|
|
58
|
+
"dev": "tsx watch src/index.ts",
|
|
59
|
+
"test": "vitest run",
|
|
60
|
+
"test:coverage": "vitest run --coverage",
|
|
61
|
+
"clean": "rm -rf dist coverage .turbo *.tsbuildinfo"
|
|
62
|
+
}
|
|
63
|
+
}
|