@langwatch/mcp-server 0.10.1 → 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/.release-please-shim +1 -1
- package/CHANGELOG.md +54 -0
- package/README.md +9 -17
- package/dist/{archive-project-KAZFHR4A.js → archive-project-MK3673A7.js} +4 -3
- package/dist/{archive-scenario-6M2IB7Y2.js → archive-scenario-KATSXRIN.js} +4 -3
- package/dist/{archive-suite-NXZ3YDS3.js → archive-suite-C3KX6IIZ.js} +4 -3
- package/dist/{assign-prompt-tag-WPUJO55U.js → assign-prompt-tag-E3C5W6PI.js} +3 -2
- package/dist/chunk-37SMPMQS.js +12 -0
- package/dist/{chunk-CAY57CKF.js → chunk-5UWY24RP.js} +77 -4
- package/dist/chunk-BJ7B4R26.js +42 -0
- package/dist/chunk-CE6QMZOP.js +432 -0
- package/dist/{chunk-AGGE6NPR.js → chunk-DAIQKS27.js} +2 -2
- package/dist/{chunk-GWEW5XON.js → chunk-EU22L52K.js} +2 -2
- package/dist/{chunk-ITN2QGHF.js → chunk-J45SVWPR.js} +2 -2
- package/dist/{chunk-LTEJDL4V.js → chunk-O3LWVN67.js} +2 -2
- package/dist/{chunk-RDUXCCFR.js → chunk-RYRB2YVJ.js} +2 -2
- package/dist/{chunk-XRQNXN2Z.js → chunk-T7WJVS2N.js} +2 -2
- package/dist/{chunk-U2QIW2SW.js → chunk-UXXA4D6K.js} +2 -2
- package/dist/{chunk-HRFQAFPR.js → chunk-VYPSKRPN.js} +220 -133
- package/dist/{chunk-UKRCZJJC.js → chunk-WDH5P5RF.js} +2 -2
- package/dist/{chunk-COCNCXVJ.js → chunk-WWMDHZZV.js} +2 -2
- package/dist/{chunk-B6UV3JVI.js → chunk-XY4STOBE.js} +2 -2
- package/dist/{chunk-ESGZVPPC.js → chunk-Y3HDZ6OW.js} +2 -2
- package/dist/config.js +1 -0
- package/dist/{create-agent-BI7UTJ6A.js → create-agent-7W57J7MT.js} +4 -3
- package/dist/{create-annotation-SNM2J6S4.js → create-annotation-W2XELBCQ.js} +4 -3
- package/dist/{create-api-key-23MXYC2L.js → create-api-key-MKRXKFJM.js} +4 -3
- package/dist/{create-dashboard-CPOOOIKK.js → create-dashboard-QGL7IODC.js} +4 -3
- package/dist/{create-dataset-BVXPVVY2.js → create-dataset-3PH7A4HG.js} +4 -3
- package/dist/{create-dataset-records-S7VFIIMR.js → create-dataset-records-4DZS3VRL.js} +4 -3
- package/dist/{create-evaluator-WJAAQOUE.js → create-evaluator-YWH6NC4M.js} +4 -3
- package/dist/create-mcp-server.js +3 -2
- package/dist/{create-project-BF7LMZH5.js → create-project-BOBQ32C5.js} +4 -3
- package/dist/{create-prompt-LZ3QHSU4.js → create-prompt-FLCFGITE.js} +3 -2
- package/dist/{create-prompt-tag-IF4J24QM.js → create-prompt-tag-EMPNIKEA.js} +3 -2
- package/dist/{create-scenario-BK4E5DEU.js → create-scenario-BSBIHUL6.js} +4 -3
- package/dist/{create-suite-HEQPNLND.js → create-suite-TWF6BBR4.js} +4 -3
- package/dist/{delete-agent-Y4T2G5PT.js → delete-agent-7MSYNY5E.js} +4 -3
- package/dist/{delete-annotation-KYDMQTZG.js → delete-annotation-ZT5IGN24.js} +4 -3
- package/dist/{delete-dashboard-3RW647WJ.js → delete-dashboard-BTIY5S3L.js} +4 -3
- package/dist/{delete-dataset-SZAHFHHS.js → delete-dataset-U45HQHPR.js} +4 -3
- package/dist/{delete-dataset-records-ISHKGEBH.js → delete-dataset-records-R43IMAWB.js} +4 -3
- package/dist/{delete-evaluator-VKIG5I3S.js → delete-evaluator-U6JMQ6C7.js} +4 -3
- package/dist/{delete-prompt-tag-VYYL4GTF.js → delete-prompt-tag-4EV4TDHB.js} +3 -2
- package/dist/{delete-workflow-SHNPYSWQ.js → delete-workflow-5QYALXEL.js} +4 -3
- package/dist/discover-evaluator-schema-MRGHVNTT.js +2175 -0
- package/dist/{discover-scenario-schema-MEEEVND7.js → discover-scenario-schema-UPBTCWPG.js} +3 -1
- package/dist/{discover-schema-3T52ORPB.js → discover-schema-ICGXPHUW.js} +3 -1
- package/dist/{get-agent-IZSP7AR5.js → get-agent-7QJVPH72.js} +4 -3
- package/dist/{get-analytics-EDFAYYIQ.js → get-analytics-PVERWOA5.js} +3 -2
- package/dist/{get-dashboard-WSAO6IQ4.js → get-dashboard-ZZPC3WMD.js} +4 -3
- package/dist/{get-dataset-BEVNXQNF.js → get-dataset-25TB2LQH.js} +4 -3
- package/dist/{get-evaluator-HCVXNPZR.js → get-evaluator-3FTRQKEC.js} +4 -3
- package/dist/{get-project-H4V3GYRQ.js → get-project-5OAXYC57.js} +4 -3
- package/dist/{get-prompt-EWRJVVGB.js → get-prompt-I753LZKZ.js} +3 -2
- package/dist/{get-scenario-24YUJS5W.js → get-scenario-DSSTR6FI.js} +4 -3
- package/dist/{get-simulation-run-UX2W6F6I.js → get-simulation-run-RQPMS2MC.js} +4 -3
- package/dist/{get-suite-B65ZKZJA.js → get-suite-GTOCY5PL.js} +4 -3
- package/dist/{get-trace-ZR7MIITH.js → get-trace-O5VT3NAC.js} +7 -9
- package/dist/{get-workflow-YROHUQJW.js → get-workflow-3EZDOEIF.js} +4 -3
- package/dist/http-server-2ACJ3CXW.js +24366 -0
- package/dist/index.js +20935 -1751
- package/dist/{langwatch-api-annotations-OPEXNTPF.js → langwatch-api-annotations-E65MI3WZ.js} +4 -3
- package/dist/{langwatch-api-dashboards-NPQM6QJI.js → langwatch-api-dashboards-QCDECRCY.js} +4 -3
- package/dist/{langwatch-api-monitors-3L25OOOS.js → langwatch-api-monitors-UIO2KTDV.js} +3 -2
- package/dist/{langwatch-api-secrets-ZFURUA62.js → langwatch-api-secrets-4T2EKSJ7.js} +3 -2
- package/dist/{langwatch-api-triggers-XGXXT7DD.js → langwatch-api-triggers-MPOEKPUY.js} +3 -2
- package/dist/{langwatch-api-workflows-CXCTTCXT.js → langwatch-api-workflows-5HRZ7HR4.js} +4 -3
- package/dist/{list-agents-6ZNOV7FK.js → list-agents-TIJTP566.js} +4 -3
- package/dist/{list-annotations-6P3IWILH.js → list-annotations-CGX5BT7E.js} +4 -3
- package/dist/{list-api-keys-JJI62KD2.js → list-api-keys-JLWJPFRX.js} +4 -3
- package/dist/{list-dashboards-G2WJOXWB.js → list-dashboards-RNIWX3TX.js} +4 -3
- package/dist/{list-dataset-records-GWWVOCII.js → list-dataset-records-B5MHZR66.js} +4 -3
- package/dist/{list-datasets-HBTH33X4.js → list-datasets-BVCAMQCP.js} +4 -3
- package/dist/{list-evaluators-K5OGB6TX.js → list-evaluators-65FBTL2U.js} +4 -3
- package/dist/{list-model-providers-JMOGZLSO.js → list-model-providers-GRK3I3VV.js} +4 -3
- package/dist/{list-projects-OXJC2NW5.js → list-projects-JLMBFMW3.js} +4 -3
- package/dist/{list-prompt-tags-J2HPHVAZ.js → list-prompt-tags-UHNWDGQI.js} +3 -2
- package/dist/{list-prompts-C7GR72XL.js → list-prompts-7254B3U7.js} +3 -2
- package/dist/{list-scenarios-JEPGIIDO.js → list-scenarios-46YNICKM.js} +4 -3
- package/dist/{list-simulation-runs-DRSAGPEC.js → list-simulation-runs-LGNEFNPN.js} +4 -3
- package/dist/{list-suites-POTZ3ZT6.js → list-suites-5VK4HXEK.js} +4 -3
- package/dist/{list-workflows-QQZQIOHB.js → list-workflows-MLQDM6CP.js} +4 -3
- package/dist/{rename-prompt-tag-4AAV2BS4.js → rename-prompt-tag-RHQMNEQL.js} +3 -2
- package/dist/report-issue-DXJ6TPTC.js +412 -0
- package/dist/{revoke-api-key-TONB4ADQ.js → revoke-api-key-3Y35EMBT.js} +4 -3
- package/dist/{run-agent-7QE3YEH7.js → run-agent-RBSIFKRT.js} +4 -3
- package/dist/{run-suite-Q66OSPO4.js → run-suite-K3DNQ3SE.js} +4 -3
- package/dist/{run-workflow-RWX2D752.js → run-workflow-5LVBZYLS.js} +4 -3
- package/dist/{search-traces-M5E5VB4X.js → search-traces-U4HLOCZ2.js} +9 -2
- package/dist/{set-model-provider-XENT5D2P.js → set-model-provider-V3M5CDIY.js} +4 -3
- package/dist/{update-agent-GML25EE3.js → update-agent-47RZIHS7.js} +4 -3
- package/dist/{update-dataset-R4MM6NNY.js → update-dataset-G6QJJGS5.js} +4 -3
- package/dist/{update-dataset-record-FN4BL5P4.js → update-dataset-record-RMWLSWCS.js} +4 -3
- package/dist/{update-evaluator-LH2RDDB5.js → update-evaluator-SFRRI5Q3.js} +4 -3
- package/dist/{update-project-H53IHRBB.js → update-project-PI5DWBVK.js} +4 -3
- package/dist/{update-prompt-M33OTTAJ.js → update-prompt-RQFTEO7Y.js} +3 -2
- package/dist/{update-scenario-FKTQRAFQ.js → update-scenario-G3IU2UIB.js} +4 -3
- package/dist/{update-suite-JJTNOTXN.js → update-suite-TRGGLNR7.js} +4 -3
- package/package.json +20 -18
- package/pnpm-workspace.yaml +20 -3
- package/pyproject.toml +9 -1
- package/src/__tests__/all-tools.integration.test.ts +56 -120
- package/src/__tests__/documentation-fetch-security.integration.test.ts +176 -0
- package/src/__tests__/langwatch-api.unit.test.ts +206 -0
- package/src/__tests__/public-http-request-security.integration.test.ts +118 -0
- package/src/__tests__/report-issue.integration.test.ts +147 -0
- package/src/__tests__/tools.unit.test.ts +24 -0
- package/src/create-mcp-server.ts +43 -29
- package/src/documentation-fetch.ts +111 -0
- package/src/langwatch-api-agents.ts +2 -2
- package/src/langwatch-api.ts +138 -8
- package/src/public-http-request.ts +242 -0
- package/src/tools/get-trace.ts +2 -12
- package/src/tools/report-issue.ts +150 -0
- package/src/tools/search-traces.ts +4 -0
- package/src/utils/format-evaluations.ts +20 -0
- package/tsconfig.json +8 -1
- package/uv.lock +259 -205
- package/dist/chunk-IUP5IHBD.js +0 -71
- package/dist/discover-evaluator-schema-H23XCLNE.js +0 -1402
- package/dist/http-server-GXVEDA7G.js +0 -226
package/.release-please-shim
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
release-please shadow marker (
|
|
1
|
+
release-please shadow marker (v3), next: 1.0.0
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.0.0](https://github.com/langwatch/langwatch/compare/mcp-server@v0.10.1...mcp-server@v1.0.0) (2026-07-24)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* agent issue reports, npx langwatch report at every access point ([#6101](https://github.com/langwatch/langwatch/issues/6101)) ([e881f8e](https://github.com/langwatch/langwatch/commit/e881f8e5ed5e24094e9c55e3f8d390c9ff2f43e4))
|
|
9
|
+
* **errors:** handled-error remediation channel (tips/docsUrl/fault) + shared package ([#5917](https://github.com/langwatch/langwatch/issues/5917)) ([bf9bf5a](https://github.com/langwatch/langwatch/commit/bf9bf5ab61c1c70160be712532a92d81816f77be))
|
|
10
|
+
* **langy:** event-sourced frontend, model-emitted cards, and a home built on one field ([#6027](https://github.com/langwatch/langwatch/issues/6027)) ([5d72c7e](https://github.com/langwatch/langwatch/commit/5d72c7efc7b27fbc683ed77df7a943d01fb6b7a9))
|
|
11
|
+
* **mcp-server:** graduate to 1.0.0 ([fa2341f](https://github.com/langwatch/langwatch/commit/fa2341f3e4e2caafea684886e3f68de99c5e9bd4))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **deps:** bump @anthropic-ai/claude-code to 2.1.202 with consistent lockfiles ([#5808](https://github.com/langwatch/langwatch/issues/5808)) ([a32cb2d](https://github.com/langwatch/langwatch/commit/a32cb2d7935dab244e05dd6ef360296d90a548d5))
|
|
17
|
+
* **mcp-server:** bump vitest to 4.1.8 for SNYK-JS-VITEST-17375131 ([#5379](https://github.com/langwatch/langwatch/issues/5379)) ([f495f35](https://github.com/langwatch/langwatch/commit/f495f35e385db610bdfbd235992dbcf18df8b1eb))
|
|
18
|
+
* **mcp-server:** keep zod and @modelcontextprotocol/sdk as real dependencies ([#5976](https://github.com/langwatch/langwatch/issues/5976)) ([2a368ef](https://github.com/langwatch/langwatch/commit/2a368eff7f7b1129b992bf3a74259e63cf299140))
|
|
19
|
+
* **mcp-server:** move unused runtime deps to devDependencies (npx cold-start 27s -> 2s) ([#5965](https://github.com/langwatch/langwatch/issues/5965)) ([7c5b49a](https://github.com/langwatch/langwatch/commit/7c5b49a18cc24a1c9f0a462d521c5907e4e98216))
|
|
20
|
+
* **mcp-server:** surface evaluation results in search_traces ([#5983](https://github.com/langwatch/langwatch/issues/5983)) ([dacb1e9](https://github.com/langwatch/langwatch/commit/dacb1e9fbadfb0d156bf44d31cd263720180eded))
|
|
21
|
+
* **security:** harden MCP outbound requests and browser policy ([#6091](https://github.com/langwatch/langwatch/issues/6091)) ([694aeaf](https://github.com/langwatch/langwatch/commit/694aeaf21e8aab41055d027c6106c64d8e67e624))
|
|
22
|
+
* **security:** raise hono and undici floors across npm workspaces ([#5071](https://github.com/langwatch/langwatch/issues/5071)) ([5b5d57a](https://github.com/langwatch/langwatch/commit/5b5d57ac59baa38e90f9db82f3c213a26262bce4))
|
|
23
|
+
* **security:** raise litellm to >=1.84.0 in mcp-server and python-sdk ([cb44747](https://github.com/langwatch/langwatch/commit/cb447477d21feb9448445505bbe088f4b54776dc))
|
|
24
|
+
* **security:** raise litellm to >=1.84.0 in mcp-server and python-sdk (CRITICAL) ([#5230](https://github.com/langwatch/langwatch/issues/5230)) ([cb44747](https://github.com/langwatch/langwatch/commit/cb447477d21feb9448445505bbe088f4b54776dc))
|
|
25
|
+
* **security:** raise mcp-server python-dotenv and python-liquid transitive floors ([#5610](https://github.com/langwatch/langwatch/issues/5610)) ([52db5a4](https://github.com/langwatch/langwatch/commit/52db5a4c69e7a6b7bef9d80cf58d696d44ce4238))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Miscellaneous
|
|
29
|
+
|
|
30
|
+
* **deps-dev:** bump @anthropic-ai/claude-code ([acb7ce4](https://github.com/langwatch/langwatch/commit/acb7ce41ac1ec574ed8b1a78aeddd4867246ee5c))
|
|
31
|
+
* **deps-dev:** bump @anthropic-ai/claude-code from 2.1.158 to 2.1.163 in /mcp-server in the npm_and_yarn group across 1 directory ([#4995](https://github.com/langwatch/langwatch/issues/4995)) ([acb7ce4](https://github.com/langwatch/langwatch/commit/acb7ce41ac1ec574ed8b1a78aeddd4867246ee5c))
|
|
32
|
+
* **deps-dev:** bump @anthropic-ai/claude-code from 2.1.163 to 2.1.195 in /mcp-server ([#5376](https://github.com/langwatch/langwatch/issues/5376)) ([5ff4826](https://github.com/langwatch/langwatch/commit/5ff4826214587a6aed784a69578062ab12fd9df1))
|
|
33
|
+
* **deps-dev:** bump @anthropic-ai/claude-code in /mcp-server ([5ff4826](https://github.com/langwatch/langwatch/commit/5ff4826214587a6aed784a69578062ab12fd9df1))
|
|
34
|
+
* **deps-dev:** bump @langwatch/scenario from 0.4.11 to 0.4.15 in /mcp-server ([#5338](https://github.com/langwatch/langwatch/issues/5338)) ([de74e61](https://github.com/langwatch/langwatch/commit/de74e6183244683b650105eea70dda5fe4bda4a4))
|
|
35
|
+
* **deps-dev:** bump @langwatch/scenario in /mcp-server ([de74e61](https://github.com/langwatch/langwatch/commit/de74e6183244683b650105eea70dda5fe4bda4a4))
|
|
36
|
+
* **deps-dev:** bump @types/eslint__js from 8.42.3 to 9.14.0 in /langwatch ([#4605](https://github.com/langwatch/langwatch/issues/4605)) ([b937610](https://github.com/langwatch/langwatch/commit/b937610ea11752f5a07aa111da07e9dd7bbaa9f8))
|
|
37
|
+
* **deps-dev:** bump @typescript/native-preview from 7.0.0-dev.20250911.1 to 7.0.0-dev.20260628.1 in /mcp-server ([#5373](https://github.com/langwatch/langwatch/issues/5373)) ([1ac876f](https://github.com/langwatch/langwatch/commit/1ac876fe55f2c73452c82b9a4219e52980dda9d2))
|
|
38
|
+
* **deps-dev:** bump @typescript/native-preview to 7.0.0-dev.20260628.1 in /mcp-server ([1ac876f](https://github.com/langwatch/langwatch/commit/1ac876fe55f2c73452c82b9a4219e52980dda9d2))
|
|
39
|
+
* **deps-dev:** bump eslint from 10.4.1 to 10.6.0 in /mcp-server ([#5372](https://github.com/langwatch/langwatch/issues/5372)) ([78244c1](https://github.com/langwatch/langwatch/commit/78244c197c8000cb7358f19f7cdcf7e07e93231e))
|
|
40
|
+
* **deps-dev:** bump the typescript-native-preview group across 3 directories with 1 update ([#5721](https://github.com/langwatch/langwatch/issues/5721)) ([6e44614](https://github.com/langwatch/langwatch/commit/6e44614f5b193cf959203bb32e357cc7407e4b16))
|
|
41
|
+
* **deps-dev:** bump the typescript-native-preview group across 3 directories with 1 update ([#5755](https://github.com/langwatch/langwatch/issues/5755)) ([1508d35](https://github.com/langwatch/langwatch/commit/1508d359e5bc5a8f382dbec25d53c5448b910d90))
|
|
42
|
+
* **deps-dev:** bump tsx from 4.22.3 to 4.22.4 in /mcp-server ([#4779](https://github.com/langwatch/langwatch/issues/4779)) ([1e8e538](https://github.com/langwatch/langwatch/commit/1e8e538e57e0096957439a4146a5eea480df3e93))
|
|
43
|
+
* **deps-dev:** bump typescript-eslint from 8.60.0 to 8.62.0 in /mcp-server ([#4880](https://github.com/langwatch/langwatch/issues/4880)) ([5773c2d](https://github.com/langwatch/langwatch/commit/5773c2db77634313075eb58e94190e0d7c146577))
|
|
44
|
+
* **deps-dev:** bump typescript-eslint from 8.62.0 to 8.62.1 in /mcp-server ([#5478](https://github.com/langwatch/langwatch/issues/5478)) ([9250768](https://github.com/langwatch/langwatch/commit/92507686d7d519691b8d53a625c4a67374ded313))
|
|
45
|
+
* **deps-dev:** bump typescript-eslint in /mcp-server ([9250768](https://github.com/langwatch/langwatch/commit/92507686d7d519691b8d53a625c4a67374ded313))
|
|
46
|
+
* **deps-dev:** bump typescript-eslint in /mcp-server ([5773c2d](https://github.com/langwatch/langwatch/commit/5773c2db77634313075eb58e94190e0d7c146577))
|
|
47
|
+
* **deps-dev:** remove redundant @types/eslint__js in /mcp-server ([b937610](https://github.com/langwatch/langwatch/commit/b937610ea11752f5a07aa111da07e9dd7bbaa9f8))
|
|
48
|
+
* **deps:** batch small dependency updates in /langwatch + /mcp-server ([#5447](https://github.com/langwatch/langwatch/issues/5447)) ([daed7b1](https://github.com/langwatch/langwatch/commit/daed7b1325fc06b70c0739849d27280a8a4f6c9c))
|
|
49
|
+
* **deps:** bump @modelcontextprotocol/sdk from 1.26.0 to 1.29.0 in /langwatch ([#4607](https://github.com/langwatch/langwatch/issues/4607)) ([08f2ce6](https://github.com/langwatch/langwatch/commit/08f2ce6b50877edf35ec524e1524afdbb5de53b0))
|
|
50
|
+
* **deps:** bump @opentelemetry/context-async-hooks from 2.7.1 to 2.8.0 in /mcp-server ([#5033](https://github.com/langwatch/langwatch/issues/5033)) ([1506b70](https://github.com/langwatch/langwatch/commit/1506b701e999bc779190bff988942927537cffd1))
|
|
51
|
+
* **deps:** bump @opentelemetry/context-async-hooks in /mcp-server ([1506b70](https://github.com/langwatch/langwatch/commit/1506b701e999bc779190bff988942927537cffd1))
|
|
52
|
+
* **deps:** bump @opentelemetry/sdk-node from 0.217.0 to 0.219.0 in /mcp-server ([#5048](https://github.com/langwatch/langwatch/issues/5048)) ([9f1ef55](https://github.com/langwatch/langwatch/commit/9f1ef5572a9cca3114e583b4a319fb3ec416e080))
|
|
53
|
+
* **deps:** bump @opentelemetry/sdk-node in /mcp-server ([9f1ef55](https://github.com/langwatch/langwatch/commit/9f1ef5572a9cca3114e583b4a319fb3ec416e080))
|
|
54
|
+
* **deps:** bump vitest from 4.1.0 to 4.1.9 in /mcp-server ([#4784](https://github.com/langwatch/langwatch/issues/4784)) ([efe348f](https://github.com/langwatch/langwatch/commit/efe348f4b4e4836f7b27d5ab32673a5bc77323a2))
|
|
55
|
+
* **deps:** bump yargs from 17.7.2 to 18.0.0 in /mcp-server ([#4307](https://github.com/langwatch/langwatch/issues/4307)) ([dddc31d](https://github.com/langwatch/langwatch/commit/dddc31d6901a4d7fc91ea25fe442810dacdbda67))
|
|
56
|
+
|
|
3
57
|
## [0.10.1](https://github.com/langwatch/langwatch/compare/mcp-server@v0.10.0...mcp-server@v0.10.1) (2026-05-31)
|
|
4
58
|
|
|
5
59
|
|
package/README.md
CHANGED
|
@@ -4,30 +4,22 @@ MCP server that gives AI coding agents access to LangWatch observability data, p
|
|
|
4
4
|
|
|
5
5
|
## Quick Setup
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
```json
|
|
10
|
-
{
|
|
11
|
-
"mcpServers": {
|
|
12
|
-
"langwatch": {
|
|
13
|
-
"command": "npx",
|
|
14
|
-
"args": ["-y", "@langwatch/mcp-server"],
|
|
15
|
-
"env": {
|
|
16
|
-
"LANGWATCH_API_KEY": "your-api-key-here"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
For Claude Code, you can also run:
|
|
7
|
+
For Claude Code, run:
|
|
24
8
|
|
|
25
9
|
```bash
|
|
26
10
|
claude mcp add langwatch -- npx -y @langwatch/mcp-server --apiKey your-api-key-here
|
|
27
11
|
```
|
|
28
12
|
|
|
13
|
+
For Claude Code (manual) or other MCP clients (Cursor, Copilot, etc.), add an entry named `langwatch` under the `mcpServers` object of your client's MCP settings file with these fields:
|
|
14
|
+
|
|
15
|
+
- `command`: `npx`
|
|
16
|
+
- `args`: `-y`, then the package name `@langwatch/mcp-server` on a separate token
|
|
17
|
+
- `env.LANGWATCH_API_KEY`: your LangWatch API key
|
|
18
|
+
|
|
29
19
|
The API key is required for observability and prompt tools. Documentation tools work without it.
|
|
30
20
|
|
|
21
|
+
> The config is described in prose rather than as a JSON snippet because some CLI agents (notably Gemini CLI 0.36.0 and earlier) parse `@`-prefixed runs as file paths and can crash with `ENAMETOOLONG` when a multi-line JSON snippet wraps the scoped package name in double quotes. See [#3104](https://github.com/langwatch/langwatch/issues/3104). The bash form above is safe — the package name is followed by a whitespace terminator.
|
|
22
|
+
|
|
31
23
|
## Configuration
|
|
32
24
|
|
|
33
25
|
| Env Var | CLI Arg | Description |
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveProject
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-XY4STOBE.js";
|
|
4
|
+
import "./chunk-5UWY24RP.js";
|
|
5
5
|
import "./chunk-KOO5733S.js";
|
|
6
|
+
import "./chunk-BJ7B4R26.js";
|
|
6
7
|
|
|
7
8
|
// src/tools/archive-project.ts
|
|
8
9
|
async function handleArchiveProject(params) {
|
|
@@ -16,4 +17,4 @@ async function handleArchiveProject(params) {
|
|
|
16
17
|
export {
|
|
17
18
|
handleArchiveProject
|
|
18
19
|
};
|
|
19
|
-
//# sourceMappingURL=archive-project-
|
|
20
|
+
//# sourceMappingURL=archive-project-MK3673A7.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveScenario
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-O3LWVN67.js";
|
|
4
|
+
import "./chunk-5UWY24RP.js";
|
|
5
5
|
import "./chunk-KOO5733S.js";
|
|
6
|
+
import "./chunk-BJ7B4R26.js";
|
|
6
7
|
|
|
7
8
|
// src/tools/archive-scenario.ts
|
|
8
9
|
async function handleArchiveScenario(params) {
|
|
@@ -16,4 +17,4 @@ async function handleArchiveScenario(params) {
|
|
|
16
17
|
export {
|
|
17
18
|
handleArchiveScenario
|
|
18
19
|
};
|
|
19
|
-
//# sourceMappingURL=archive-scenario-
|
|
20
|
+
//# sourceMappingURL=archive-scenario-KATSXRIN.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveSuite
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-WDH5P5RF.js";
|
|
4
|
+
import "./chunk-5UWY24RP.js";
|
|
5
5
|
import "./chunk-KOO5733S.js";
|
|
6
|
+
import "./chunk-BJ7B4R26.js";
|
|
6
7
|
|
|
7
8
|
// src/tools/archive-suite.ts
|
|
8
9
|
async function handleArchiveSuite(params) {
|
|
@@ -12,4 +13,4 @@ async function handleArchiveSuite(params) {
|
|
|
12
13
|
export {
|
|
13
14
|
handleArchiveSuite
|
|
14
15
|
};
|
|
15
|
-
//# sourceMappingURL=archive-suite-
|
|
16
|
+
//# sourceMappingURL=archive-suite-C3KX6IIZ.js.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assignPromptTag
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5UWY24RP.js";
|
|
4
4
|
import "./chunk-KOO5733S.js";
|
|
5
|
+
import "./chunk-BJ7B4R26.js";
|
|
5
6
|
|
|
6
7
|
// src/tools/assign-prompt-tag.ts
|
|
7
8
|
async function handleAssignPromptTag(params) {
|
|
@@ -16,4 +17,4 @@ async function handleAssignPromptTag(params) {
|
|
|
16
17
|
export {
|
|
17
18
|
handleAssignPromptTag
|
|
18
19
|
};
|
|
19
|
-
//# sourceMappingURL=assign-prompt-tag-
|
|
20
|
+
//# sourceMappingURL=assign-prompt-tag-E3C5W6PI.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// src/utils/format-evaluations.ts
|
|
2
|
+
function formatEvaluationLines(evaluations) {
|
|
3
|
+
return evaluations.map((evaluation) => {
|
|
4
|
+
const status = evaluation.passed === true ? "PASSED" : evaluation.passed === false ? "FAILED" : "N/A";
|
|
5
|
+
return `- **${evaluation.name || evaluation.evaluator_id}**: ${status}${evaluation.score != null ? ` (score: ${evaluation.score})` : ""}${evaluation.label ? ` [${evaluation.label}]` : ""}`;
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export {
|
|
10
|
+
formatEvaluationLines
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=chunk-37SMPMQS.js.map
|
|
@@ -5,15 +5,67 @@ import {
|
|
|
5
5
|
|
|
6
6
|
// src/langwatch-api.ts
|
|
7
7
|
var LangWatchApiError = class extends Error {
|
|
8
|
-
constructor(message, status, responseBody) {
|
|
8
|
+
constructor(message, status, responseBody, options = {}) {
|
|
9
9
|
super(message);
|
|
10
10
|
this.status = status;
|
|
11
11
|
this.responseBody = responseBody;
|
|
12
12
|
this.name = "LangWatchApiError";
|
|
13
|
+
this.code = options.code;
|
|
14
|
+
this.tips = options.tips;
|
|
15
|
+
this.docsUrl = options.docsUrl;
|
|
16
|
+
this.fault = options.fault;
|
|
17
|
+
this.reasons = options.reasons;
|
|
13
18
|
}
|
|
14
19
|
status;
|
|
15
20
|
responseBody;
|
|
21
|
+
code;
|
|
22
|
+
tips;
|
|
23
|
+
docsUrl;
|
|
24
|
+
fault;
|
|
25
|
+
/**
|
|
26
|
+
* The per-field failures behind this error, verbatim from the envelope.
|
|
27
|
+
* A validation failure carries the offending field and the values it would
|
|
28
|
+
* have accepted here — the difference between an agent correcting its own
|
|
29
|
+
* request and an agent guessing again.
|
|
30
|
+
*/
|
|
31
|
+
reasons;
|
|
16
32
|
};
|
|
33
|
+
var VALID_FAULTS = ["customer", "platform", "provider"];
|
|
34
|
+
function parseErrorBody(responseBody) {
|
|
35
|
+
try {
|
|
36
|
+
const parsed = JSON.parse(responseBody);
|
|
37
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
const body = parsed;
|
|
41
|
+
const code = typeof body.code === "string" ? body.code : typeof body.error === "string" ? body.error : void 0;
|
|
42
|
+
const message = typeof body.message === "string" ? body.message : void 0;
|
|
43
|
+
if (code === void 0 && message === void 0) {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
const tips = Array.isArray(body.tips) && body.tips.every((t) => typeof t === "string") ? body.tips : void 0;
|
|
47
|
+
const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
|
|
48
|
+
const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
|
|
49
|
+
const reasons = Array.isArray(body.reasons) && body.reasons.every((r) => !!r && typeof r === "object") ? body.reasons : void 0;
|
|
50
|
+
return { code, message, tips, docsUrl, fault, reasons };
|
|
51
|
+
} catch {
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function describeReason(reason) {
|
|
56
|
+
const meta = reason.meta;
|
|
57
|
+
if (!meta || typeof meta !== "object") return null;
|
|
58
|
+
const field = typeof meta.field === "string" ? meta.field : null;
|
|
59
|
+
if (!field) return null;
|
|
60
|
+
const parts = [`- ${field}`];
|
|
61
|
+
if (meta.received !== void 0) {
|
|
62
|
+
parts.push(`received ${JSON.stringify(meta.received)}`);
|
|
63
|
+
}
|
|
64
|
+
if (Array.isArray(meta.expected) && meta.expected.length > 0) {
|
|
65
|
+
parts.push(`expected one of: ${meta.expected.join(", ")}`);
|
|
66
|
+
}
|
|
67
|
+
return parts.join(" \u2014 ");
|
|
68
|
+
}
|
|
17
69
|
async function makeRequest(method, path, body) {
|
|
18
70
|
const config = getConfig();
|
|
19
71
|
const url = config.endpoint + path;
|
|
@@ -33,10 +85,31 @@ async function makeRequest(method, path, body) {
|
|
|
33
85
|
});
|
|
34
86
|
if (!response.ok) {
|
|
35
87
|
const responseBody = await response.text();
|
|
88
|
+
const parsed = parseErrorBody(responseBody);
|
|
89
|
+
const lines = [
|
|
90
|
+
`LangWatch API error ${response.status}: ${parsed.message ?? responseBody}`
|
|
91
|
+
];
|
|
92
|
+
const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
|
|
93
|
+
if (reasonLines.length > 0) {
|
|
94
|
+
lines.push("Rejected fields:", ...reasonLines);
|
|
95
|
+
}
|
|
96
|
+
if (parsed.tips && parsed.tips.length > 0) {
|
|
97
|
+
lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
|
|
98
|
+
}
|
|
99
|
+
if (parsed.docsUrl) {
|
|
100
|
+
lines.push(`Docs: ${parsed.docsUrl}`);
|
|
101
|
+
}
|
|
36
102
|
throw new LangWatchApiError(
|
|
37
|
-
|
|
103
|
+
lines.join("\n"),
|
|
38
104
|
response.status,
|
|
39
|
-
responseBody
|
|
105
|
+
responseBody,
|
|
106
|
+
{
|
|
107
|
+
code: parsed.code,
|
|
108
|
+
tips: parsed.tips,
|
|
109
|
+
docsUrl: parsed.docsUrl,
|
|
110
|
+
fault: parsed.fault,
|
|
111
|
+
reasons: parsed.reasons
|
|
112
|
+
}
|
|
40
113
|
);
|
|
41
114
|
}
|
|
42
115
|
if (response.status === 204 || response.headers?.get("content-length") === "0") {
|
|
@@ -141,4 +214,4 @@ export {
|
|
|
141
214
|
renamePromptTag,
|
|
142
215
|
deletePromptTag
|
|
143
216
|
};
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
217
|
+
//# sourceMappingURL=chunk-5UWY24RP.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
8
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
9
|
+
}) : x)(function(x) {
|
|
10
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
11
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
12
|
+
});
|
|
13
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
14
|
+
try {
|
|
15
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
16
|
+
} catch (e) {
|
|
17
|
+
throw mod = 0, e;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var __copyProps = (to, from, except, desc) => {
|
|
21
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
22
|
+
for (let key of __getOwnPropNames(from))
|
|
23
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
24
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
25
|
+
}
|
|
26
|
+
return to;
|
|
27
|
+
};
|
|
28
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
29
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
30
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
31
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
32
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
33
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
34
|
+
mod
|
|
35
|
+
));
|
|
36
|
+
|
|
37
|
+
export {
|
|
38
|
+
__require,
|
|
39
|
+
__commonJS,
|
|
40
|
+
__toESM
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=chunk-BJ7B4R26.js.map
|