@cyanheads/secedgar-mcp-server 0.1.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.
Files changed (61) hide show
  1. package/Dockerfile +99 -0
  2. package/LICENSE +190 -0
  3. package/README.md +260 -0
  4. package/dist/config/server-config.d.ts +14 -0
  5. package/dist/config/server-config.d.ts.map +1 -0
  6. package/dist/config/server-config.js +33 -0
  7. package/dist/config/server-config.js.map +1 -0
  8. package/dist/index.d.ts +7 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +30 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/mcp-server/prompts/definitions/company-analysis.prompt.d.ts +10 -0
  13. package/dist/mcp-server/prompts/definitions/company-analysis.prompt.d.ts.map +1 -0
  14. package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js +43 -0
  15. package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js.map +1 -0
  16. package/dist/mcp-server/resources/definitions/concepts.resource.d.ts +9 -0
  17. package/dist/mcp-server/resources/definitions/concepts.resource.d.ts.map +1 -0
  18. package/dist/mcp-server/resources/definitions/concepts.resource.js +77 -0
  19. package/dist/mcp-server/resources/definitions/concepts.resource.js.map +1 -0
  20. package/dist/mcp-server/resources/definitions/filing-types.resource.d.ts +8 -0
  21. package/dist/mcp-server/resources/definitions/filing-types.resource.d.ts.map +1 -0
  22. package/dist/mcp-server/resources/definitions/filing-types.resource.js +94 -0
  23. package/dist/mcp-server/resources/definitions/filing-types.resource.js.map +1 -0
  24. package/dist/mcp-server/tools/definitions/company-search.tool.d.ts +31 -0
  25. package/dist/mcp-server/tools/definitions/company-search.tool.d.ts.map +1 -0
  26. package/dist/mcp-server/tools/definitions/company-search.tool.js +129 -0
  27. package/dist/mcp-server/tools/definitions/company-search.tool.js.map +1 -0
  28. package/dist/mcp-server/tools/definitions/compare-metric.tool.d.ts +37 -0
  29. package/dist/mcp-server/tools/definitions/compare-metric.tool.d.ts.map +1 -0
  30. package/dist/mcp-server/tools/definitions/compare-metric.tool.js +128 -0
  31. package/dist/mcp-server/tools/definitions/compare-metric.tool.js.map +1 -0
  32. package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts +29 -0
  33. package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts.map +1 -0
  34. package/dist/mcp-server/tools/definitions/get-filing.tool.js +157 -0
  35. package/dist/mcp-server/tools/definitions/get-filing.tool.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts +40 -0
  37. package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts.map +1 -0
  38. package/dist/mcp-server/tools/definitions/get-financials.tool.js +191 -0
  39. package/dist/mcp-server/tools/definitions/get-financials.tool.js.map +1 -0
  40. package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts +29 -0
  41. package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts.map +1 -0
  42. package/dist/mcp-server/tools/definitions/search-filings.tool.js +179 -0
  43. package/dist/mcp-server/tools/definitions/search-filings.tool.js.map +1 -0
  44. package/dist/services/edgar/concept-map.d.ts +13 -0
  45. package/dist/services/edgar/concept-map.d.ts.map +1 -0
  46. package/dist/services/edgar/concept-map.js +109 -0
  47. package/dist/services/edgar/concept-map.js.map +1 -0
  48. package/dist/services/edgar/edgar-api-service.d.ts +47 -0
  49. package/dist/services/edgar/edgar-api-service.d.ts.map +1 -0
  50. package/dist/services/edgar/edgar-api-service.js +213 -0
  51. package/dist/services/edgar/edgar-api-service.js.map +1 -0
  52. package/dist/services/edgar/filing-to-text.d.ts +11 -0
  53. package/dist/services/edgar/filing-to-text.d.ts.map +1 -0
  54. package/dist/services/edgar/filing-to-text.js +38 -0
  55. package/dist/services/edgar/filing-to-text.js.map +1 -0
  56. package/dist/services/edgar/types.d.ts +152 -0
  57. package/dist/services/edgar/types.d.ts.map +1 -0
  58. package/dist/services/edgar/types.js +6 -0
  59. package/dist/services/edgar/types.js.map +1 -0
  60. package/package.json +75 -0
  61. package/server.json +91 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @fileoverview Convert SEC filing HTML to readable plain text.
3
+ * @module services/edgar/filing-to-text
4
+ */
5
+ import { convert } from 'html-to-text';
6
+ const CONVERT_OPTIONS = {
7
+ wordwrap: false,
8
+ selectors: [
9
+ { selector: 'a', options: { ignoreHref: true } },
10
+ { selector: 'img', format: 'skip' },
11
+ { selector: 'table', options: { uppercaseHeaderCells: false } },
12
+ ],
13
+ };
14
+ /** Strip Inline XBRL markup that produces noise in text conversion. */
15
+ function stripInlineXbrl(html) {
16
+ // Remove <ix:header>...</ix:header> block (hidden XBRL metadata, context, references)
17
+ let cleaned = html.replace(/<ix:header\b[\s\S]*?<\/ix:header>/gi, '');
18
+ // Unwrap remaining ix:* tags (nonFraction, nonNumeric, continuation) — keep their text content
19
+ cleaned = cleaned.replace(/<\/?ix:[^>]*>/gi, '');
20
+ return cleaned;
21
+ }
22
+ /** Convert filing HTML to plain text, optionally truncating to a character limit. */
23
+ export function filingToText(html, limit) {
24
+ const full = convert(stripInlineXbrl(html), CONVERT_OPTIONS);
25
+ const totalLength = full.length;
26
+ if (!limit || totalLength <= limit) {
27
+ return { text: full, truncated: false, totalLength };
28
+ }
29
+ // Truncate at a word boundary
30
+ let end = limit;
31
+ while (end > 0 && full[end] !== ' ' && full[end] !== '\n') {
32
+ end--;
33
+ }
34
+ if (end === 0)
35
+ end = limit;
36
+ return { text: full.slice(0, end), truncated: true, totalLength };
37
+ }
38
+ //# sourceMappingURL=filing-to-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filing-to-text.js","sourceRoot":"","sources":["../../../src/services/edgar/filing-to-text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,eAAe,GAAsB;IACzC,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE;QACT,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;QAChD,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QACnC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE;KAChE;CACF,CAAC;AAEF,uEAAuE;AACvE,SAAS,eAAe,CAAC,IAAY;IACnC,sFAAsF;IACtF,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;IACtE,+FAA+F;IAC/F,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,KAAc;IAEd,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAEhC,IAAI,CAAC,KAAK,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACvD,CAAC;IAED,8BAA8B;IAC9B,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,GAAG,EAAE,CAAC;IACR,CAAC;IACD,IAAI,GAAG,KAAK,CAAC;QAAE,GAAG,GAAG,KAAK,CAAC;IAE3B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * @fileoverview Domain types for SEC EDGAR API responses and internal data structures.
3
+ * @module services/edgar/types
4
+ */
5
+ /** CIK resolution result from company_tickers.json lookup. */
6
+ export interface CikMatch {
7
+ cik: string;
8
+ exchange?: string;
9
+ name: string;
10
+ ticker: string;
11
+ }
12
+ /** Raw entry from SEC's company_tickers.json. */
13
+ export interface TickerEntry {
14
+ cik_str: number;
15
+ ticker: string;
16
+ title: string;
17
+ }
18
+ /** Submissions API response (data.sec.gov/submissions/CIK*.json). */
19
+ export interface SubmissionsResponse {
20
+ cik: string;
21
+ entityType: string;
22
+ exchanges: string[];
23
+ filings: {
24
+ recent: FilingsRecent;
25
+ files: Array<{
26
+ name: string;
27
+ filingCount: number;
28
+ filingFrom: string;
29
+ filingTo: string;
30
+ }>;
31
+ };
32
+ fiscalYearEnd: string;
33
+ name: string;
34
+ sic: string;
35
+ sicDescription: string;
36
+ stateOfIncorporation?: string;
37
+ tickers: string[];
38
+ }
39
+ /** Parallel arrays from the submissions API recent filings. */
40
+ export interface FilingsRecent {
41
+ accessionNumber: string[];
42
+ filingDate: string[];
43
+ form: string[];
44
+ primaryDocDescription: string[];
45
+ primaryDocument: string[];
46
+ reportDate: string[];
47
+ }
48
+ /** EFTS full-text search response. */
49
+ export interface EftsResponse {
50
+ aggregations?: {
51
+ form_filter?: {
52
+ buckets: Array<{
53
+ key: string;
54
+ doc_count: number;
55
+ }>;
56
+ };
57
+ };
58
+ hits: {
59
+ hits: EftsHit[];
60
+ total: {
61
+ value: number;
62
+ relation: string;
63
+ };
64
+ };
65
+ query: {
66
+ from: number;
67
+ size: number;
68
+ query: string;
69
+ };
70
+ }
71
+ export interface EftsHit {
72
+ _id: string;
73
+ _source: {
74
+ adsh: string;
75
+ ciks?: string[];
76
+ display_names?: string[];
77
+ file_date: string;
78
+ file_description?: string;
79
+ file_num?: string[];
80
+ file_type?: string;
81
+ film_num?: string[];
82
+ form?: string;
83
+ biz_locations?: string[];
84
+ inc_states?: string[];
85
+ items?: string[];
86
+ period_ending?: string | null;
87
+ root_forms?: string[];
88
+ sequence?: number;
89
+ sics?: string[];
90
+ xsl?: string | null;
91
+ };
92
+ }
93
+ /** Filing index JSON response. */
94
+ export interface FilingIndex {
95
+ directory: {
96
+ name: string;
97
+ item: Array<{
98
+ name: string;
99
+ type: string;
100
+ size: string;
101
+ 'last-modified': string;
102
+ }>;
103
+ };
104
+ }
105
+ /** XBRL companyconcept API response. */
106
+ export interface CompanyConceptResponse {
107
+ cik: number;
108
+ description?: string;
109
+ entityName: string;
110
+ label: string;
111
+ tag: string;
112
+ taxonomy: string;
113
+ units: Record<string, CompanyConceptUnit[]>;
114
+ }
115
+ export interface CompanyConceptUnit {
116
+ accn: string;
117
+ end: string;
118
+ filed: string;
119
+ form: string;
120
+ fp: string;
121
+ frame?: string;
122
+ fy: number;
123
+ start?: string;
124
+ val: number;
125
+ }
126
+ /** XBRL frames API response. */
127
+ export interface FramesResponse {
128
+ ccp: string;
129
+ data: FrameEntry[];
130
+ description?: string;
131
+ label: string;
132
+ pts: number;
133
+ tag: string;
134
+ taxonomy: string;
135
+ uom: string;
136
+ }
137
+ export interface FrameEntry {
138
+ accn: string;
139
+ cik: number;
140
+ end: string;
141
+ entityName: string;
142
+ loc: string;
143
+ val: number;
144
+ }
145
+ /** Friendly concept name mapping. */
146
+ export interface ConceptMapping {
147
+ label: string;
148
+ tags: string[];
149
+ taxonomy: string;
150
+ unit: string;
151
+ }
152
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Domain types for SEC EDGAR API responses and internal data structures.
3
+ * @module services/edgar/types
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/edgar/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@cyanheads/secedgar-mcp-server",
3
+ "version": "0.1.9",
4
+ "description": "Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.",
5
+ "mcpName": "io.github.cyanheads/secedgar-mcp-server",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "bin": {
10
+ "secedgar-mcp-server": "dist/index.js"
11
+ },
12
+ "exports": {
13
+ ".": "./dist/index.js"
14
+ },
15
+ "files": ["dist/", "README.md", "LICENSE", "Dockerfile", "server.json"],
16
+ "scripts": {
17
+ "build": "bun scripts/build.ts",
18
+ "rebuild": "bun scripts/clean.ts && bun scripts/build.ts",
19
+ "clean": "bun scripts/clean.ts",
20
+ "devcheck": "bun scripts/devcheck.ts",
21
+ "tree": "bun scripts/tree.ts",
22
+ "format": "biome check --write --unsafe .",
23
+ "lint:mcp": "bun scripts/lint-mcp.ts",
24
+ "test": "vitest run",
25
+ "dev:stdio": "MCP_TRANSPORT_TYPE=stdio bun --watch src/index.ts",
26
+ "dev:http": "MCP_TRANSPORT_TYPE=http bun --watch src/index.ts",
27
+ "start:stdio": "MCP_TRANSPORT_TYPE=stdio node dist/index.js",
28
+ "start:http": "MCP_TRANSPORT_TYPE=http node dist/index.js"
29
+ },
30
+ "keywords": [
31
+ "mcp",
32
+ "mcp-server",
33
+ "model-context-protocol",
34
+ "sec",
35
+ "edgar",
36
+ "sec-edgar",
37
+ "xbrl",
38
+ "filings",
39
+ "financial-data",
40
+ "typescript"
41
+ ],
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/cyanheads/secedgar-mcp-server.git"
45
+ },
46
+ "homepage": "https://github.com/cyanheads/secedgar-mcp-server#readme",
47
+ "bugs": {
48
+ "url": "https://github.com/cyanheads/secedgar-mcp-server/issues"
49
+ },
50
+ "author": "cyanheads (https://github.com/cyanheads)",
51
+ "license": "Apache-2.0",
52
+ "engines": {
53
+ "node": ">=22.0.0",
54
+ "bun": ">=1.3.0"
55
+ },
56
+ "packageManager": "bun@1.3.11",
57
+ "publishConfig": {
58
+ "access": "public"
59
+ },
60
+ "dependencies": {
61
+ "@cyanheads/mcp-ts-core": "^0.1.28",
62
+ "html-to-text": "^9.0.5",
63
+ "pino-pretty": "^13.1.3"
64
+ },
65
+ "devDependencies": {
66
+ "@biomejs/biome": "^2.4.8",
67
+ "@types/html-to-text": "^9.0.4",
68
+ "@types/node": "^25.5.0",
69
+ "depcheck": "^1.4.7",
70
+ "ignore": "^7.0.5",
71
+ "tsc-alias": "^1.8.16",
72
+ "typescript": "^6.0.2",
73
+ "vitest": "^4.1.1"
74
+ }
75
+ }
package/server.json ADDED
@@ -0,0 +1,91 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.cyanheads/secedgar-mcp-server",
4
+ "description": "Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.",
5
+ "repository": {
6
+ "url": "https://github.com/cyanheads/secedgar-mcp-server",
7
+ "source": "github"
8
+ },
9
+ "version": "0.1.9",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "registryBaseUrl": "https://registry.npmjs.org",
14
+ "identifier": "@cyanheads/secedgar-mcp-server",
15
+ "runtimeHint": "bun",
16
+ "version": "0.1.9",
17
+ "environmentVariables": [
18
+ {
19
+ "name": "EDGAR_USER_AGENT",
20
+ "description": "User-Agent header for SEC compliance. Format: \"AppName contact@email.com\".",
21
+ "format": "string",
22
+ "isRequired": true
23
+ },
24
+ {
25
+ "name": "MCP_LOG_LEVEL",
26
+ "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
27
+ "format": "string",
28
+ "isRequired": false,
29
+ "default": "info"
30
+ }
31
+ ],
32
+ "transport": {
33
+ "type": "stdio"
34
+ }
35
+ },
36
+ {
37
+ "registryType": "npm",
38
+ "registryBaseUrl": "https://registry.npmjs.org",
39
+ "identifier": "@cyanheads/secedgar-mcp-server",
40
+ "runtimeHint": "bun",
41
+ "version": "0.1.9",
42
+ "environmentVariables": [
43
+ {
44
+ "name": "EDGAR_USER_AGENT",
45
+ "description": "User-Agent header for SEC compliance. Format: \"AppName contact@email.com\".",
46
+ "format": "string",
47
+ "isRequired": true
48
+ },
49
+ {
50
+ "name": "MCP_HTTP_HOST",
51
+ "description": "The hostname for the HTTP server.",
52
+ "format": "string",
53
+ "isRequired": false,
54
+ "default": "127.0.0.1"
55
+ },
56
+ {
57
+ "name": "MCP_HTTP_PORT",
58
+ "description": "The port to run the HTTP server on.",
59
+ "format": "string",
60
+ "isRequired": false,
61
+ "default": "3010"
62
+ },
63
+ {
64
+ "name": "MCP_HTTP_ENDPOINT_PATH",
65
+ "description": "The endpoint path for the MCP server.",
66
+ "format": "string",
67
+ "isRequired": false,
68
+ "default": "/mcp"
69
+ },
70
+ {
71
+ "name": "MCP_AUTH_MODE",
72
+ "description": "Authentication mode to use: 'none', 'jwt', or 'oauth'.",
73
+ "format": "string",
74
+ "isRequired": false,
75
+ "default": "none"
76
+ },
77
+ {
78
+ "name": "MCP_LOG_LEVEL",
79
+ "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
80
+ "format": "string",
81
+ "isRequired": false,
82
+ "default": "info"
83
+ }
84
+ ],
85
+ "transport": {
86
+ "type": "streamable-http",
87
+ "url": "http://localhost:3010/mcp"
88
+ }
89
+ }
90
+ ]
91
+ }