company-mcp 0.1.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/dist/index.d.ts +2 -0
- package/dist/index.js +437 -0
- package/dist/index.js.map +1 -0
- package/package.json +41 -0
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* company-mcp -- MCP server for AI agents
|
|
4
|
+
* Company lookup, registry data, LEI search, and SEC filings.
|
|
5
|
+
* All data sources are free and require no API key.
|
|
6
|
+
*
|
|
7
|
+
* Sources: GLEIF (LEI database), SEC EDGAR (US filings + financials)
|
|
8
|
+
*/
|
|
9
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
10
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
const server = new McpServer({
|
|
13
|
+
name: "company-mcp",
|
|
14
|
+
version: "0.1.0",
|
|
15
|
+
});
|
|
16
|
+
const UA = "company-mcp/0.1.0 (contact@radom.group)";
|
|
17
|
+
// -- Helper: fetch with timeout and UA --
|
|
18
|
+
async function fetchJSON(url, timeoutMs = 10000) {
|
|
19
|
+
const resp = await fetch(url, {
|
|
20
|
+
headers: { "User-Agent": UA, Accept: "application/json" },
|
|
21
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
22
|
+
});
|
|
23
|
+
if (!resp.ok) {
|
|
24
|
+
throw new Error(`HTTP ${resp.status}: ${resp.statusText}`);
|
|
25
|
+
}
|
|
26
|
+
return resp.json();
|
|
27
|
+
}
|
|
28
|
+
// -- Helper: search GLEIF with fuzzy matching --
|
|
29
|
+
async function searchGLEIF(name, country) {
|
|
30
|
+
// Try exact legal name first
|
|
31
|
+
let url = `https://api.gleif.org/api/v1/lei-records?filter[entity.legalName]=${encodeURIComponent(name)}&page[size]=10`;
|
|
32
|
+
if (country) {
|
|
33
|
+
url += `&filter[entity.legalAddress.country]=${encodeURIComponent(country.toUpperCase())}`;
|
|
34
|
+
}
|
|
35
|
+
const data = await fetchJSON(url, 15000);
|
|
36
|
+
if (data?.data?.length > 0)
|
|
37
|
+
return data.data;
|
|
38
|
+
// Fallback: fuzzy full-text search
|
|
39
|
+
let fuzzyUrl = `https://api.gleif.org/api/v1/lei-records?filter[fulltext]=${encodeURIComponent(name)}&page[size]=10`;
|
|
40
|
+
if (country) {
|
|
41
|
+
fuzzyUrl += `&filter[entity.legalAddress.country]=${encodeURIComponent(country.toUpperCase())}`;
|
|
42
|
+
}
|
|
43
|
+
const fuzzyData = await fetchJSON(fuzzyUrl, 15000);
|
|
44
|
+
return fuzzyData?.data || [];
|
|
45
|
+
}
|
|
46
|
+
// -- Helper: format GLEIF entity as text lines --
|
|
47
|
+
function formatGLEIFEntity(rec) {
|
|
48
|
+
const entity = rec.attributes?.entity;
|
|
49
|
+
const reg = rec.attributes?.registration;
|
|
50
|
+
const addr = entity?.legalAddress;
|
|
51
|
+
const hqAddr = entity?.headquartersAddress;
|
|
52
|
+
const lines = [];
|
|
53
|
+
lines.push(`${entity?.legalName?.name || "N/A"}`);
|
|
54
|
+
lines.push(` LEI: ${rec.attributes?.lei || rec.id}`);
|
|
55
|
+
lines.push(` Status: ${entity?.status || "N/A"}`);
|
|
56
|
+
lines.push(` Jurisdiction: ${entity?.jurisdiction || "N/A"}`);
|
|
57
|
+
lines.push(` Legal Form: ${entity?.legalForm?.id || "N/A"}`);
|
|
58
|
+
lines.push(` Registration: ${reg?.status || "N/A"}`);
|
|
59
|
+
const addrStr = [addr?.addressLines?.join(", "), addr?.city, addr?.region, addr?.postalCode, addr?.country].filter(Boolean).join(", ");
|
|
60
|
+
lines.push(` Legal Address: ${addrStr || "N/A"}`);
|
|
61
|
+
if (hqAddr) {
|
|
62
|
+
const hqStr = [hqAddr?.addressLines?.join(", "), hqAddr?.city, hqAddr?.region, hqAddr?.postalCode, hqAddr?.country].filter(Boolean).join(", ");
|
|
63
|
+
if (hqStr && hqStr !== addrStr) {
|
|
64
|
+
lines.push(` HQ Address: ${hqStr}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
lines.push(` Registered: ${reg?.initialRegistrationDate?.slice(0, 10) || "N/A"}`);
|
|
68
|
+
lines.push(` Next Renewal: ${reg?.nextRenewalDate?.slice(0, 10) || "N/A"}`);
|
|
69
|
+
// Other names
|
|
70
|
+
if (entity?.otherNames?.length > 0) {
|
|
71
|
+
const others = entity.otherNames.slice(0, 3).map((n) => n.name).join(", ");
|
|
72
|
+
lines.push(` Other Names: ${others}`);
|
|
73
|
+
}
|
|
74
|
+
return lines;
|
|
75
|
+
}
|
|
76
|
+
// -- Tool 1: search_company --
|
|
77
|
+
server.tool("search_company", "Search for a company by name across 200+ jurisdictions (uses GLEIF global LEI database, free, no key)", {
|
|
78
|
+
name: z.string().describe("Company name to search for"),
|
|
79
|
+
jurisdiction: z.string().optional().describe("ISO country code to filter results (e.g. 'DE', 'GB', 'US', 'FR', 'NL')"),
|
|
80
|
+
}, async ({ name, jurisdiction }) => {
|
|
81
|
+
try {
|
|
82
|
+
const records = await searchGLEIF(name, jurisdiction);
|
|
83
|
+
if (records.length === 0) {
|
|
84
|
+
return { content: [{ type: "text", text: `No companies found for "${name}"${jurisdiction ? ` in ${jurisdiction.toUpperCase()}` : ""}.\nTip: Try the full legal name (e.g. "Apple Inc" instead of "Apple").` }] };
|
|
85
|
+
}
|
|
86
|
+
const lines = [
|
|
87
|
+
`Company Search: "${name}"${jurisdiction ? ` (${jurisdiction.toUpperCase()})` : ""}`,
|
|
88
|
+
`===================================`,
|
|
89
|
+
`Showing ${records.length} results:`,
|
|
90
|
+
``,
|
|
91
|
+
];
|
|
92
|
+
for (const rec of records) {
|
|
93
|
+
lines.push(...formatGLEIFEntity(rec));
|
|
94
|
+
lines.push(``);
|
|
95
|
+
}
|
|
96
|
+
lines.push(`Source: GLEIF Global LEI Database (gleif.org)`);
|
|
97
|
+
lines.push(`Note: Results limited to entities with an LEI. Use search_lei for detailed LEI data.`);
|
|
98
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
return { content: [{ type: "text", text: `Company search failed: ${e.message}` }], isError: true };
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
// -- Tool 2: get_company_details --
|
|
105
|
+
server.tool("get_company_details", "Get detailed company info by LEI code or by jurisdiction + company number (via GLEIF)", {
|
|
106
|
+
lei: z.string().optional().describe("LEI code (20-character alphanumeric). Preferred lookup method."),
|
|
107
|
+
jurisdiction: z.string().optional().describe("Jurisdiction/country code (e.g. 'DE', 'GB'). Used with company_number."),
|
|
108
|
+
company_number: z.string().optional().describe("Company registration number (e.g. 'HRB 12345'). Used with jurisdiction."),
|
|
109
|
+
}, async ({ lei, jurisdiction, company_number }) => {
|
|
110
|
+
try {
|
|
111
|
+
let records = [];
|
|
112
|
+
if (lei) {
|
|
113
|
+
// Direct LEI lookup
|
|
114
|
+
const url = `https://api.gleif.org/api/v1/lei-records/${encodeURIComponent(lei)}`;
|
|
115
|
+
const data = await fetchJSON(url, 15000);
|
|
116
|
+
if (data?.data)
|
|
117
|
+
records = [data.data];
|
|
118
|
+
}
|
|
119
|
+
else if (jurisdiction && company_number) {
|
|
120
|
+
// Search by registration number
|
|
121
|
+
const url = `https://api.gleif.org/api/v1/lei-records?filter[entity.registeredAs]=${encodeURIComponent(company_number)}&filter[entity.legalAddress.country]=${encodeURIComponent(jurisdiction.toUpperCase())}&page[size]=5`;
|
|
122
|
+
const data = await fetchJSON(url, 15000);
|
|
123
|
+
records = data?.data || [];
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
return { content: [{ type: "text", text: `Please provide either an LEI code, or both jurisdiction and company_number.` }], isError: true };
|
|
127
|
+
}
|
|
128
|
+
if (records.length === 0) {
|
|
129
|
+
return { content: [{ type: "text", text: `No company found.${lei ? ` LEI: ${lei}` : ` ${jurisdiction}/${company_number}`}` }] };
|
|
130
|
+
}
|
|
131
|
+
const rec = records[0];
|
|
132
|
+
const entity = rec.attributes?.entity;
|
|
133
|
+
const reg = rec.attributes?.registration;
|
|
134
|
+
const lines = [
|
|
135
|
+
`${entity?.legalName?.name || "N/A"}`,
|
|
136
|
+
`===================================`,
|
|
137
|
+
];
|
|
138
|
+
lines.push(...formatGLEIFEntity(rec));
|
|
139
|
+
// Additional details for single entity view
|
|
140
|
+
lines.push(``);
|
|
141
|
+
lines.push(`Registration Details:`);
|
|
142
|
+
lines.push(` Registration Authority: ${entity?.registrationAuthority?.id || "N/A"}`);
|
|
143
|
+
lines.push(` Registered As: ${entity?.registeredAs || "N/A"}`);
|
|
144
|
+
lines.push(` Entity Category: ${entity?.category || "N/A"}`);
|
|
145
|
+
lines.push(` Managing LOU: ${reg?.managingLou || "N/A"}`);
|
|
146
|
+
lines.push(` Validation Source: ${reg?.validationSources || "N/A"}`);
|
|
147
|
+
lines.push(` Last Update: ${reg?.lastUpdateDate?.slice(0, 10) || "N/A"}`);
|
|
148
|
+
// Try to get relationship data
|
|
149
|
+
try {
|
|
150
|
+
const relUrl = `https://api.gleif.org/api/v1/lei-records/${rec.attributes?.lei || rec.id}/direct-parent-relationship`;
|
|
151
|
+
const relData = await fetchJSON(relUrl, 5000);
|
|
152
|
+
if (relData?.data?.attributes?.relationship?.startNode?.id) {
|
|
153
|
+
lines.push(``);
|
|
154
|
+
lines.push(`Parent Entity:`);
|
|
155
|
+
const parentLei = relData.data.attributes.relationship.endNode?.id;
|
|
156
|
+
if (parentLei) {
|
|
157
|
+
try {
|
|
158
|
+
const parentData = await fetchJSON(`https://api.gleif.org/api/v1/lei-records/${parentLei}`, 5000);
|
|
159
|
+
const parentName = parentData?.data?.attributes?.entity?.legalName?.name;
|
|
160
|
+
lines.push(` ${parentName || "N/A"} (LEI: ${parentLei})`);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
lines.push(` LEI: ${parentLei}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// No parent relationship data available
|
|
170
|
+
}
|
|
171
|
+
lines.push(``);
|
|
172
|
+
lines.push(`Source: GLEIF Global LEI Database`);
|
|
173
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
return { content: [{ type: "text", text: `Company details failed: ${e.message}` }], isError: true };
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
// -- Tool 3: search_lei --
|
|
180
|
+
server.tool("search_lei", "Search GLEIF for Legal Entity Identifiers (LEI) by company name. Returns LEI codes, registration status, and entity details.", {
|
|
181
|
+
name: z.string().describe("Legal entity name to search for"),
|
|
182
|
+
}, async ({ name }) => {
|
|
183
|
+
try {
|
|
184
|
+
const records = await searchGLEIF(name);
|
|
185
|
+
if (records.length === 0) {
|
|
186
|
+
return { content: [{ type: "text", text: `No LEI records found for "${name}".` }] };
|
|
187
|
+
}
|
|
188
|
+
const lines = [
|
|
189
|
+
`LEI Search: "${name}"`,
|
|
190
|
+
`===================================`,
|
|
191
|
+
`Found ${records.length} results:`,
|
|
192
|
+
``,
|
|
193
|
+
];
|
|
194
|
+
for (const rec of records) {
|
|
195
|
+
lines.push(...formatGLEIFEntity(rec));
|
|
196
|
+
lines.push(``);
|
|
197
|
+
}
|
|
198
|
+
lines.push(`Source: GLEIF (gleif.org)`);
|
|
199
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
return { content: [{ type: "text", text: `LEI search failed: ${e.message}` }], isError: true };
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
// -- Tool 4: search_sec_filings --
|
|
206
|
+
server.tool("search_sec_filings", "Search SEC EDGAR for US company filings (10-K, 10-Q, 8-K, S-1, etc.)", {
|
|
207
|
+
company: z.string().describe("Company name or CIK number"),
|
|
208
|
+
filing_type: z.string().optional().describe("Filing type filter: '10-K' (annual), '10-Q' (quarterly), '8-K' (current), 'S-1' (IPO)"),
|
|
209
|
+
}, async ({ company, filing_type }) => {
|
|
210
|
+
try {
|
|
211
|
+
let url = `https://efts.sec.gov/LATEST/search-index?q=${encodeURIComponent(company)}&dateRange=custom&startdt=2024-01-01&from=0&size=15`;
|
|
212
|
+
if (filing_type) {
|
|
213
|
+
url += `&forms=${encodeURIComponent(filing_type)}`;
|
|
214
|
+
}
|
|
215
|
+
const data = await fetchJSON(url, 15000);
|
|
216
|
+
const hits = data?.hits?.hits;
|
|
217
|
+
if (!hits || hits.length === 0) {
|
|
218
|
+
// Fallback: no date filter
|
|
219
|
+
let url2 = `https://efts.sec.gov/LATEST/search-index?q=${encodeURIComponent(company)}&from=0&size=15`;
|
|
220
|
+
if (filing_type)
|
|
221
|
+
url2 += `&forms=${encodeURIComponent(filing_type)}`;
|
|
222
|
+
const data2 = await fetchJSON(url2, 15000);
|
|
223
|
+
const hits2 = data2?.hits?.hits;
|
|
224
|
+
if (!hits2 || hits2.length === 0) {
|
|
225
|
+
return { content: [{ type: "text", text: `No SEC filings found for "${company}"${filing_type ? ` (type: ${filing_type})` : ""}.` }] };
|
|
226
|
+
}
|
|
227
|
+
return formatSECResults(company, filing_type, hits2);
|
|
228
|
+
}
|
|
229
|
+
return formatSECResults(company, filing_type, hits);
|
|
230
|
+
}
|
|
231
|
+
catch (e) {
|
|
232
|
+
return { content: [{ type: "text", text: `SEC filing search failed: ${e.message}` }], isError: true };
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
function formatSECResults(company, filing_type, hits) {
|
|
236
|
+
const lines = [
|
|
237
|
+
`SEC Filings: "${company}"${filing_type ? ` (${filing_type})` : ""}`,
|
|
238
|
+
`===================================`,
|
|
239
|
+
``,
|
|
240
|
+
];
|
|
241
|
+
for (const hit of hits.slice(0, 10)) {
|
|
242
|
+
const src = hit._source || hit;
|
|
243
|
+
const form = src.form_type || src.file_type || "N/A";
|
|
244
|
+
const name = src.entity_name || src.display_names?.[0] || "N/A";
|
|
245
|
+
const date = src.file_date || src.period_of_report || "N/A";
|
|
246
|
+
const cik = src.entity_id || src.ciks?.[0] || "N/A";
|
|
247
|
+
const desc = src.file_description || "";
|
|
248
|
+
const accession = src.accession_no || src.adsh || "";
|
|
249
|
+
const link = accession
|
|
250
|
+
? `https://www.sec.gov/Archives/edgar/data/${String(cik).replace(/^0+/, "")}/${accession.replace(/-/g, "")}/${accession}-index.htm`
|
|
251
|
+
: "N/A";
|
|
252
|
+
lines.push(`${form} -- ${name}`);
|
|
253
|
+
lines.push(` Filed: ${date}`);
|
|
254
|
+
lines.push(` CIK: ${cik}`);
|
|
255
|
+
if (desc)
|
|
256
|
+
lines.push(` Description: ${desc}`);
|
|
257
|
+
lines.push(` Filing: ${link}`);
|
|
258
|
+
lines.push(``);
|
|
259
|
+
}
|
|
260
|
+
lines.push(`Source: SEC EDGAR (sec.gov)`);
|
|
261
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
262
|
+
}
|
|
263
|
+
// -- Tool 5: get_company_financials --
|
|
264
|
+
server.tool("get_company_financials", "Get US public company financials (revenue, income, assets) from SEC XBRL data", {
|
|
265
|
+
ticker: z.string().describe("US stock ticker symbol (e.g. 'AAPL', 'MSFT', 'GOOG')"),
|
|
266
|
+
}, async ({ ticker }) => {
|
|
267
|
+
try {
|
|
268
|
+
const tickerUpper = ticker.toUpperCase();
|
|
269
|
+
const tickersUrl = "https://www.sec.gov/files/company_tickers.json";
|
|
270
|
+
const tickersData = await fetchJSON(tickersUrl, 15000);
|
|
271
|
+
let cik = null;
|
|
272
|
+
let companyName = "";
|
|
273
|
+
for (const key of Object.keys(tickersData)) {
|
|
274
|
+
if (tickersData[key].ticker === tickerUpper) {
|
|
275
|
+
cik = String(tickersData[key].cik_str).padStart(10, "0");
|
|
276
|
+
companyName = tickersData[key].title;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (!cik) {
|
|
281
|
+
return { content: [{ type: "text", text: `Ticker "${tickerUpper}" not found in SEC database.` }], isError: true };
|
|
282
|
+
}
|
|
283
|
+
const factsUrl = `https://data.sec.gov/api/xbrl/companyfacts/CIK${cik}.json`;
|
|
284
|
+
const facts = await fetchJSON(factsUrl, 15000);
|
|
285
|
+
const lines = [
|
|
286
|
+
`${companyName} (${tickerUpper})`,
|
|
287
|
+
`===================================`,
|
|
288
|
+
`CIK: ${cik}`,
|
|
289
|
+
``,
|
|
290
|
+
];
|
|
291
|
+
const usGaap = facts?.facts?.["us-gaap"];
|
|
292
|
+
if (!usGaap) {
|
|
293
|
+
lines.push(`No US-GAAP data available.`);
|
|
294
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
295
|
+
}
|
|
296
|
+
const metrics = [
|
|
297
|
+
{ label: "Revenue", keys: ["Revenues", "RevenueFromContractWithCustomerExcludingAssessedTax", "SalesRevenueNet", "RevenueFromContractWithCustomerIncludingAssessedTax"] },
|
|
298
|
+
{ label: "Net Income", keys: ["NetIncomeLoss", "ProfitLoss"] },
|
|
299
|
+
{ label: "Total Assets", keys: ["Assets"] },
|
|
300
|
+
{ label: "Total Liabilities", keys: ["Liabilities"] },
|
|
301
|
+
{ label: "Operating Income", keys: ["OperatingIncomeLoss"] },
|
|
302
|
+
{ label: "Cash & Equivalents", keys: ["CashAndCashEquivalentsAtCarryingValue", "CashCashEquivalentsAndShortTermInvestments"] },
|
|
303
|
+
];
|
|
304
|
+
for (const metric of metrics) {
|
|
305
|
+
for (const key of metric.keys) {
|
|
306
|
+
if (usGaap[key]?.units?.USD) {
|
|
307
|
+
const entries = usGaap[key].units.USD
|
|
308
|
+
.filter((e) => e.form === "10-K" && e.fp === "FY")
|
|
309
|
+
.sort((a, b) => (b.end || "").localeCompare(a.end || ""))
|
|
310
|
+
.slice(0, 3);
|
|
311
|
+
if (entries.length > 0) {
|
|
312
|
+
lines.push(`${metric.label}:`);
|
|
313
|
+
for (const e of entries) {
|
|
314
|
+
const val = e.val;
|
|
315
|
+
const formatted = Math.abs(val) >= 1e9
|
|
316
|
+
? `$${(val / 1e9).toFixed(2)}B`
|
|
317
|
+
: Math.abs(val) >= 1e6
|
|
318
|
+
? `$${(val / 1e6).toFixed(1)}M`
|
|
319
|
+
: `$${val.toLocaleString()}`;
|
|
320
|
+
lines.push(` ${e.fy || e.end?.slice(0, 4) || "?"}: ${formatted} (filed ${e.filed || "N/A"})`);
|
|
321
|
+
}
|
|
322
|
+
lines.push(``);
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
lines.push(`Source: SEC EDGAR XBRL (data.sec.gov)`);
|
|
329
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
330
|
+
}
|
|
331
|
+
catch (e) {
|
|
332
|
+
return { content: [{ type: "text", text: `Financials failed: ${e.message}` }], isError: true };
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
// -- Tool 6: check_company_status --
|
|
336
|
+
server.tool("check_company_status", "Quick company status check -- is it active? Any red flags? Searches GLEIF LEI database.", {
|
|
337
|
+
name: z.string().describe("Company name to check"),
|
|
338
|
+
country: z.string().optional().describe("ISO country code (e.g. 'DE', 'GB', 'US', 'FR')"),
|
|
339
|
+
}, async ({ name, country }) => {
|
|
340
|
+
try {
|
|
341
|
+
const records = await searchGLEIF(name, country);
|
|
342
|
+
if (records.length === 0) {
|
|
343
|
+
return { content: [{ type: "text", text: `No company found for "${name}"${country ? ` in ${country.toUpperCase()}` : ""}. Unable to verify status.\nTip: Try the full legal name. Only entities with an LEI are searchable.` }] };
|
|
344
|
+
}
|
|
345
|
+
const rec = records[0];
|
|
346
|
+
const entity = rec.attributes?.entity;
|
|
347
|
+
const reg = rec.attributes?.registration;
|
|
348
|
+
const entityStatus = (entity?.status || "unknown").toUpperCase();
|
|
349
|
+
const regStatus = (reg?.status || "unknown").toUpperCase();
|
|
350
|
+
const addr = entity?.legalAddress;
|
|
351
|
+
const regDate = reg?.initialRegistrationDate?.slice(0, 10);
|
|
352
|
+
const renewalDate = reg?.nextRenewalDate?.slice(0, 10);
|
|
353
|
+
const isActive = entityStatus === "ACTIVE";
|
|
354
|
+
const isLapsed = regStatus === "LAPSED";
|
|
355
|
+
let summary = "";
|
|
356
|
+
if (isActive && !isLapsed) {
|
|
357
|
+
summary = "Entity is ACTIVE with a valid LEI registration.";
|
|
358
|
+
}
|
|
359
|
+
else if (isActive && isLapsed) {
|
|
360
|
+
summary = "Entity is ACTIVE but LEI registration has LAPSED -- may need renewal.";
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
summary = `Entity status: ${entityStatus}. Registration: ${regStatus}. Verify with official registry.`;
|
|
364
|
+
}
|
|
365
|
+
const flags = [];
|
|
366
|
+
if (!isActive)
|
|
367
|
+
flags.push(`Entity status is ${entityStatus} (not active)`);
|
|
368
|
+
if (isLapsed)
|
|
369
|
+
flags.push("LEI registration has lapsed");
|
|
370
|
+
if (renewalDate && new Date(renewalDate) < new Date())
|
|
371
|
+
flags.push("LEI renewal date has passed");
|
|
372
|
+
if (!addr?.addressLines?.length && !addr?.city)
|
|
373
|
+
flags.push("No address on file");
|
|
374
|
+
const addrStr = [addr?.addressLines?.join(", "), addr?.city, addr?.region, addr?.postalCode, addr?.country].filter(Boolean).join(", ");
|
|
375
|
+
const lines = [
|
|
376
|
+
`Company Status Check: ${entity?.legalName?.name || name}`,
|
|
377
|
+
`===================================`,
|
|
378
|
+
`Entity Status: ${entityStatus}`,
|
|
379
|
+
`LEI Status: ${regStatus}`,
|
|
380
|
+
`LEI: ${rec.attributes?.lei || rec.id}`,
|
|
381
|
+
`Jurisdiction: ${entity?.jurisdiction || "N/A"}`,
|
|
382
|
+
`Legal Form: ${entity?.legalForm?.id || "N/A"}`,
|
|
383
|
+
`Address: ${addrStr || "N/A"}`,
|
|
384
|
+
`First Registered: ${regDate || "N/A"}`,
|
|
385
|
+
`Next Renewal: ${renewalDate || "N/A"}`,
|
|
386
|
+
``,
|
|
387
|
+
`Summary: ${summary}`,
|
|
388
|
+
];
|
|
389
|
+
if (flags.length > 0) {
|
|
390
|
+
lines.push(``);
|
|
391
|
+
lines.push(`Flags:`);
|
|
392
|
+
for (const f of flags) {
|
|
393
|
+
lines.push(` - ${f}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
if (records.length > 1) {
|
|
397
|
+
lines.push(``);
|
|
398
|
+
lines.push(`Other matches (${records.length - 1} more):`);
|
|
399
|
+
for (const r of records.slice(1, 4)) {
|
|
400
|
+
const e = r.attributes?.entity;
|
|
401
|
+
lines.push(` - ${e?.legalName?.name || "N/A"} (${e?.jurisdiction || "?"}, ${e?.status || "?"})`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
lines.push(``);
|
|
405
|
+
lines.push(`Source: GLEIF Global LEI Database`);
|
|
406
|
+
lines.push(`Note: This checks LEI status. For full legal status, verify with the official company registry.`);
|
|
407
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
408
|
+
}
|
|
409
|
+
catch (e) {
|
|
410
|
+
return { content: [{ type: "text", text: `Status check failed: ${e.message}` }], isError: true };
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
// -- Telemetry (anonymous startup ping) --
|
|
414
|
+
async function pingTelemetry() {
|
|
415
|
+
try {
|
|
416
|
+
await fetch("https://radom.group/company-ping", {
|
|
417
|
+
method: "GET",
|
|
418
|
+
headers: { "User-Agent": UA },
|
|
419
|
+
signal: AbortSignal.timeout(3000),
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
catch {
|
|
423
|
+
// Silent fail -- telemetry is optional
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
// -- Start server --
|
|
427
|
+
async function main() {
|
|
428
|
+
const transport = new StdioServerTransport();
|
|
429
|
+
await server.connect(transport);
|
|
430
|
+
console.error("company-mcp server running on stdio");
|
|
431
|
+
pingTelemetry();
|
|
432
|
+
}
|
|
433
|
+
main().catch((e) => {
|
|
434
|
+
console.error("Fatal:", e);
|
|
435
|
+
process.exit(1);
|
|
436
|
+
});
|
|
437
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "company-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for AI agents \u00e2\u20ac\u201d company lookup, registry data, LEI search, and SEC filings. Free, no API key.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"company-mcp": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsx src/index.ts",
|
|
13
|
+
"start": "node dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"mcp",
|
|
17
|
+
"company",
|
|
18
|
+
"business",
|
|
19
|
+
"registry",
|
|
20
|
+
"lei",
|
|
21
|
+
"sec",
|
|
22
|
+
"corporate",
|
|
23
|
+
"due-diligence",
|
|
24
|
+
"ai-agent"
|
|
25
|
+
],
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"README.md",
|
|
29
|
+
"package.json"
|
|
30
|
+
],
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
34
|
+
"zod": "^4.3.6"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^25.5.0",
|
|
38
|
+
"tsx": "^4.21.0",
|
|
39
|
+
"typescript": "^6.0.2"
|
|
40
|
+
}
|
|
41
|
+
}
|