@cyanheads/courtlistener-mcp-server 0.2.2 → 0.2.4
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/CLAUDE.md +2 -2
- package/Dockerfile +11 -0
- package/README.md +1 -1
- package/changelog/0.2.x/0.2.3.md +27 -0
- package/changelog/0.2.x/0.2.4.md +20 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-parties.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/get-parties.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-parties.tool.js +6 -0
- package/dist/mcp-server/tools/definitions/get-parties.tool.js.map +1 -1
- package/dist/services/courtlistener/courtlistener-service.js +1 -1
- package/package.json +9 -7
- package/server.json +3 -3
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** courtlistener-mcp-server
|
|
4
|
-
**Version:** 0.2.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9
|
|
4
|
+
**Version:** 0.2.4
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.9`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
package/Dockerfile
CHANGED
|
@@ -37,9 +37,12 @@ WORKDIR /usr/src/app
|
|
|
37
37
|
ENV NODE_ENV=production
|
|
38
38
|
|
|
39
39
|
# OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
|
|
40
|
+
ARG APP_VERSION
|
|
40
41
|
LABEL org.opencontainers.image.title="courtlistener-mcp-server"
|
|
41
42
|
LABEL org.opencontainers.image.description="Search and retrieve US court opinions, federal dockets, judge records, citation networks, and oral arguments from CourtListener's 9M+ opinion corpus via MCP."
|
|
42
43
|
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
|
44
|
+
LABEL org.opencontainers.image.version="${APP_VERSION}"
|
|
45
|
+
LABEL org.opencontainers.image.source="https://github.com/cyanheads/courtlistener-mcp-server"
|
|
43
46
|
|
|
44
47
|
# Copy dependency manifests
|
|
45
48
|
COPY package.json bun.lock ./
|
|
@@ -74,6 +77,11 @@ COPY --from=build /usr/src/app/dist ./dist
|
|
|
74
77
|
# Create and set permissions for the log directory, assigning ownership to the 'bun' user.
|
|
75
78
|
RUN mkdir -p /var/log/courtlistener-mcp-server && chown -R bun:bun /var/log/courtlistener-mcp-server
|
|
76
79
|
|
|
80
|
+
# Writable data dirs for on-disk SQLite stores (catalog index / observations
|
|
81
|
+
# mirror), owned by the runtime user. Mount a volume over either in production.
|
|
82
|
+
RUN mkdir -p /usr/src/app/.cache /usr/src/app/.mirror \
|
|
83
|
+
&& chown -R bun:bun /usr/src/app/.cache /usr/src/app/.mirror
|
|
84
|
+
|
|
77
85
|
# Switch to the non-root user
|
|
78
86
|
USER bun
|
|
79
87
|
|
|
@@ -94,5 +102,8 @@ ENV MCP_FORCE_CONSOLE_LOGGING="true"
|
|
|
94
102
|
# Expose the port the server listens on
|
|
95
103
|
EXPOSE ${MCP_HTTP_PORT}
|
|
96
104
|
|
|
105
|
+
# Health check using a bun-native fetch (slim image ships no curl/wget)
|
|
106
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD bun -e "fetch('http://localhost:'+(process.env.MCP_HTTP_PORT??'3010')+'/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
|
|
107
|
+
|
|
97
108
|
# The command to start the server
|
|
98
109
|
CMD ["bun", "run", "dist/index.js"]
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/courtlistener-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/courtlistener-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Adopt mcp-ts-core ^0.10.6: server identity pair, get_parties total-count enrichment, Dockerfile healthcheck and writable data dirs, anchored bundle ignores with post-pack cleaner."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.3 — 2026-06-11
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`courtlistener_get_parties` total-count enrichment** — a `totalCount` field on both response surfaces reports the upstream party total via `ctx.enrich.total()`, so a `page_size`-capped page is recognizable as a partial view of the full list.
|
|
12
|
+
- **Server identity pair** — `createApp()` sets explicit `name`/`title` of `courtlistener-mcp-server`, keeping the scoped npm name out of the served `server_name`.
|
|
13
|
+
- **Dockerfile `HEALTHCHECK`** — bun-native `fetch` against `/healthz` every 30s (no `curl`/`wget` in the slim image).
|
|
14
|
+
- **Dockerfile writable data dirs** — pre-creates `/usr/src/app/.cache` and `/usr/src/app/.mirror` owned by the runtime user for on-disk SQLite stores.
|
|
15
|
+
- **`scripts/clean-mcpb.ts`** — post-pack bundle cleaner wired into `bundle`: runs `mcpb clean`, then strips `node_modules/**` agent-doc entries that root-anchored `.mcpbignore` patterns cannot reach.
|
|
16
|
+
|
|
17
|
+
## Changed
|
|
18
|
+
|
|
19
|
+
- **`@cyanheads/mcp-ts-core` ^0.9.21 → ^0.10.6** — `ctx.enrich` API, `ElicitFn` (`ctx.elicit` now wired on the wire), env booleans via Zod `stringbool`, and the removal of `ctx.sample`/roots (deprecated by SEP-2577); none of the removed surfaces were used here.
|
|
20
|
+
- **Dockerfile OCI labels** — stamps `org.opencontainers.image.version` from an `APP_VERSION` build arg and declares `org.opencontainers.image.source`.
|
|
21
|
+
- **`.mcpbignore`** — dev-dir patterns (`/skills/`, `/.agents/`, `/.claude/`) anchored to root so they can't strip nested `node_modules` runtime paths.
|
|
22
|
+
- **`scripts/lint-packaging.ts`** — adds bundle-content guards (checks 5–8) and `name`/`title`/`display_name` identity checks (check 9).
|
|
23
|
+
- **`scripts/check-framework-antipatterns.ts`** — adds the `coerce-boolean-env-flag` rule (flags `z.coerce.boolean()` in `src/`) and skips comment lines.
|
|
24
|
+
- **`release:github` script** — runs under `bun run` instead of `tsx`.
|
|
25
|
+
- **`package.json` keywords** — added `stdio`, `streamable-http`.
|
|
26
|
+
- Project skills re-synced to the framework toolchain.
|
|
27
|
+
- Dependencies: `@types/node` ^25.9.1 → ^25.9.3.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Adopt mcp-ts-core ^0.10.9: new check-dependency-specifiers + plugin-manifest devcheck guards, ctx.content media collector, Canvas SQL classification fixes; resync 14 skills, fill codex plugin longDescription, dependency refresh."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.4 — 2026-06-20
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`check-dependency-specifiers` devcheck step** — picked up from the framework toolchain; hard-fails on floating specifiers (`latest`, `*`, pre-release dist-tags) in `package.json` dependency sections and `bun.lock` workspace maps, guarding against a `bun update --latest` writing a `latest` dist-tag into the lock.
|
|
12
|
+
- **Plugin marketplace manifest checks (`lint:packaging` check 10)** — validates `.claude-plugin/plugin.json` and `.codex-plugin/plugin.json`: non-empty descriptions, unscoped machine name in display fields, full `package.json` name in the `npx -y` install arg. Gated by the new `devcheck.config.json` `packaging.pluginManifests` flag (on).
|
|
13
|
+
- **`.codex-plugin/plugin.json` `interface.longDescription`** — populated (was empty); summarizes the opinion/docket/judge/citation/oral-argument surface and STDIO-or-HTTP transport.
|
|
14
|
+
|
|
15
|
+
## Changed
|
|
16
|
+
|
|
17
|
+
- **`@cyanheads/mcp-ts-core` ^0.10.6 → ^0.10.9** — adds `ctx.content`, an always-present collector for non-text content blocks (image/audio bytes ride `content[]` only, never `structuredContent`); fixes Canvas SQL gate classification so a `SELECT`-shaped statement that fails to prepare throws `ValidationError` with `data.reason: 'invalid_sql'` and the DuckDB binder detail; fixes `DuckdbProvider.describe({ tableName })` ambiguous-column binder error; corrects `OTEL_SERVICE_NAME` seeding precedence (env → `createApp` `name` → `package.json` `name`). None of the changed surfaces alter this server's tool behavior.
|
|
18
|
+
- **Project skills re-synced** to the framework toolchain — 14 `SKILL.md` `metadata.version` bumps (`add-tool`, `api-auth`, `api-canvas`, `api-config`, `api-context`, `api-errors`, `api-services`, `api-telemetry`, `field-test`, `git-wrapup`, `orchestrations`, `polish-docs-meta`, `report-issue-local`, `tool-defs-analysis`) plus the maintenance scripts (`build-changelog`, `check-framework-antipatterns`, `check-skill-versions`, `devcheck`, `lint-packaging`).
|
|
19
|
+
- **`User-Agent` header** — `courtlistener-mcp-server/0.1.2` → `courtlistener-mcp-server/0.2.4`, synced to the package version.
|
|
20
|
+
- Dependencies: `@biomejs/biome` ^2.4.16 → ^2.5.0, `@types/node` ^25.9.3 → ^26.0.0, `vitest` ^4.1.8 → ^4.1.9.
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,8 @@ import { searchOpinionsTool } from './mcp-server/tools/definitions/search-opinio
|
|
|
25
25
|
import { searchOralArgumentsTool } from './mcp-server/tools/definitions/search-oral-arguments.tool.js';
|
|
26
26
|
import { initCourtListenerService } from './services/courtlistener/courtlistener-service.js';
|
|
27
27
|
await createApp({
|
|
28
|
+
name: 'courtlistener-mcp-server',
|
|
29
|
+
title: 'courtlistener-mcp-server',
|
|
28
30
|
tools: [
|
|
29
31
|
searchOpinionsTool,
|
|
30
32
|
getOpinionTool,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAChG,uBAAuB;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,qEAAqE,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,mBAAmB;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AACvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAE7F,MAAM,SAAS,CAAC;IACd,KAAK,EAAE;QACL,kBAAkB;QAClB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB;QACjB,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,YAAY;QACZ,gBAAgB;QAChB,uBAAuB;QACvB,mBAAmB;QACnB,8BAA8B;KAC/B;IACD,SAAS,EAAE,CAAC,uBAAuB,CAAC;IACpC,OAAO,EAAE,CAAC,mBAAmB,CAAC;IAC9B,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,YAAY,EACV,yIAAyI;QACzI,4FAA4F;QAC5F,8HAA8H;QAC9H,mGAAmG;QACnG,yGAAyG;IAC3G,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,wBAAwB,CACtB,YAA4E,EAC5E,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAChG,uBAAuB;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,qEAAqE,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,mBAAmB;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AACvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAE7F,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,0BAA0B;IACjC,KAAK,EAAE;QACL,kBAAkB;QAClB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB;QACjB,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,YAAY;QACZ,gBAAgB;QAChB,uBAAuB;QACvB,mBAAmB;QACnB,8BAA8B;KAC/B;IACD,SAAS,EAAE,CAAC,uBAAuB,CAAC;IACpC,OAAO,EAAE,CAAC,mBAAmB,CAAC;IAC9B,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,YAAY,EACV,yIAAyI;QACzI,4FAA4F;QAC5F,8HAA8H;QAC9H,mGAAmG;QACnG,yGAAyG;IAC3G,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,wBAAwB,CACtB,YAA4E,EAC5E,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -36,5 +36,7 @@ export declare const getPartiesTool: import("@cyanheads/mcp-ts-core").ToolDefini
|
|
|
36
36
|
readonly when: "429 response from CourtListener. Each call to this tool makes two upstream requests.";
|
|
37
37
|
readonly retryable: true;
|
|
38
38
|
readonly recovery: "Wait for the Retry-After period. Free tier: 5 req/min, 50/hr, 125/day. This tool costs 2 requests per call.";
|
|
39
|
-
}],
|
|
39
|
+
}], {
|
|
40
|
+
readonly totalCount: z.ZodNumber;
|
|
41
|
+
}>;
|
|
40
42
|
//# sourceMappingURL=get-parties.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parties.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-parties.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"get-parties.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-parties.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2KzB,CAAC"}
|
|
@@ -73,6 +73,11 @@ export const getPartiesTool = tool('courtlistener_get_parties', {
|
|
|
73
73
|
.describe('A party and their attorneys for this docket.'))
|
|
74
74
|
.describe('Parties on this page.'),
|
|
75
75
|
}),
|
|
76
|
+
// Surfaces the upstream party total on both response surfaces so the agent
|
|
77
|
+
// knows when a page_size-capped page is a partial view of the full list.
|
|
78
|
+
enrichment: {
|
|
79
|
+
totalCount: z.number().describe('Total parties on this docket across all pages.'),
|
|
80
|
+
},
|
|
76
81
|
errors: [
|
|
77
82
|
{
|
|
78
83
|
reason: 'not_found',
|
|
@@ -101,6 +106,7 @@ export const getPartiesTool = tool('courtlistener_get_parties', {
|
|
|
101
106
|
total_parties: result.count,
|
|
102
107
|
parties_returned: result.parties.length,
|
|
103
108
|
});
|
|
109
|
+
ctx.enrich.total(result.count);
|
|
104
110
|
return {
|
|
105
111
|
docket_id: input.docket_id,
|
|
106
112
|
total_parties: result.count,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parties.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-parties.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-parties.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-parties.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,7 +94,7 @@ export class CourtListenerService {
|
|
|
94
94
|
return {
|
|
95
95
|
Authorization: `Token ${this.token}`,
|
|
96
96
|
Accept: 'application/json',
|
|
97
|
-
'User-Agent': 'courtlistener-mcp-server/0.
|
|
97
|
+
'User-Agent': 'courtlistener-mcp-server/0.2.4',
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
100
|
/** Generic GET with retry, rate-limit detection, and JSON parse. Arrays are serialized as repeated params (e.g., id=1&id=2). */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/courtlistener-mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"mcpName": "io.github.cyanheads/courtlistener-mcp-server",
|
|
5
5
|
"description": "Search and retrieve US court opinions, federal dockets, judge records, citation networks, and oral arguments from CourtListener's 9M+ opinion corpus via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"format:unsafe": "biome check --write --unsafe .",
|
|
31
31
|
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
32
32
|
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
33
|
-
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/courtlistener-mcp-server.mcpb",
|
|
33
|
+
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/courtlistener-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/courtlistener-mcp-server.mcpb",
|
|
34
34
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
35
35
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
36
|
-
"release:github": "
|
|
36
|
+
"release:github": "bun run scripts/release-github.ts",
|
|
37
37
|
"test": "bunx vitest run",
|
|
38
38
|
"start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
|
|
39
39
|
"start:http": "MCP_TRANSPORT_TYPE=http bun ./dist/index.js",
|
|
@@ -43,6 +43,8 @@
|
|
|
43
43
|
"mcp",
|
|
44
44
|
"mcp-server",
|
|
45
45
|
"model-context-protocol",
|
|
46
|
+
"stdio",
|
|
47
|
+
"streamable-http",
|
|
46
48
|
"court-opinions",
|
|
47
49
|
"legal-research",
|
|
48
50
|
"case-law",
|
|
@@ -82,17 +84,17 @@
|
|
|
82
84
|
"access": "public"
|
|
83
85
|
},
|
|
84
86
|
"dependencies": {
|
|
85
|
-
"@cyanheads/mcp-ts-core": "^0.9
|
|
87
|
+
"@cyanheads/mcp-ts-core": "^0.10.9",
|
|
86
88
|
"pino-pretty": "^13.1.3",
|
|
87
89
|
"zod": "^4.4.3"
|
|
88
90
|
},
|
|
89
91
|
"devDependencies": {
|
|
90
|
-
"@biomejs/biome": "^2.
|
|
91
|
-
"@types/node": "^
|
|
92
|
+
"@biomejs/biome": "^2.5.0",
|
|
93
|
+
"@types/node": "^26.0.0",
|
|
92
94
|
"depcheck": "^1.4.7",
|
|
93
95
|
"ignore": "^7.0.5",
|
|
94
96
|
"tsc-alias": "^1.8.17",
|
|
95
97
|
"typescript": "^6.0.3",
|
|
96
|
-
"vitest": "^4.1.
|
|
98
|
+
"vitest": "^4.1.9"
|
|
97
99
|
}
|
|
98
100
|
}
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/courtlistener-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.4",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/courtlistener-mcp-server",
|
|
21
21
|
"runtimeHint": "node",
|
|
22
|
-
"version": "0.2.
|
|
22
|
+
"version": "0.2.4",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
55
55
|
"identifier": "@cyanheads/courtlistener-mcp-server",
|
|
56
56
|
"runtimeHint": "node",
|
|
57
|
-
"version": "0.2.
|
|
57
|
+
"version": "0.2.4",
|
|
58
58
|
"packageArguments": [
|
|
59
59
|
{
|
|
60
60
|
"type": "positional",
|