@cyanheads/libofcongress-mcp-server 0.2.8 → 0.2.9
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 +5 -6
- package/Dockerfile +5 -0
- package/README.md +1 -1
- package/dist/config/server-config.js +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.d.ts +3 -0
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.js +19 -2
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.js.map +1 -1
- package/package.json +5 -5
- package/server.json +5 -5
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** libofcongress-mcp-server
|
|
4
|
-
**Version:** 0.2.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
4
|
+
**Version:** 0.2.9
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.6`
|
|
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
|
|
@@ -35,9 +35,9 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
35
35
|
- **Logic throws, framework catches.** Tool/resource handlers are pure — throw on failure, no `try/catch`. Plain `Error` is fine; the framework catches, classifies, and formats. Use error factories (`notFound()`, `validationError()`, etc.) when the error code matters.
|
|
36
36
|
- **Use `ctx.log`** for request-scoped logging. No `console` calls.
|
|
37
37
|
- **Use `ctx.state`** for tenant-scoped storage. Never access persistence directly.
|
|
38
|
-
- **Check `ctx.elicit
|
|
38
|
+
- **Check `ctx.elicit`** for presence before calling.
|
|
39
39
|
- **Secrets in env vars only** — never hardcoded.
|
|
40
|
-
- **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed
|
|
40
|
+
- **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed and close it. Do both — a comment without a close leaves stale issues open; a close without a comment leaves no record of what shipped. The comment is for future readers — state the concrete changes, not the conversation that produced them.
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -113,7 +113,7 @@ import { z } from '@cyanheads/mcp-ts-core';
|
|
|
113
113
|
import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
|
|
114
114
|
|
|
115
115
|
const ServerConfigSchema = z.object({
|
|
116
|
-
userAgent: z.string().default('libofcongress-mcp-server/0.2.
|
|
116
|
+
userAgent: z.string().default('libofcongress-mcp-server/0.2.9').describe('User-Agent header for LOC API requests.'),
|
|
117
117
|
requestDelayMs: z.coerce.number().default(3100).describe('Delay in ms between LOC API requests.'),
|
|
118
118
|
});
|
|
119
119
|
|
|
@@ -140,7 +140,6 @@ Handlers receive a unified `ctx` object. Key properties:
|
|
|
140
140
|
| `ctx.log` | Request-scoped logger — `.debug()`, `.info()`, `.notice()`, `.warning()`, `.error()`. Auto-correlates requestId, traceId, tenantId. |
|
|
141
141
|
| `ctx.state` | Tenant-scoped KV — `.get(key)`, `.set(key, value, { ttl? })`, `.delete(key)`, `.list(prefix, { cursor, limit })`. Accepts any serializable value. |
|
|
142
142
|
| `ctx.elicit` | Ask user for structured input. **Check for presence first:** `if (ctx.elicit) { ... }` |
|
|
143
|
-
| `ctx.sample` | Request LLM completion from the client. **Check for presence first:** `if (ctx.sample) { ... }` |
|
|
144
143
|
| `ctx.signal` | `AbortSignal` for cancellation. |
|
|
145
144
|
| `ctx.progress` | Task progress (present when `task: true`) — `.setTotal(n)`, `.increment()`, `.update(message)`. |
|
|
146
145
|
| `ctx.requestId` | Unique request ID. |
|
package/Dockerfile
CHANGED
|
@@ -34,10 +34,12 @@ WORKDIR /usr/src/app
|
|
|
34
34
|
ENV NODE_ENV=production
|
|
35
35
|
|
|
36
36
|
# OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
|
|
37
|
+
ARG APP_VERSION
|
|
37
38
|
LABEL org.opencontainers.image.title="@cyanheads/libofcongress-mcp-server"
|
|
38
39
|
LABEL org.opencontainers.image.description="Search LOC digital collections, browse Chronicling America newspapers with full OCR text, and look up LC Subject Headings via MCP."
|
|
39
40
|
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
|
40
41
|
LABEL org.opencontainers.image.source="https://github.com/cyanheads/libofcongress-mcp-server"
|
|
42
|
+
LABEL org.opencontainers.image.version="${APP_VERSION}"
|
|
41
43
|
|
|
42
44
|
# Copy dependency manifests
|
|
43
45
|
COPY package.json bun.lock ./
|
|
@@ -81,4 +83,7 @@ ENV MCP_FORCE_CONSOLE_LOGGING="true"
|
|
|
81
83
|
|
|
82
84
|
EXPOSE ${MCP_HTTP_PORT}
|
|
83
85
|
|
|
86
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
87
|
+
CMD bun -e "fetch('http://localhost:'+process.env.MCP_HTTP_PORT+'/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
|
|
88
|
+
|
|
84
89
|
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/libofcongress-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/libofcongress-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -7,7 +7,7 @@ import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
|
|
|
7
7
|
const ServerConfigSchema = z.object({
|
|
8
8
|
userAgent: z
|
|
9
9
|
.string()
|
|
10
|
-
.default('libofcongress-mcp-server/0.2.
|
|
10
|
+
.default('libofcongress-mcp-server/0.2.9')
|
|
11
11
|
.describe('User-Agent header sent with LOC API requests. LOC recommends a descriptive value for polite access.'),
|
|
12
12
|
requestDelayMs: z.coerce
|
|
13
13
|
.number()
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,8 @@ import { locSearchSubjects } from './mcp-server/tools/definitions/libofcongress-
|
|
|
14
14
|
import { initLcLinkedDataService } from './services/lc-linked-data/lc-linked-data-service.js';
|
|
15
15
|
import { initLocApiService } from './services/loc-api/loc-api-service.js';
|
|
16
16
|
await createApp({
|
|
17
|
+
name: 'libofcongress-mcp-server',
|
|
18
|
+
title: 'libofcongress-mcp-server',
|
|
17
19
|
tools: [
|
|
18
20
|
locSearch,
|
|
19
21
|
locGetItem,
|
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,mEAAmE,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yEAAyE,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAE,MAAM,+DAA+D,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yEAAyE,CAAC;AAC9G,OAAO,EAAE,SAAS,EAAE,MAAM,6DAA6D,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wEAAwE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,sEAAsE,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,MAAM,SAAS,CAAC;IACd,KAAK,EAAE;QACL,SAAS;QACT,UAAU;QACV,mBAAmB;QACnB,mBAAmB;QACnB,iBAAiB;QACjB,oBAAoB;KACrB;IACD,SAAS,EAAE,CAAC,eAAe,CAAC;IAC5B,OAAO,EAAE,EAAE;IACX,YAAY,EACV,4JAA4J;QAC5J,qGAAqG;QACrG,sDAAsD;IACxD,OAAO,EAAE;QACP,yEAAyE;QACzE,WAAW,EAAE,KAAK;KACnB;IACD,KAAK,CAAC,IAAI;QACR,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,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,mEAAmE,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yEAAyE,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAE,MAAM,+DAA+D,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yEAAyE,CAAC;AAC9G,OAAO,EAAE,SAAS,EAAE,MAAM,6DAA6D,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wEAAwE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,sEAAsE,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,0BAA0B;IACjC,KAAK,EAAE;QACL,SAAS;QACT,UAAU;QACV,mBAAmB;QACnB,mBAAmB;QACnB,iBAAiB;QACjB,oBAAoB;KACrB;IACD,SAAS,EAAE,CAAC,eAAe,CAAC;IAC5B,OAAO,EAAE,EAAE;IACX,YAAY,EACV,4JAA4J;QAC5J,qGAAqG;QACrG,sDAAsD;IACxD,OAAO,EAAE;QACP,yEAAyE;QACzE,WAAW,EAAE,KAAK;KACnB;IACD,KAAK,CAAC,IAAI;QACR,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -15,6 +15,9 @@ export declare const locSearchSubjects: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
15
15
|
total: z.ZodNumber;
|
|
16
16
|
}, z.core.$strip>, undefined, {
|
|
17
17
|
readonly effectiveQuery: z.ZodString;
|
|
18
|
+
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
19
|
+
readonly shown: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
readonly cap: z.ZodOptional<z.ZodNumber>;
|
|
18
21
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
19
22
|
}>;
|
|
20
23
|
//# sourceMappingURL=libofcongress-search-subjects.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search-subjects.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGjD,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"libofcongress-search-subjects.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGjD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAiH5B,CAAC"}
|
|
@@ -41,12 +41,22 @@ export const locSearchSubjects = tool('libofcongress_search_subjects', {
|
|
|
41
41
|
.describe('LCSH subject headings matching the query, ordered by relevance.'),
|
|
42
42
|
total: z.number().describe('Number of subject headings returned.'),
|
|
43
43
|
}),
|
|
44
|
-
// Agent-facing success-path context — query echo and empty-result
|
|
45
|
-
// both structuredContent and content[] automatically; kept out of the
|
|
44
|
+
// Agent-facing success-path context — query echo, truncation disclosure, and empty-result
|
|
45
|
+
// guidance. Reaches both structuredContent and content[] automatically; kept out of the
|
|
46
|
+
// domain output.
|
|
46
47
|
enrichment: {
|
|
47
48
|
effectiveQuery: z
|
|
48
49
|
.string()
|
|
49
50
|
.describe('The keyword query as submitted to the id.loc.gov suggest endpoint, after trimming.'),
|
|
51
|
+
truncated: z
|
|
52
|
+
.boolean()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('True when results were capped at the requested limit. Increase limit or refine the query to surface additional headings.'),
|
|
55
|
+
shown: z.number().optional().describe('Number of subject headings returned in this response.'),
|
|
56
|
+
cap: z
|
|
57
|
+
.number()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe('The limit applied to this response — maximum headings the API will return.'),
|
|
50
60
|
notice: z
|
|
51
61
|
.string()
|
|
52
62
|
.optional()
|
|
@@ -61,6 +71,13 @@ export const locSearchSubjects = tool('libofcongress_search_subjects', {
|
|
|
61
71
|
ctx.enrich.notice(`No LCSH headings matched "${input.query}". Try broader or different terms. LCSH uses inverted forms for many headings — for example, "Photography, Aerial" instead of "Aerial photography", or "World War, 1939-1945" instead of "World War II".`);
|
|
62
72
|
return { subjects: [], total: 0 };
|
|
63
73
|
}
|
|
74
|
+
if (subjects.length >= input.limit) {
|
|
75
|
+
ctx.enrich.truncated({
|
|
76
|
+
shown: subjects.length,
|
|
77
|
+
cap: input.limit,
|
|
78
|
+
guidance: 'Increase limit or refine the query to surface additional headings.',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
64
81
|
return {
|
|
65
82
|
subjects,
|
|
66
83
|
total: subjects.length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search-subjects.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAE7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,+BAA+B,EAAE;IACrE,KAAK,EAAE,4BAA4B;IACnC,WAAW,EACT,sdAAsd;IACxd,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,8FAA8F,CAC/F;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,mEAAmE,CAAC;KACjF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CACP,+FAA+F,CAChG;YACH,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CAAC,wEAAwE,CAAC;YACrF,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,kFAAkF,CACnF;SACJ,CAAC;aACD,QAAQ,CAAC,uCAAuC,CAAC,CACrD;aACA,QAAQ,CAAC,iEAAiE,CAAC;QAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACnE,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"libofcongress-search-subjects.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/libofcongress-mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"mcpName": "io.github.cyanheads/libofcongress-mcp-server",
|
|
5
5
|
"description": "Search LOC digital collections, browse Chronicling America newspapers with full OCR text, and look up LC Subject Headings via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
23
23
|
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
24
24
|
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish",
|
|
25
|
-
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/libofcongress-mcp-server.mcpb",
|
|
25
|
+
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/libofcongress-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/libofcongress-mcp-server.mcpb",
|
|
26
26
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
27
27
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
28
28
|
"release:github": "bun run scripts/release-github.ts",
|
|
@@ -76,13 +76,13 @@
|
|
|
76
76
|
"access": "public"
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
79
|
+
"@cyanheads/mcp-ts-core": "^0.10.6",
|
|
80
80
|
"pino-pretty": "^13.1.3",
|
|
81
81
|
"zod": "^4.4.3"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
|
-
"@biomejs/biome": "^2.
|
|
85
|
-
"@types/node": "^25.9.
|
|
84
|
+
"@biomejs/biome": "^2.5.0",
|
|
85
|
+
"@types/node": "^25.9.3",
|
|
86
86
|
"depcheck": "^1.4.7",
|
|
87
87
|
"ignore": "^7.0.5",
|
|
88
88
|
"tsc-alias": "^1.8.17",
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/libofcongress-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.9",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/libofcongress-mcp-server",
|
|
15
15
|
"runtimeHint": "bun",
|
|
16
|
-
"version": "0.2.
|
|
16
|
+
"version": "0.2.9",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"description": "User-Agent header sent with LOC API requests. LOC recommends a descriptive value for polite access.",
|
|
31
31
|
"format": "string",
|
|
32
32
|
"isRequired": false,
|
|
33
|
-
"default": "libofcongress-mcp-server/0.2.
|
|
33
|
+
"default": "libofcongress-mcp-server/0.2.9"
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"name": "LOC_REQUEST_DELAY_MS",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
57
57
|
"identifier": "@cyanheads/libofcongress-mcp-server",
|
|
58
58
|
"runtimeHint": "bun",
|
|
59
|
-
"version": "0.2.
|
|
59
|
+
"version": "0.2.9",
|
|
60
60
|
"packageArguments": [
|
|
61
61
|
{
|
|
62
62
|
"type": "positional",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"description": "User-Agent header sent with LOC API requests. LOC recommends a descriptive value for polite access.",
|
|
74
74
|
"format": "string",
|
|
75
75
|
"isRequired": false,
|
|
76
|
-
"default": "libofcongress-mcp-server/0.2.
|
|
76
|
+
"default": "libofcongress-mcp-server/0.2.9"
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"name": "LOC_REQUEST_DELAY_MS",
|