@promptlayer/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.
@@ -0,0 +1,16 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm run build:*)",
5
+ "Bash(npm install:*)",
6
+ "Bash(npm run sync:check:*)",
7
+ "WebSearch",
8
+ "WebFetch(domain:blog.modelcontextprotocol.io)",
9
+ "Bash(npx tsx:*)",
10
+ "WebFetch(domain:docs.promptlayer.com)",
11
+ "Bash(git add:*)",
12
+ "Bash(git commit:*)",
13
+ "Bash(git push:*)"
14
+ ]
15
+ }
16
+ }
package/.env.example ADDED
@@ -0,0 +1,3 @@
1
+ # PromptLayer API Key
2
+ # Get your API key from https://promptlayer.com
3
+ PROMPTLAYER_API_KEY=pl_your_api_key_here
package/CLAUDE.md ADDED
@@ -0,0 +1,39 @@
1
+ # CLAUDE.md
2
+
3
+ Project conventions and decisions for the PromptLayer MCP server.
4
+
5
+ ## Architecture
6
+
7
+ - `src/types.ts` -- Zod input schemas + TOOL_DEFINITIONS for all tools
8
+ - `src/handlers.ts` -- Registers all tools with the MCP server (single file, data-driven)
9
+ - `src/client.ts` -- HTTP client with `get`/`post`/`patch`/`del` helpers
10
+ - `src/utils.ts` -- Query params, error handling, shared `createToolHandler` factory
11
+ - `src/index.ts` -- Entry point
12
+
13
+ ## Response types: don't add them
14
+
15
+ Client methods return `Promise<unknown>`. Do not add typed response interfaces.
16
+
17
+ The handler `JSON.stringify`s whatever the API returns and passes it to the LLM as text. Nothing inspects the response shape. Typed responses would be unvalidated guesses that drift silently when the API changes -- TypeScript can't catch runtime shape mismatches.
18
+
19
+ This matches every major MCP server (GitHub, Stripe, official reference servers). The pattern is: type the inputs (Zod schemas sent to the LLM as tool definitions), stringify the outputs.
20
+
21
+ ## Input schemas are the source of truth
22
+
23
+ Every tool's input schema is a Zod object in `src/types.ts`, verified against the PromptLayer OpenAPI spec. Run `npm run sync:check` to detect drift. The check must exit 0.
24
+
25
+ Known exceptions to the OpenAPI diff are declared in `scripts/diff-endpoints.ts` with inline comments explaining each one. If you add a new exception, also add a `// NOTE:` comment on the affected schema in `src/types.ts`.
26
+
27
+ ## Adding a new endpoint
28
+
29
+ 1. Add Zod schema + entry in `TOOL_DEFINITIONS` in `src/types.ts`
30
+ 2. Add client method in `src/client.ts`
31
+ 3. Register the tool in `src/handlers.ts`
32
+ 4. Add mapping in `scripts/extract-mcp-tools.ts` (`TOOL_TO_ENDPOINT`)
33
+ 5. Run `npm run sync:check` -- must exit 0
34
+
35
+ ## Commands
36
+
37
+ - `npm run build` -- Compile TypeScript
38
+ - `npm run dev` -- Run with tsx
39
+ - `npm run sync:check` -- Verify schemas match OpenAPI spec (exit 0 = pass)
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # PromptLayer MCP Server
2
+
3
+ MCP server that wraps the [PromptLayer REST API](https://docs.promptlayer.com/reference/rest-api-reference), giving any MCP-compatible client access to all 33 PromptLayer tools.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ npm install
9
+ ```
10
+
11
+ Set your API key:
12
+
13
+ ```bash
14
+ export PROMPTLAYER_API_KEY=pl_your_key_here
15
+ ```
16
+
17
+ Or create a `.env` file (see `.env.example`).
18
+
19
+ ## Usage
20
+
21
+ ### With Claude Desktop
22
+
23
+ Add to your Claude Desktop config (`claude_desktop_config.json`):
24
+
25
+ ```json
26
+ {
27
+ "mcpServers": {
28
+ "promptlayer": {
29
+ "command": "npx",
30
+ "args": ["-y", "@promptlayer/mcp-server"],
31
+ "env": {
32
+ "PROMPTLAYER_API_KEY": "pl_your_key_here"
33
+ }
34
+ }
35
+ }
36
+ }
37
+ ```
38
+
39
+ ### With Cursor
40
+
41
+ Add to `.cursor/mcp.json`:
42
+
43
+ ```json
44
+ {
45
+ "mcpServers": {
46
+ "promptlayer": {
47
+ "command": "npx",
48
+ "args": ["-y", "@promptlayer/mcp-server"],
49
+ "env": {
50
+ "PROMPTLAYER_API_KEY": "pl_your_key_here"
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ```
56
+
57
+ ### From source
58
+
59
+ ```bash
60
+ npm run build
61
+ node build/index.js
62
+ ```
63
+
64
+ ## Tools
65
+
66
+ ### Prompt Templates
67
+
68
+ | Tool | Description |
69
+ |---|---|
70
+ | `get-prompt-template` | Get a template by name/ID with optional version or release label. Returns provider-formatted `llm_kwargs`. |
71
+ | `get-prompt-template-raw` | Get raw template data without filling variables. For sync, caching, inspection. |
72
+ | `list-prompt-templates` | List templates with pagination. Filter by name, label, status. |
73
+ | `publish-prompt-template` | Create a new version of a template with content, metadata, and release labels. |
74
+ | `list-prompt-template-labels` | List release labels on a template. |
75
+ | `create-prompt-label` | Attach a release label to a template version. |
76
+ | `move-prompt-label` | Move a label to a different version. |
77
+ | `delete-prompt-label` | Delete a label. |
78
+ | `get-snippet-usage` | Find all templates referencing a snippet. |
79
+
80
+ ### Tracking
81
+
82
+ | Tool | Description |
83
+ |---|---|
84
+ | `log-request` | Log an LLM request/response pair. Input/output in Prompt Blueprint format. |
85
+ | `track-prompt` | Link a logged request to a prompt template. |
86
+ | `track-score` | Score a logged request (0-100). Supports named scores. |
87
+ | `track-metadata` | Attach metadata to a logged request. |
88
+ | `track-group` | Associate a request with a group. |
89
+ | `create-spans-bulk` | Create OpenTelemetry spans in bulk for tracing. |
90
+
91
+ ### Datasets
92
+
93
+ | Tool | Description |
94
+ |---|---|
95
+ | `list-datasets` | List datasets with filtering. |
96
+ | `create-dataset-group` | Create a dataset group (container for versions). |
97
+ | `create-dataset-version-from-file` | Create a version from base64 CSV/JSON. |
98
+ | `create-dataset-version-from-filter-params` | Create a version from request log history. |
99
+
100
+ ### Evaluations
101
+
102
+ | Tool | Description |
103
+ |---|---|
104
+ | `list-evaluations` | List evaluation pipelines. |
105
+ | `create-report` | Create an evaluation pipeline on a dataset. |
106
+ | `run-report` | Execute a pipeline. |
107
+ | `get-report` | Get pipeline details. |
108
+ | `get-report-score` | Get the computed score. |
109
+ | `add-report-column` | Add an evaluation step (one per request). |
110
+ | `update-report-score-card` | Configure custom scoring logic. |
111
+ | `delete-reports-by-name` | Archive pipelines by name. |
112
+
113
+ ### Agents
114
+
115
+ | Tool | Description |
116
+ |---|---|
117
+ | `list-workflows` | List all agents. |
118
+ | `create-workflow` | Create an agent or new version. |
119
+ | `patch-workflow` | Partially update an agent. |
120
+ | `run-workflow` | Execute an agent by name. |
121
+ | `get-workflow-version-execution-results` | Poll for execution results. |
122
+
123
+ ### Other
124
+
125
+ | Tool | Description |
126
+ |---|---|
127
+ | `create-folder` | Create a folder for organizing resources. |
128
+
129
+ ## Keeping in Sync
130
+
131
+ Schemas are verified against the [PromptLayer OpenAPI spec](https://github.com/magnivorg/prompt-layer-docs/blob/master/openapi.json). Run:
132
+
133
+ ```bash
134
+ npm run sync:check
135
+ ```
136
+
137
+ This fetches the spec, extracts our tool schemas, and diffs them structurally. Exit 0 = in sync. See [TESTING.md](TESTING.md) for details.
138
+
139
+ ## Development
140
+
141
+ ```bash
142
+ npm run dev # Run with tsx (hot reload)
143
+ npm run build # Compile TypeScript
144
+ npm run watch # Watch mode
145
+ ```
146
+
147
+ ### Project Structure
148
+
149
+ ```
150
+ src/
151
+ index.ts # Entry point, starts MCP server
152
+ types.ts # Zod schemas + TOOL_DEFINITIONS for all 33 tools
153
+ client.ts # HTTP client for PromptLayer API
154
+ handlers.ts # Registers all tools with the MCP server
155
+ utils.ts # Shared utilities (query params, error handling, handler factory)
156
+ scripts/
157
+ fetch-openapi-endpoints.ts # Downloads + extracts OpenAPI spec
158
+ extract-mcp-tools.ts # Extracts MCP tool schemas for comparison
159
+ diff-endpoints.ts # Structural diff with known exceptions
160
+ ```
package/TESTING.md ADDED
@@ -0,0 +1,78 @@
1
+ # Keeping the MCP in Sync with PromptLayer REST API
2
+
3
+ ## Quick Start
4
+
5
+ ```bash
6
+ npm run sync:check
7
+ ```
8
+
9
+ Exit code 0 = in sync (pass). Exit code 1 = new issues found (fail).
10
+
11
+ Known exceptions are declared in `scripts/diff-endpoints.ts` and don't cause failures.
12
+
13
+ ## How It Works
14
+
15
+ Three scripts, no LLM needed. The source of truth is the [OpenAPI spec](https://github.com/magnivorg/prompt-layer-docs/blob/master/openapi.json).
16
+
17
+ ### Step 1: Fetch OpenAPI endpoints
18
+
19
+ ```bash
20
+ npm run sync:fetch
21
+ ```
22
+
23
+ Downloads the spec, extracts every endpoint into `scripts/openapi-endpoints.json` with method, path, path/query params, and body fields.
24
+
25
+ ### Step 2: Extract MCP tool definitions
26
+
27
+ ```bash
28
+ npm run sync:extract
29
+ ```
30
+
31
+ Imports `TOOL_DEFINITIONS` from `src/types.ts`, converts Zod schemas to JSON Schema, writes `scripts/mcp-tools.json`. The tool-to-endpoint mapping is in `scripts/extract-mcp-tools.ts` (`TOOL_TO_ENDPOINT`).
32
+
33
+ ### Step 3: Diff
34
+
35
+ ```bash
36
+ npm run sync:diff
37
+ ```
38
+
39
+ Structurally compares the two JSON files:
40
+
41
+ | Category | Meaning |
42
+ |---|---|
43
+ | **MISSING IN MCP** | OpenAPI has an endpoint we don't cover |
44
+ | **EXTRA IN MCP** | We have a tool not in the OpenAPI spec |
45
+ | **MISSING FIELD** | OpenAPI has a field our schema is missing |
46
+ | **EXTRA FIELD** | Our schema has a field not in OpenAPI |
47
+ | **TYPE MISMATCH** | Same field, different type |
48
+ | **REQUIRED MISMATCH** | Same field, different required/optional |
49
+
50
+ ## Known Exceptions
51
+
52
+ Some issues are expected and won't cause the script to fail. They're declared in the `KNOWN_EXCEPTIONS` array in `scripts/diff-endpoints.ts` with inline comments explaining each one.
53
+
54
+ There are currently 31 known exceptions. Most exist because the OpenAPI spec lags behind the actual backend — we add fields the backend accepts even if they aren't in the spec yet. Each exception has an inline comment in `scripts/diff-endpoints.ts` explaining why.
55
+
56
+ When adding a new exception: add the exact issue string to `KNOWN_EXCEPTIONS` in `scripts/diff-endpoints.ts` with a comment explaining why. Also add a `// NOTE:` comment on the affected code in `src/types.ts`.
57
+
58
+ ## Adding a New Endpoint
59
+
60
+ 1. `npm run sync:check` -- see what's missing
61
+ 2. Add Zod schema + tool definition in `src/types.ts`
62
+ 3. Add client method in `src/client.ts`
63
+ 4. Register the tool in `src/handlers.ts`
64
+ 5. Add mapping in `scripts/extract-mcp-tools.ts` (`TOOL_TO_ENDPOINT`)
65
+ 6. `npm run sync:check` -- verify it passes
66
+
67
+ ## Verifying Against the Backend Source Code
68
+
69
+ The OpenAPI spec can lag behind the actual backend. For a deeper field-by-field audit against the backend source, see `BACKEND_VERIFICATION.md` (gitignored, available internally).
70
+ ## Files
71
+
72
+ | File | Purpose |
73
+ |---|---|
74
+ | `scripts/fetch-openapi-endpoints.ts` | Downloads + extracts OpenAPI endpoints |
75
+ | `scripts/extract-mcp-tools.ts` | Extracts MCP tool schemas, contains `TOOL_TO_ENDPOINT` mapping |
76
+ | `scripts/diff-endpoints.ts` | Structural diff, contains `KNOWN_EXCEPTIONS` |
77
+ | `scripts/openapi-endpoints.json` | Generated (gitignored) |
78
+ | `scripts/mcp-tools.json` | Generated (gitignored) |
@@ -0,0 +1,49 @@
1
+ import type { GetPromptTemplateParams, ListPromptTemplatesParams } from "./types.js";
2
+ type Body = Record<string, unknown>;
3
+ export declare class PromptLayerClient {
4
+ private apiKey;
5
+ private baseUrl;
6
+ constructor(apiKey: string, baseUrl?: string);
7
+ private request;
8
+ private get;
9
+ private post;
10
+ private patch;
11
+ private del;
12
+ private enc;
13
+ getPromptTemplate(name: string, params?: GetPromptTemplateParams): Promise<unknown>;
14
+ getPromptTemplateRaw(id: string, params?: Body): Promise<unknown>;
15
+ listPromptTemplates(params?: ListPromptTemplatesParams): Promise<unknown>;
16
+ publishPromptTemplate(body: Body): Promise<unknown>;
17
+ listPromptTemplateLabels(id: string): Promise<unknown>;
18
+ createPromptLabel(promptId: number, body: Body): Promise<unknown>;
19
+ movePromptLabel(labelId: number, body: Body): Promise<unknown>;
20
+ deletePromptLabel(labelId: number): Promise<unknown>;
21
+ getSnippetUsage(id: string, params?: Body): Promise<unknown>;
22
+ logRequest(body: Body): Promise<unknown>;
23
+ createSpansBulk(body: Body): Promise<unknown>;
24
+ listDatasets(params?: Body): Promise<unknown>;
25
+ createDatasetGroup(body: Body): Promise<unknown>;
26
+ createDatasetVersionFromFile(body: Body): Promise<unknown>;
27
+ createDatasetVersionFromFilterParams(body: Body): Promise<unknown>;
28
+ listEvaluations(params?: Body): Promise<unknown>;
29
+ createReport(body: Body): Promise<unknown>;
30
+ runReport(id: number, body: Body): Promise<unknown>;
31
+ getReport(id: number): Promise<unknown>;
32
+ getReportScore(id: number): Promise<unknown>;
33
+ updateReportScoreCard(id: number, body: Body): Promise<unknown>;
34
+ deleteReportsByName(name: string): Promise<unknown>;
35
+ listWorkflows(params?: Body): Promise<unknown>;
36
+ getWorkflow(idOrName: string): Promise<unknown>;
37
+ createWorkflow(body: Body): Promise<unknown>;
38
+ patchWorkflow(idOrName: string, body: Body): Promise<unknown>;
39
+ runWorkflow(name: string, body: Body): Promise<unknown>;
40
+ getWorkflowVersionExecutionResults(params: Body): Promise<unknown>;
41
+ createFolder(body: Body): Promise<unknown>;
42
+ editFolder(folderId: number, body: Body): Promise<unknown>;
43
+ getFolderEntities(params: Body): Promise<unknown>;
44
+ moveFolderEntities(body: Body): Promise<unknown>;
45
+ deleteFolderEntities(body: Body): Promise<unknown>;
46
+ resolveFolderId(params: Body): Promise<unknown>;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGrF,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;gBADP,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAsC;YAG3C,OAAO;IAarB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,GAAG;IAKX,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,uBAAuB;IAGhE,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI;IAC9C,mBAAmB,CAAC,MAAM,CAAC,EAAE,yBAAyB;IACtD,qBAAqB,CAAC,IAAI,EAAE,IAAI;IAChC,wBAAwB,CAAC,EAAE,EAAE,MAAM;IACnC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAC9C,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAC3C,iBAAiB,CAAC,OAAO,EAAE,MAAM;IACjC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI;IAGzC,UAAU,CAAC,IAAI,EAAE,IAAI;IACrB,eAAe,CAAC,IAAI,EAAE,IAAI;IAG1B,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI;IAC1B,kBAAkB,CAAC,IAAI,EAAE,IAAI;IAC7B,4BAA4B,CAAC,IAAI,EAAE,IAAI;IACvC,oCAAoC,CAAC,IAAI,EAAE,IAAI;IAG/C,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI;IAC7B,YAAY,CAAC,IAAI,EAAE,IAAI;IACvB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAChC,SAAS,CAAC,EAAE,EAAE,MAAM;IACpB,cAAc,CAAC,EAAE,EAAE,MAAM;IACzB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAC5C,mBAAmB,CAAC,IAAI,EAAE,MAAM;IAGhC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI;IAC3B,WAAW,CAAC,QAAQ,EAAE,MAAM;IAC5B,cAAc,CAAC,IAAI,EAAE,IAAI;IACzB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAC1C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IACpC,kCAAkC,CAAC,MAAM,EAAE,IAAI;IAG/C,YAAY,CAAC,IAAI,EAAE,IAAI;IACvB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IACvC,iBAAiB,CAAC,MAAM,EAAE,IAAI;IAC9B,kBAAkB,CAAC,IAAI,EAAE,IAAI;IAC7B,oBAAoB,CAAC,IAAI,EAAE,IAAI;IAC/B,eAAe,CAAC,MAAM,EAAE,IAAI;CAC7B"}
@@ -0,0 +1,80 @@
1
+ import { buildQueryParams, handleApiError } from "./utils.js";
2
+ export class PromptLayerClient {
3
+ apiKey;
4
+ baseUrl;
5
+ constructor(apiKey, baseUrl = "https://api.promptlayer.com") {
6
+ this.apiKey = apiKey;
7
+ this.baseUrl = baseUrl;
8
+ }
9
+ async request(endpoint, options = {}) {
10
+ const response = await fetch(`${this.baseUrl}${endpoint}`, {
11
+ ...options,
12
+ headers: {
13
+ "Content-Type": "application/json",
14
+ "X-API-KEY": this.apiKey,
15
+ ...options.headers,
16
+ },
17
+ });
18
+ if (!response.ok)
19
+ throw await handleApiError(response);
20
+ return (await response.json());
21
+ }
22
+ get(path, params) {
23
+ return this.request(`${path}${buildQueryParams(params)}`, { method: "GET" });
24
+ }
25
+ post(path, body) {
26
+ return this.request(path, { method: "POST", body: JSON.stringify(body) });
27
+ }
28
+ patch(path, body) {
29
+ return this.request(path, { method: "PATCH", body: JSON.stringify(body) });
30
+ }
31
+ del(path) {
32
+ return this.request(path, { method: "DELETE" });
33
+ }
34
+ enc(s) {
35
+ return encodeURIComponent(s);
36
+ }
37
+ // Prompt Templates
38
+ getPromptTemplate(name, params) {
39
+ return this.post(`/prompt-templates/${this.enc(name)}`, { api_key: this.apiKey, ...params });
40
+ }
41
+ getPromptTemplateRaw(id, params) { return this.get(`/prompt-templates/${this.enc(id)}`, params); }
42
+ listPromptTemplates(params) { return this.get("/prompt-templates", params); }
43
+ publishPromptTemplate(body) { return this.post("/rest/prompt-templates", body); }
44
+ listPromptTemplateLabels(id) { return this.get(`/prompt-templates/${this.enc(id)}/labels`); }
45
+ createPromptLabel(promptId, body) { return this.post(`/prompts/${promptId}/label`, body); }
46
+ movePromptLabel(labelId, body) { return this.patch(`/prompt-labels/${labelId}`, body); }
47
+ deletePromptLabel(labelId) { return this.del(`/prompt-labels/${labelId}`); }
48
+ getSnippetUsage(id, params) { return this.get(`/prompt-templates/${this.enc(id)}/snippet-usage`, params); }
49
+ // Tracking
50
+ logRequest(body) { return this.post("/log-request", body); }
51
+ createSpansBulk(body) { return this.post("/spans-bulk", body); }
52
+ // Datasets
53
+ listDatasets(params) { return this.get("/api/public/v2/datasets", params); }
54
+ createDatasetGroup(body) { return this.post("/api/public/v2/dataset-groups", body); }
55
+ createDatasetVersionFromFile(body) { return this.post("/api/public/v2/dataset-versions/from-file", body); }
56
+ createDatasetVersionFromFilterParams(body) { return this.post("/api/public/v2/dataset-versions/from-filter-params", body); }
57
+ // Evaluations
58
+ listEvaluations(params) { return this.get("/api/public/v2/evaluations", params); }
59
+ createReport(body) { return this.post("/reports", body); }
60
+ runReport(id, body) { return this.post(`/reports/${id}/run`, body); }
61
+ getReport(id) { return this.get(`/reports/${id}`); }
62
+ getReportScore(id) { return this.get(`/reports/${id}/score`); }
63
+ updateReportScoreCard(id, body) { return this.patch(`/reports/${id}/score-card`, body); }
64
+ deleteReportsByName(name) { return this.del(`/reports/name/${this.enc(name)}`); }
65
+ // Agents
66
+ listWorkflows(params) { return this.get("/workflows", params); }
67
+ getWorkflow(idOrName) { return this.get(`/workflows/${this.enc(idOrName)}`); }
68
+ createWorkflow(body) { return this.post("/rest/workflows", body); }
69
+ patchWorkflow(idOrName, body) { return this.patch(`/rest/workflows/${this.enc(idOrName)}`, body); }
70
+ runWorkflow(name, body) { return this.post(`/workflows/${this.enc(name)}/run`, body); }
71
+ getWorkflowVersionExecutionResults(params) { return this.get("/workflow-version-execution-results", params); }
72
+ // Folders
73
+ createFolder(body) { return this.post("/api/public/v2/folders", body); }
74
+ editFolder(folderId, body) { return this.patch(`/api/public/v2/folders/${folderId}`, body); }
75
+ getFolderEntities(params) { return this.get("/api/public/v2/folders/entities", params); }
76
+ moveFolderEntities(body) { return this.post("/api/public/v2/folders/entities", body); }
77
+ deleteFolderEntities(body) { return this.request("/api/public/v2/folders/entities", { method: "DELETE", body: JSON.stringify(body) }); }
78
+ resolveFolderId(params) { return this.get("/api/public/v2/folders/resolve-id", params); }
79
+ }
80
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerAllTools(server: any): void;
2
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,QA2G3C"}
@@ -0,0 +1,51 @@
1
+ import { TOOL_DEFINITIONS } from "./types.js";
2
+ import { createToolHandler } from "./utils.js";
3
+ function body(args) { const { api_key: _, ...rest } = args; return rest; }
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ export function registerAllTools(server) {
6
+ const t = TOOL_DEFINITIONS;
7
+ function reg(def, call, msg) {
8
+ server.tool(def.name, def.description, def.inputSchema.shape, createToolHandler(call, msg));
9
+ }
10
+ // Prompt Templates
11
+ reg(t["get-prompt-template"], (c, a) => { const { api_key: _, prompt_name, ...p } = a; return c.getPromptTemplate(prompt_name, p); }, (r) => { const { prompt_name, version } = r; return `Retrieved "${prompt_name}" v${version}`; });
12
+ reg(t["get-prompt-template-raw"], (c, a) => { const { api_key: _, identifier, ...p } = a; return c.getPromptTemplateRaw(identifier, p); }, (r) => `Retrieved raw template "${r.prompt_name ?? ""}"`);
13
+ reg(t["list-prompt-templates"], (c, a) => c.listPromptTemplates(body(a)), (r) => { const { items, page, pages, total } = r; return `${items.length} template(s) (page ${page}/${pages}, total ${total})`; });
14
+ reg(t["publish-prompt-template"], (c, a) => c.publishPromptTemplate(body(a)), () => "Published");
15
+ reg(t["list-prompt-template-labels"], (c, a) => c.listPromptTemplateLabels(a.identifier), (r) => `${Array.isArray(r) ? r.length : 0} label(s)`);
16
+ reg(t["create-prompt-label"], (c, a) => { const { api_key: _, prompt_id, prompt_version_number, name } = a; return c.createPromptLabel(prompt_id, { prompt_version_number, name }); }, () => "Label created");
17
+ reg(t["move-prompt-label"], (c, a) => { const { api_key: _, prompt_label_id, prompt_version_number } = a; return c.movePromptLabel(prompt_label_id, { prompt_version_number }); }, () => "Label moved");
18
+ reg(t["delete-prompt-label"], (c, a) => c.deletePromptLabel(a.prompt_label_id), () => "Label deleted");
19
+ reg(t["get-snippet-usage"], (c, a) => { const { api_key: _, identifier, ...p } = a; return c.getSnippetUsage(identifier, p); }, (r) => `${Array.isArray(r) ? r.length : 0} prompt(s) using snippet`);
20
+ // Tracking
21
+ reg(t["log-request"], (c, a) => c.logRequest(body(a)), (r) => { const id = r.request_id; return id ? `Logged (ID: ${id})` : "Logged"; });
22
+ reg(t["create-spans-bulk"], (c, a) => c.createSpansBulk(body(a)), (r) => `Created ${r.spans?.length ?? 0} span(s)`);
23
+ // Datasets
24
+ reg(t["list-datasets"], (c, a) => c.listDatasets(body(a)), (r) => { const { datasets, total } = r; return `${datasets?.length ?? 0} dataset(s) (total: ${total ?? "?"})`; });
25
+ reg(t["create-dataset-group"], (c, a) => c.createDatasetGroup(body(a)), () => "Dataset group created");
26
+ reg(t["create-dataset-version-from-file"], (c, a) => c.createDatasetVersionFromFile(body(a)), () => "Dataset version from file initiated");
27
+ reg(t["create-dataset-version-from-filter-params"], (c, a) => c.createDatasetVersionFromFilterParams(body(a)), () => "Dataset version from history initiated");
28
+ // Evaluations
29
+ reg(t["list-evaluations"], (c, a) => c.listEvaluations(body(a)), (r) => { const { items, total } = r; return `${items?.length ?? 0} evaluation(s) (total: ${total ?? "?"})`; });
30
+ reg(t["create-report"], (c, a) => c.createReport(body(a)), (r) => { const id = r.report_id; return id ? `Pipeline created (ID: ${id})` : "Pipeline created"; });
31
+ reg(t["run-report"], (c, a) => { const { api_key: _, report_id, ...b } = a; return c.runReport(report_id, b); }, () => "Evaluation run started");
32
+ reg(t["get-report"], (c, a) => c.getReport(a.report_id), () => "Evaluation retrieved");
33
+ reg(t["get-report-score"], (c, a) => c.getReportScore(a.report_id), (r) => { const s = r.score; return s !== undefined ? `Score: ${s}` : "Score retrieved"; });
34
+ reg(t["update-report-score-card"], (c, a) => { const { api_key: _, report_id, ...b } = a; return c.updateReportScoreCard(report_id, b); }, () => "Score card updated");
35
+ reg(t["delete-reports-by-name"], (c, a) => c.deleteReportsByName(a.report_name), () => "Reports archived");
36
+ // Agents
37
+ reg(t["list-workflows"], (c, a) => c.listWorkflows(body(a)), () => "Agents listed");
38
+ reg(t["create-workflow"], (c, a) => c.createWorkflow(body(a)), () => "Agent created");
39
+ reg(t["patch-workflow"], (c, a) => { const { api_key: _, workflow_id_or_name, ...b } = a; return c.patchWorkflow(workflow_id_or_name, b); }, () => "Agent updated");
40
+ reg(t["run-workflow"], (c, a) => { const { api_key: _, workflow_name, ...b } = a; return c.runWorkflow(workflow_name, b); }, (r) => { const id = r.workflow_version_execution_id; return id ? `Agent run started (ID: ${id})` : "Agent run started"; });
41
+ reg(t["get-workflow-version-execution-results"], (c, a) => c.getWorkflowVersionExecutionResults(body(a)), () => "Execution results retrieved");
42
+ reg(t["get-workflow"], (c, a) => c.getWorkflow(a.workflow_id_or_name), (r) => { const w = r; return `Agent "${w.workflow?.name ?? ""}" retrieved`; });
43
+ // Folders
44
+ reg(t["create-folder"], (c, a) => c.createFolder(body(a)), () => "Folder created");
45
+ reg(t["edit-folder"], (c, a) => { const { api_key: _, folder_id, ...b } = a; return c.editFolder(folder_id, b); }, () => "Folder renamed");
46
+ reg(t["get-folder-entities"], (c, a) => c.getFolderEntities(body(a)), (r) => { const e = r.entities; return `${e?.length ?? 0} entity/entities`; });
47
+ reg(t["move-folder-entities"], (c, a) => c.moveFolderEntities(body(a)), (r) => { const c_ = r.moved_count; return `Moved ${c_ ?? 0} entity/entities`; });
48
+ reg(t["delete-folder-entities"], (c, a) => c.deleteFolderEntities(body(a)), (r) => { const c_ = r.moved_count; return `Deleted ${c_ ?? 0} entity/entities`; });
49
+ reg(t["resolve-folder-id"], (c, a) => c.resolveFolderId(body(a)), (r) => { const id = r.id; return id ? `Folder ID: ${id}` : "Folder not found"; });
50
+ }
51
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/build/index.js ADDED
@@ -0,0 +1,45 @@
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 { registerAllTools } from "./handlers.js";
5
+ const INSTRUCTIONS = `
6
+ PromptLayer is a prompt management and observability platform. This MCP server lets you manage PromptLayer resources.
7
+
8
+ ## Key entities and naming
9
+
10
+ - **Prompt template**: A versioned prompt in the registry. Each version has a prompt_template (the content) and metadata. Versions are immutable — publishing always creates a new version.
11
+ - **Snippet**: A reusable prompt fragment referenced inside prompt templates with @@@snippet_name@@@ markers. Snippets are themselves prompt templates (with type "completion"). When a prompt is fetched, snippets are expanded inline by default.
12
+ - **Release label**: A pointer (e.g. "prod", "staging") attached to a specific prompt version. Move labels between versions for deployment.
13
+ - **Agent** (backend name: workflow): A multi-step pipeline of nodes. Each node has a type, configuration, and dependencies. Agents are versioned like prompts.
14
+ - **Evaluation pipeline** (backend name: report): Runs evaluation columns against a dataset and produces scores. Columns can be LLM assertions, code execution, comparisons, etc.
15
+ - **Dataset**: A versioned collection of test rows. Belongs to a dataset group. Versions can be created from CSV/JSON files or by filtering request log history.
16
+ - **Folder**: Organizes prompts, agents, datasets, evaluations, and other entities into a hierarchy.
17
+
18
+ ## Working with prompts and snippets
19
+
20
+ When editing a prompt that may contain snippets, always use get-prompt-template-raw with resolve_snippets=false. This preserves the raw @@@snippet_name@@@ references so they are not lost on re-publish. The response also includes a "snippets" array listing every snippet used.
21
+
22
+ When publishing back, keep @@@snippet_name@@@ markers intact in the prompt_template content. Do not inline snippet text — this breaks the snippet reference and future snippet updates will no longer propagate.
23
+
24
+ Use get-prompt-template (the POST variant) only when you need a fully rendered prompt ready to send to an LLM, with input_variables filled in and provider-specific formatting applied.
25
+
26
+ ## Working with evaluations
27
+
28
+ The recommended way to create an evaluation pipeline is with LLM assertion columns — these use a language model to score each dataset row. For details on all available column types (LLM assertion, code execution, comparison, etc.), search the PromptLayer docs or see https://docs.promptlayer.com/features/evaluations/column-types.
29
+
30
+ ## Additional documentation
31
+
32
+ For deeper questions about PromptLayer features, configuration, or API details, the PromptLayer docs site has an MCP server you can use for search. See https://docs.promptlayer.com/mcp for setup.
33
+ `.trim();
34
+ const server = new McpServer({ name: "promptlayer-server", version: "1.0.0" }, { instructions: INSTRUCTIONS });
35
+ registerAllTools(server);
36
+ async function main() {
37
+ const transport = new StdioServerTransport();
38
+ await server.connect(transport);
39
+ console.error("PromptLayer MCP Server running on stdio");
40
+ }
41
+ main().catch((error) => {
42
+ console.error("Fatal error:", error);
43
+ process.exit(1);
44
+ });
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BpB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,EAChD,EAAE,YAAY,EAAE,YAAY,EAAE,CAC/B,CAAC;AACF,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}