@cyanheads/openfec-mcp-server 0.4.11 → 0.4.12
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 +5 -0
- package/README.md +1 -1
- package/changelog/0.4.x/0.4.12.md +24 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/manifest.json +2 -1
- package/package.json +4 -4
- package/server.json +5 -5
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** openfec-mcp-server
|
|
4
|
-
**Version:** 0.4.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
4
|
+
**Version:** 0.4.12
|
|
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
|
|
|
8
8
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
package/Dockerfile
CHANGED
|
@@ -37,10 +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="openfec-mcp-server"
|
|
41
42
|
LABEL org.opencontainers.image.description="Access FEC campaign finance data through MCP. Query data about candidates, money trails, and election filings. STDIO & Streamable HTTP."
|
|
42
43
|
LABEL org.opencontainers.image.source="https://github.com/cyanheads/openfec-mcp-server"
|
|
43
44
|
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
|
45
|
+
LABEL org.opencontainers.image.version="${APP_VERSION}"
|
|
44
46
|
|
|
45
47
|
# Copy dependency manifests
|
|
46
48
|
COPY package.json bun.lock ./
|
|
@@ -95,5 +97,8 @@ ENV MCP_FORCE_CONSOLE_LOGGING="true"
|
|
|
95
97
|
# Expose the port the server listens on
|
|
96
98
|
EXPOSE ${MCP_HTTP_PORT}
|
|
97
99
|
|
|
100
|
+
# Health check using a bun-native fetch (slim image ships no curl/wget)
|
|
101
|
+
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))"
|
|
102
|
+
|
|
98
103
|
# The command to start the server
|
|
99
104
|
CMD ["bun", "run", "dist/index.js"]
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](https://www.npmjs.com/package/@cyanheads/openfec-mcp-server) [](https://www.npmjs.com/package/@cyanheads/openfec-mcp-server) [](./CHANGELOG.md) [](https://github.com/users/cyanheads/packages/container/package/openfec-mcp-server) [](https://modelcontextprotocol.io/) [](./LICENSE) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "mcp-ts-core 0.10.6 adoption; bundle-content + identity packaging guards; in-code identity pinning; Dockerfile healthcheck"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.4.12 — 2026-06-12
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **In-code identity** — `createApp()` now sets `name` and `title` explicitly to `openfec-mcp-server`, and `manifest.json` carries a matching `display_name`. Pins the unscoped repo name across registry, bundle, and client surfaces rather than relying on the npm-scoped `package.json` `name`.
|
|
12
|
+
- **`scripts/clean-mcpb.ts`** — post-pack MCPB cleaner wired into the `bundle` script: runs `mcpb clean` (dev-dependency prune) then strips dependency-shipped agent docs (`skills/`, `.claude/`, `.agents/`, `SKILL.md`) nested under `node_modules/` that root-anchored `.mcpbignore` patterns cannot reach.
|
|
13
|
+
- **`lint-packaging.ts` bundle-content + identity checks** — new checks 5–9: `.mcpbignore` must anchor root dev-dir patterns (an unanchored `skills/` also strips `node_modules/x/skills/`), must not strip critical runtime paths, a built `.mcpb` must contain zero `node_modules/**` agent-doc entries, and `name`/`title`/`display_name` must equal the unscoped package name.
|
|
14
|
+
- **`check-framework-antipatterns.ts` rule 4** — flags `z.coerce.boolean()` on env flags (`Boolean("false")` is `true`, so the variable can't be disabled via the environment); use `z.stringbool()`. Comment lines are skipped so docs naming an antipattern don't register as violations.
|
|
15
|
+
- **`Dockerfile` healthcheck** — bun-native `fetch` against `/healthz` (the slim image ships no curl/wget), plus an `APP_VERSION` build arg feeding the `org.opencontainers.image.version` OCI label.
|
|
16
|
+
|
|
17
|
+
## Changed
|
|
18
|
+
|
|
19
|
+
- **`server.json` `FEC_API_KEY` description** — trimmed to `optional (DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free at api.data.gov.`
|
|
20
|
+
|
|
21
|
+
## Dependencies
|
|
22
|
+
|
|
23
|
+
- `@cyanheads/mcp-ts-core` ^0.9.21 → ^0.10.6
|
|
24
|
+
- `@types/node` ^25.9.2 → ^25.9.3
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,8 @@ import { allResourceDefinitions } from './mcp-server/resources/definitions/index
|
|
|
10
10
|
import { allToolDefinitions } from './mcp-server/tools/definitions/index.js';
|
|
11
11
|
import { initOpenFecService } from './services/openfec/openfec-service.js';
|
|
12
12
|
await createApp({
|
|
13
|
+
name: 'openfec-mcp-server',
|
|
14
|
+
title: 'openfec-mcp-server',
|
|
13
15
|
tools: allToolDefinitions,
|
|
14
16
|
resources: allResourceDefinitions,
|
|
15
17
|
prompts: allPromptDefinitions,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,MAAM,SAAS,CAAC;IACd,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,sBAAsB;IACjC,OAAO,EAAE,oBAAoB;IAC7B,YAAY,EACV,keAAke;IACpe,OAAO,EAAE;QACP,iFAAiF;QACjF,WAAW,EAAE,KAAK;KACnB;IACD,KAAK;QACH,kBAAkB,EAAE,CAAC;IACvB,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,sBAAsB;IACjC,OAAO,EAAE,oBAAoB;IAC7B,YAAY,EACV,keAAke;IACpe,OAAO,EAAE;QACP,iFAAiF;QACjF,WAAW,EAAE,KAAK;KACnB;IACD,KAAK;QACH,kBAAkB,EAAE,CAAC;IACvB,CAAC;CACF,CAAC,CAAC"}
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "openfec-mcp-server",
|
|
4
|
-
"
|
|
4
|
+
"display_name": "openfec-mcp-server",
|
|
5
|
+
"version": "0.4.12",
|
|
5
6
|
"description": "Access FEC campaign finance data through MCP. Query data about candidates, money trails, and election filings. STDIO & Streamable HTTP.",
|
|
6
7
|
"author": {
|
|
7
8
|
"name": "cyanheads"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/openfec-mcp-server",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.12",
|
|
4
4
|
"mcpName": "io.github.cyanheads/openfec-mcp-server",
|
|
5
5
|
"description": "Access FEC campaign finance data through MCP. Query data about candidates, money trails, and election filings. STDIO & Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
31
31
|
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
32
32
|
"list-skills": "bun run scripts/list-skills.ts",
|
|
33
|
-
"bundle": "bun run build && bunx -y @anthropic-ai/mcpb pack . dist/openfec-mcp-server.mcpb",
|
|
33
|
+
"bundle": "bun run build && bunx -y @anthropic-ai/mcpb pack . dist/openfec-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/openfec-mcp-server.mcpb",
|
|
34
34
|
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
35
35
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
36
36
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
@@ -97,14 +97,14 @@
|
|
|
97
97
|
"lodash": ">=4.17.24"
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
100
|
+
"@cyanheads/mcp-ts-core": "^0.10.6",
|
|
101
101
|
"@opentelemetry/api": "^1.9.1",
|
|
102
102
|
"pino-pretty": "^13.1.3",
|
|
103
103
|
"zod": "^4.4.3"
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
106
|
"@biomejs/biome": "^2.4.16",
|
|
107
|
-
"@types/node": "^25.9.
|
|
107
|
+
"@types/node": "^25.9.3",
|
|
108
108
|
"depcheck": "^1.4.7",
|
|
109
109
|
"ignore": "^7.0.5",
|
|
110
110
|
"tsc-alias": "^1.8.17",
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/openfec-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.4.
|
|
9
|
+
"version": "0.4.12",
|
|
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/openfec-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "0.4.
|
|
22
|
+
"version": "0.4.12",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"environmentVariables": [
|
|
34
34
|
{
|
|
35
35
|
"name": "FEC_API_KEY",
|
|
36
|
-
"description": "OpenFEC API key \u2014 optional (
|
|
36
|
+
"description": "OpenFEC API key \u2014 optional (DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free at api.data.gov.",
|
|
37
37
|
"format": "string",
|
|
38
38
|
"isRequired": false
|
|
39
39
|
},
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
55
55
|
"identifier": "@cyanheads/openfec-mcp-server",
|
|
56
56
|
"runtimeHint": "bun",
|
|
57
|
-
"version": "0.4.
|
|
57
|
+
"version": "0.4.12",
|
|
58
58
|
"packageArguments": [
|
|
59
59
|
{
|
|
60
60
|
"type": "positional",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"environmentVariables": [
|
|
69
69
|
{
|
|
70
70
|
"name": "FEC_API_KEY",
|
|
71
|
-
"description": "OpenFEC API key \u2014 optional (
|
|
71
|
+
"description": "OpenFEC API key \u2014 optional (DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free at api.data.gov.",
|
|
72
72
|
"format": "string",
|
|
73
73
|
"isRequired": false
|
|
74
74
|
},
|