@arizeai/phoenix-mcp 4.0.0 → 4.0.2

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 CHANGED
@@ -112,16 +112,23 @@ Make sure to set these in a `.env` file. See `.env.example`.
112
112
 
113
113
  ## Tool Coverage
114
114
 
115
- The MCP server now covers the main operational Phoenix workflows:
116
-
117
- - `list-projects`, `get-project`
118
- - `list-traces`, `get-trace`
119
- - `get-spans`, `get-span-annotations`
120
- - `list-sessions`, `get-session`
121
- - `list-annotation-configs`
122
- - `list-datasets`, `get-dataset`, `get-dataset-examples`, `get-dataset-experiments`, `add-dataset-examples`
123
- - `list-experiments-for-dataset`, `get-experiment-by-id`
124
- - `list-prompts`, `get-prompt`, legacy prompt getter aliases, prompt version/tag tools, `upsert-prompt`
115
+ The MCP server covers the main operational Phoenix workflows:
116
+
117
+ **Prompts** — `list-prompts`, `get-prompt`, `get-latest-prompt`, `get-prompt-by-identifier`, `get-prompt-version`, `list-prompt-versions`, `get-prompt-version-by-tag`, `list-prompt-version-tags`, `add-prompt-version-tag`, `upsert-prompt`
118
+
119
+ **Projects** `list-projects`, `get-project`
120
+
121
+ **Traces** `list-traces`, `get-trace`
122
+
123
+ **Spans** `get-spans`, `get-span-annotations`
124
+
125
+ **Sessions** — `list-sessions`, `get-session`
126
+
127
+ **Annotation Configs** — `list-annotation-configs`
128
+
129
+ **Datasets** — `list-datasets`, `get-dataset`, `get-dataset-examples`, `get-dataset-experiments`, `add-dataset-examples`
130
+
131
+ **Experiments** — `list-experiments-for-dataset`, `get-experiment-by-id`
125
132
 
126
133
  For Phoenix documentation search, use the separate Phoenix Docs MCP server instead of this package.
127
134
 
@@ -1,42 +1,21 @@
1
- // ============================================================
2
- // Pagination
3
- // ============================================================
4
1
  /** Default number of items fetched per API page request. */
5
2
  export const DEFAULT_PAGE_SIZE = 100;
6
- // ============================================================
7
- // Span queries
8
- // ============================================================
9
3
  /** Maximum number of spans that a single query may return. */
10
4
  export const MAX_SPAN_QUERY_LIMIT = 1000;
11
- // ============================================================
12
- // List queries (datasets, experiments, projects, configs)
13
- // ============================================================
14
5
  /** Upper bound for the `limit` parameter on list endpoints. */
15
6
  export const MAX_LIST_LIMIT = 500;
16
- // ============================================================
17
- // Annotation fetching
18
- // ============================================================
19
7
  /** Number of span IDs included in each annotation chunk request. */
20
8
  export const ANNOTATION_CHUNK_SIZE = 100;
21
9
  /** Maximum number of annotation chunk requests executed concurrently. */
22
10
  export const MAX_CONCURRENT_ANNOTATION_REQUESTS = 5;
23
11
  /** Page size used when exhausting annotation pages within a single chunk. */
24
12
  export const ANNOTATION_PAGE_SIZE = 1000;
25
- // ============================================================
26
- // Trace queries
27
- // ============================================================
28
13
  /** Default number of traces returned by the list-traces tool. */
29
14
  export const DEFAULT_TRACE_PAGE_SIZE = 10;
30
15
  /** Maximum number of traces the list-traces tool may return. */
31
16
  export const MAX_TRACE_PAGE_SIZE = 100;
32
- // ============================================================
33
- // Session queries
34
- // ============================================================
35
17
  /** Maximum number of sessions the list-sessions tool may return. */
36
18
  export const MAX_SESSION_PAGE_SIZE = 100;
37
- // ============================================================
38
- // Prompt defaults
39
- // ============================================================
40
19
  /** Default model provider when creating a prompt version. */
41
20
  export const DEFAULT_MODEL_PROVIDER = "OPENAI";
42
21
  /** Default model name when creating a prompt version. */
@@ -49,13 +28,7 @@ export const DEFAULT_TEMPERATURE = 0.7;
49
28
  * Anthropic models require an explicit `max_tokens` invocation parameter.
50
29
  */
51
30
  export const ANTHROPIC_DEFAULT_MAX_TOKENS = 1000;
52
- // ============================================================
53
- // Time
54
- // ============================================================
55
31
  /** Number of milliseconds in one minute. */
56
32
  export const MS_PER_MINUTE = 60_000;
57
- // ============================================================
58
- // MCP metadata
59
- // ============================================================
60
33
  /** Provenance tag applied to dataset examples created through the MCP server. */
61
34
  export const MCP_SYNTHETIC_SOURCE = "Synthetic Example added via MCP";
@@ -17,7 +17,6 @@ export function isPhoenixDatasetId(identifier) {
17
17
  * datasets list endpoint.
18
18
  */
19
19
  export async function resolveDatasetId({ client, datasetId, datasetName, }) {
20
- // Prefer datasetId when provided
21
20
  if (datasetId) {
22
21
  const normalizedId = requireIdentifier({
23
22
  identifier: datasetId,
@@ -1,5 +1,5 @@
1
1
  import z from "zod";
2
- import { DEFAULT_TRACE_PAGE_SIZE, MAX_SESSION_PAGE_SIZE } from "./constants.js";
2
+ import { DEFAULT_TRACE_PAGE_SIZE, MAX_SESSION_PAGE_SIZE, MAX_SPAN_QUERY_LIMIT, } from "./constants.js";
3
3
  import { requireIdentifier } from "./identifiers.js";
4
4
  import { fetchAllPages } from "./pagination.js";
5
5
  import { resolveProjectIdentifier } from "./projectUtils.js";
@@ -36,7 +36,7 @@ async function fetchSessionAnnotations({ client, projectIdentifier, sessionId, }
36
36
  label: "projectIdentifier",
37
37
  });
38
38
  return fetchAllPages({
39
- limit: Infinity,
39
+ limit: MAX_SPAN_QUERY_LIMIT,
40
40
  fetchPage: async (cursor, pageSize) => {
41
41
  const query = {
42
42
  session_ids: [sessionId],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-mcp",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "A MCP server for Arize Phoenix",
5
5
  "keywords": [
6
6
  "arize-phoenix",
@@ -28,15 +28,15 @@
28
28
  "glob": "^13.0.6",
29
29
  "minimist": "^1.2.8",
30
30
  "zod": "^4.3.6",
31
- "@arizeai/phoenix-client": "6.5.3",
32
- "@arizeai/phoenix-config": "0.1.2"
31
+ "@arizeai/phoenix-client": "6.5.5",
32
+ "@arizeai/phoenix-config": "0.1.3"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/glob": "^9.0.0",
36
36
  "@types/minimist": "^1.2.5",
37
37
  "@types/node": "^22.14.0",
38
38
  "tsx": "^4.21.0",
39
- "vitest": "^4.0.10"
39
+ "vitest": "^4.1.0"
40
40
  },
41
41
  "scripts": {
42
42
  "build": "tsc && chmod 755 build/index.js",