fda-mcp-server 0.0.12 → 0.0.14
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/README.md +25 -18
- package/dist/index.js +429 -400
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,13 +40,11 @@ The enriched tools are powered by 1,047 classified warning letters, 6,714 Form 4
|
|
|
40
40
|
|
|
41
41
|
## Setup
|
|
42
42
|
|
|
43
|
-
###
|
|
43
|
+
### Free (local, no account needed)
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
Runs locally via npx. No API key, no account, no server.
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Add to your Claude Desktop config (`Settings → Developer → Edit Config`):
|
|
47
|
+
**Claude Desktop** — add to `Settings > Developer > Edit Config`:
|
|
50
48
|
|
|
51
49
|
```json
|
|
52
50
|
{
|
|
@@ -59,37 +57,46 @@ Add to your Claude Desktop config (`Settings → Developer → Edit Config`):
|
|
|
59
57
|
}
|
|
60
58
|
```
|
|
61
59
|
|
|
62
|
-
|
|
60
|
+
**Claude Code:**
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
claude mcp add fda -- npx -y fda-mcp-server
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Restart your client. You should see `search_recalls`, `search_device_events`, and `company_enforcement_profile`.
|
|
67
|
+
|
|
68
|
+
### Pro (hosted, all 6 tools)
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
Get an API key at [fda-mcp.jasencarroll.com](https://fda-mcp.jasencarroll.com). Pro connects to the hosted server over HTTP — no npm install needed.
|
|
65
71
|
|
|
66
|
-
|
|
72
|
+
**Claude Desktop** — add to `Settings > Developer > Edit Config`:
|
|
67
73
|
|
|
68
74
|
```json
|
|
69
75
|
{
|
|
70
76
|
"mcpServers": {
|
|
71
77
|
"fda": {
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
78
|
+
"type": "streamable-http",
|
|
79
|
+
"url": "https://fda-mcp-server.jasencarroll.com/mcp",
|
|
80
|
+
"headers": {
|
|
81
|
+
"Authorization": "Bearer fda_live_your-key-here"
|
|
76
82
|
}
|
|
77
83
|
}
|
|
78
84
|
}
|
|
79
85
|
}
|
|
80
86
|
```
|
|
81
87
|
|
|
82
|
-
|
|
88
|
+
**Claude Code:**
|
|
83
89
|
|
|
84
90
|
```bash
|
|
85
|
-
claude mcp add fda --
|
|
91
|
+
claude mcp add fda --transport http https://fda-mcp-server.jasencarroll.com/mcp --header "Authorization: Bearer fda_live_your-key-here"
|
|
86
92
|
```
|
|
87
93
|
|
|
88
|
-
|
|
94
|
+
### Any MCP client
|
|
89
95
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
The server supports two transports:
|
|
97
|
+
|
|
98
|
+
- **stdio** (free tools): `npx fda-mcp-server` — standard MCP stdio transport
|
|
99
|
+
- **HTTP** (all tools): `POST https://fda-mcp-server.jasencarroll.com/mcp` — Streamable HTTP transport with `Authorization: Bearer` header
|
|
93
100
|
|
|
94
101
|
## Data Sources
|
|
95
102
|
|
package/dist/index.js
CHANGED
|
@@ -15,10 +15,16 @@ import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/
|
|
|
15
15
|
import { z } from "zod";
|
|
16
16
|
import { searchEnforcement, searchDeviceEvents } from "./fda-client.js";
|
|
17
17
|
import { isEnrichedAvailable, validateApiKey, testConnection, csaRiskAssessment, citationAnalysis, supplierQualification, companyEnrichedProfile, } from "./db.js";
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
function createServer() {
|
|
19
|
+
const server = new McpServer({
|
|
20
|
+
name: "fda-mcp-server",
|
|
21
|
+
version: "1.0.0",
|
|
22
|
+
});
|
|
23
|
+
registerTools(server);
|
|
24
|
+
return server;
|
|
25
|
+
}
|
|
26
|
+
// Single server instance for stdio mode
|
|
27
|
+
let stdioServer = null;
|
|
22
28
|
// ─── Helper: gate enriched tools ─────────────────────────────────────────────
|
|
23
29
|
function enrichedGate(apiKey) {
|
|
24
30
|
if (!isEnrichedAvailable()) {
|
|
@@ -56,431 +62,433 @@ async function enrichedConnectionGate(apiKey) {
|
|
|
56
62
|
}
|
|
57
63
|
return { ok: true };
|
|
58
64
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const lines = [
|
|
83
|
-
`## FDA Recalls`,
|
|
84
|
-
`**${result.total} total** | Showing ${result.records.length}`,
|
|
85
|
-
``,
|
|
86
|
-
];
|
|
87
|
-
for (const rec of result.records) {
|
|
88
|
-
lines.push(`### ${rec.recalling_firm} — ${rec.recall_number}`);
|
|
89
|
-
lines.push(`- **${rec.classification}** | ${rec.status} | ${rec.product_type} | ${rec.voluntary_mandated}`);
|
|
90
|
-
lines.push(`- **Location:** ${[rec.city, rec.state, rec.country].filter(Boolean).join(", ")}`);
|
|
91
|
-
lines.push(`- **Initiated:** ${rec.recall_initiation_date}`);
|
|
92
|
-
lines.push(`- **Reason:** ${rec.reason_for_recall}`);
|
|
93
|
-
if (rec.product_description) {
|
|
94
|
-
const desc = rec.product_description.length > 200
|
|
95
|
-
? rec.product_description.substring(0, 200) + "..."
|
|
96
|
-
: rec.product_description;
|
|
97
|
-
lines.push(`- **Product:** ${desc}`);
|
|
65
|
+
function registerTools(server) {
|
|
66
|
+
// ─── Tool: search_recalls ────────────────────────────────────────────────────
|
|
67
|
+
server.tool("search_recalls", "Search FDA recalls and enforcement actions via the openFDA API. Covers drugs, devices, and food. Filter by severity, firm, state, or date range.", {
|
|
68
|
+
search: z.string().optional().describe("Free-text search across all recall fields"),
|
|
69
|
+
product_type: z
|
|
70
|
+
.enum(["drug", "device", "food"])
|
|
71
|
+
.optional()
|
|
72
|
+
.describe("Product type (default: drug)"),
|
|
73
|
+
classification: z
|
|
74
|
+
.enum(["Class I", "Class II", "Class III"])
|
|
75
|
+
.optional()
|
|
76
|
+
.describe("Recall classification (I = most serious)"),
|
|
77
|
+
recalling_firm: z.string().optional().describe("Filter by recalling firm name"),
|
|
78
|
+
state: z.string().optional().describe("Filter by US state (two-letter code)"),
|
|
79
|
+
date_from: z.string().optional().describe("Start date (YYYY-MM-DD)"),
|
|
80
|
+
date_to: z.string().optional().describe("End date (YYYY-MM-DD)"),
|
|
81
|
+
limit: z.number().min(1).max(100).optional().describe("Max results (default 25, max 100)"),
|
|
82
|
+
skip: z.number().min(0).optional().describe("Pagination offset (default 0)"),
|
|
83
|
+
}, async (params) => {
|
|
84
|
+
try {
|
|
85
|
+
const result = await searchEnforcement(params);
|
|
86
|
+
if (result.records.length === 0) {
|
|
87
|
+
return { content: [{ type: "text", text: "No recalls found." }] };
|
|
98
88
|
}
|
|
99
|
-
lines
|
|
89
|
+
const lines = [
|
|
90
|
+
`## FDA Recalls`,
|
|
91
|
+
`**${result.total} total** | Showing ${result.records.length}`,
|
|
92
|
+
``,
|
|
93
|
+
];
|
|
94
|
+
for (const rec of result.records) {
|
|
95
|
+
lines.push(`### ${rec.recalling_firm} — ${rec.recall_number}`);
|
|
96
|
+
lines.push(`- **${rec.classification}** | ${rec.status} | ${rec.product_type} | ${rec.voluntary_mandated}`);
|
|
97
|
+
lines.push(`- **Location:** ${[rec.city, rec.state, rec.country].filter(Boolean).join(", ")}`);
|
|
98
|
+
lines.push(`- **Initiated:** ${rec.recall_initiation_date}`);
|
|
99
|
+
lines.push(`- **Reason:** ${rec.reason_for_recall}`);
|
|
100
|
+
if (rec.product_description) {
|
|
101
|
+
const desc = rec.product_description.length > 200
|
|
102
|
+
? rec.product_description.substring(0, 200) + "..."
|
|
103
|
+
: rec.product_description;
|
|
104
|
+
lines.push(`- **Product:** ${desc}`);
|
|
105
|
+
}
|
|
106
|
+
lines.push(``);
|
|
107
|
+
}
|
|
108
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
100
109
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
isError: true,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
// ─── Tool: search_device_events ──────────────────────────────────────────────
|
|
116
|
-
server.tool("search_device_events", "Search FDA device adverse events from the MAUDE database. Returns manufacturer, device, event type, patient outcomes, and narrative descriptions. Use this to assess post-market safety signals.", {
|
|
117
|
-
search: z.string().optional().describe("Free-text search across event fields"),
|
|
118
|
-
manufacturer: z.string().optional().describe("Filter by device manufacturer name"),
|
|
119
|
-
brand_name: z.string().optional().describe("Filter by device brand name"),
|
|
120
|
-
event_type: z
|
|
121
|
-
.enum(["Injury", "Malfunction", "Death", "Other"])
|
|
122
|
-
.optional()
|
|
123
|
-
.describe("Filter by event type"),
|
|
124
|
-
date_from: z.string().optional().describe("Start date (YYYY-MM-DD)"),
|
|
125
|
-
date_to: z.string().optional().describe("End date (YYYY-MM-DD)"),
|
|
126
|
-
limit: z.number().min(1).max(100).optional().describe("Max results (default 25, max 100)"),
|
|
127
|
-
skip: z.number().min(0).optional().describe("Pagination offset (default 0)"),
|
|
128
|
-
}, async (params) => {
|
|
129
|
-
try {
|
|
130
|
-
const result = await searchDeviceEvents(params);
|
|
131
|
-
if (result.events.length === 0) {
|
|
132
|
-
return { content: [{ type: "text", text: "No device adverse events found." }] };
|
|
110
|
+
catch (error) {
|
|
111
|
+
return {
|
|
112
|
+
content: [
|
|
113
|
+
{
|
|
114
|
+
type: "text",
|
|
115
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
isError: true,
|
|
119
|
+
};
|
|
133
120
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
121
|
+
});
|
|
122
|
+
// ─── Tool: search_device_events ──────────────────────────────────────────────
|
|
123
|
+
server.tool("search_device_events", "Search FDA device adverse events from the MAUDE database. Returns manufacturer, device, event type, patient outcomes, and narrative descriptions. Use this to assess post-market safety signals.", {
|
|
124
|
+
search: z.string().optional().describe("Free-text search across event fields"),
|
|
125
|
+
manufacturer: z.string().optional().describe("Filter by device manufacturer name"),
|
|
126
|
+
brand_name: z.string().optional().describe("Filter by device brand name"),
|
|
127
|
+
event_type: z
|
|
128
|
+
.enum(["Injury", "Malfunction", "Death", "Other"])
|
|
129
|
+
.optional()
|
|
130
|
+
.describe("Filter by event type"),
|
|
131
|
+
date_from: z.string().optional().describe("Start date (YYYY-MM-DD)"),
|
|
132
|
+
date_to: z.string().optional().describe("End date (YYYY-MM-DD)"),
|
|
133
|
+
limit: z.number().min(1).max(100).optional().describe("Max results (default 25, max 100)"),
|
|
134
|
+
skip: z.number().min(0).optional().describe("Pagination offset (default 0)"),
|
|
135
|
+
}, async (params) => {
|
|
136
|
+
try {
|
|
137
|
+
const result = await searchDeviceEvents(params);
|
|
138
|
+
if (result.events.length === 0) {
|
|
139
|
+
return { content: [{ type: "text", text: "No device adverse events found." }] };
|
|
151
140
|
}
|
|
152
|
-
lines
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
{
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
product_type: z
|
|
172
|
-
.enum(["drug", "device", "food"])
|
|
173
|
-
.optional()
|
|
174
|
-
.describe("Product type for recall search (default: device)"),
|
|
175
|
-
}, async (params, extra) => {
|
|
176
|
-
try {
|
|
177
|
-
// Always fetch live openFDA data
|
|
178
|
-
const [recalls, events] = await Promise.all([
|
|
179
|
-
searchEnforcement({
|
|
180
|
-
recalling_firm: params.company_name,
|
|
181
|
-
product_type: params.product_type ?? "device",
|
|
182
|
-
limit: 5,
|
|
183
|
-
}).catch(() => ({ total: 0, records: [] })),
|
|
184
|
-
searchDeviceEvents({
|
|
185
|
-
manufacturer: params.company_name,
|
|
186
|
-
limit: 5,
|
|
187
|
-
}).catch(() => ({ total: 0, events: [] })),
|
|
188
|
-
]);
|
|
189
|
-
// Fetch enriched data if available and authorized
|
|
190
|
-
let enriched = null;
|
|
191
|
-
const authCheck = enrichedGate(extra.authInfo?.token);
|
|
192
|
-
if (authCheck.ok) {
|
|
193
|
-
const connected = await testConnection().catch(() => false);
|
|
194
|
-
if (connected) {
|
|
195
|
-
enriched = await companyEnrichedProfile(params.company_name).catch(() => null);
|
|
141
|
+
const lines = [
|
|
142
|
+
`## FDA Device Adverse Events (MAUDE)`,
|
|
143
|
+
`**${result.total} total** | Showing ${result.events.length}`,
|
|
144
|
+
``,
|
|
145
|
+
];
|
|
146
|
+
for (const evt of result.events) {
|
|
147
|
+
lines.push(`### ${evt.manufacturer || "Unknown"} — ${evt.report_number}`);
|
|
148
|
+
lines.push(`- **Event Type:** ${evt.event_type}`);
|
|
149
|
+
lines.push(`- **Device:** ${evt.brand_name || evt.device_name} (${evt.device_name})`);
|
|
150
|
+
lines.push(`- **Date Received:** ${evt.date_received}`);
|
|
151
|
+
if (evt.date_of_event)
|
|
152
|
+
lines.push(`- **Date of Event:** ${evt.date_of_event}`);
|
|
153
|
+
if (evt.event_description) {
|
|
154
|
+
const desc = evt.event_description.length > 300
|
|
155
|
+
? evt.event_description.substring(0, 300) + "..."
|
|
156
|
+
: evt.event_description;
|
|
157
|
+
lines.push(`- **Description:** ${desc}`);
|
|
158
|
+
}
|
|
159
|
+
lines.push(``);
|
|
196
160
|
}
|
|
161
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
197
162
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
163
|
+
catch (error) {
|
|
164
|
+
return {
|
|
165
|
+
content: [
|
|
166
|
+
{
|
|
167
|
+
type: "text",
|
|
168
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
isError: true,
|
|
172
|
+
};
|
|
206
173
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
174
|
+
});
|
|
175
|
+
// ─── Tool: company_enforcement_profile ───────────────────────────────────────
|
|
176
|
+
server.tool("company_enforcement_profile", "Build a comprehensive FDA enforcement profile for a company. Combines live openFDA recall and adverse event data with enriched warning letter and 483 inspection data (when available). Use this for a quick compliance posture check.", {
|
|
177
|
+
company_name: z.string().describe("Company or firm name to profile"),
|
|
178
|
+
product_type: z
|
|
179
|
+
.enum(["drug", "device", "food"])
|
|
180
|
+
.optional()
|
|
181
|
+
.describe("Product type for recall search (default: device)"),
|
|
182
|
+
}, async (params, extra) => {
|
|
183
|
+
try {
|
|
184
|
+
// Always fetch live openFDA data
|
|
185
|
+
const [recalls, events] = await Promise.all([
|
|
186
|
+
searchEnforcement({
|
|
187
|
+
recalling_firm: params.company_name,
|
|
188
|
+
product_type: params.product_type ?? "device",
|
|
189
|
+
limit: 5,
|
|
190
|
+
}).catch(() => ({ total: 0, records: [] })),
|
|
191
|
+
searchDeviceEvents({
|
|
192
|
+
manufacturer: params.company_name,
|
|
193
|
+
limit: 5,
|
|
194
|
+
}).catch(() => ({ total: 0, events: [] })),
|
|
195
|
+
]);
|
|
196
|
+
// Fetch enriched data if available and authorized
|
|
197
|
+
let enriched = null;
|
|
198
|
+
const authCheck = enrichedGate(extra.authInfo?.token);
|
|
199
|
+
if (authCheck.ok) {
|
|
200
|
+
const connected = await testConnection().catch(() => false);
|
|
201
|
+
if (connected) {
|
|
202
|
+
enriched = await companyEnrichedProfile(params.company_name).catch(() => null);
|
|
203
|
+
}
|
|
218
204
|
}
|
|
219
|
-
lines
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
lines.push(`| ${insp.inspection_date} | ${insp.center} | ${insp.product_area} | ${insp.csa_relevant ? "YES" : "no"} |`);
|
|
205
|
+
const lines = [
|
|
206
|
+
`## FDA Enforcement Profile: ${params.company_name}`,
|
|
207
|
+
``,
|
|
208
|
+
`### Summary`,
|
|
209
|
+
];
|
|
210
|
+
if (enriched) {
|
|
211
|
+
lines.push(`- **Warning Letters:** ${enriched.total_warning_letters}`);
|
|
212
|
+
lines.push(`- **483 Inspections:** ${enriched.total_inspections}`);
|
|
228
213
|
}
|
|
214
|
+
lines.push(`- **Recalls:** ${recalls.total}`);
|
|
215
|
+
lines.push(`- **Adverse Events:** ${events.total}`);
|
|
229
216
|
lines.push(``);
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
217
|
+
// Warning letters (enriched)
|
|
218
|
+
if (enriched && enriched.warning_letters.length > 0) {
|
|
219
|
+
lines.push(`### Warning Letters (${enriched.total_warning_letters} total)`);
|
|
220
|
+
lines.push(`| Date | Center | Regime | CSA | Subject |`);
|
|
221
|
+
lines.push(`|------|--------|--------|-----|---------|`);
|
|
222
|
+
for (const wl of enriched.warning_letters) {
|
|
223
|
+
const subject = wl.subject.length > 40 ? wl.subject.substring(0, 40) + "..." : wl.subject;
|
|
224
|
+
lines.push(`| ${wl.issue_date} | ${wl.center} | ${wl.regime} | ${wl.csa_relevant ? "YES" : "no"} | ${subject} |`);
|
|
225
|
+
}
|
|
226
|
+
lines.push(``);
|
|
236
227
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
228
|
+
// 483 inspections (enriched)
|
|
229
|
+
if (enriched && enriched.inspections.length > 0) {
|
|
230
|
+
lines.push(`### 483 Inspections (${enriched.total_inspections} total)`);
|
|
231
|
+
lines.push(`| Date | Center | Area | CSA |`);
|
|
232
|
+
lines.push(`|------|--------|------|-----|`);
|
|
233
|
+
for (const insp of enriched.inspections) {
|
|
234
|
+
lines.push(`| ${insp.inspection_date} | ${insp.center} | ${insp.product_area} | ${insp.csa_relevant ? "YES" : "no"} |`);
|
|
235
|
+
}
|
|
236
|
+
lines.push(``);
|
|
244
237
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
238
|
+
// Recalls (live)
|
|
239
|
+
if (recalls.records.length > 0) {
|
|
240
|
+
lines.push(`### Recalls (${recalls.total} total)`);
|
|
241
|
+
for (const r of recalls.records) {
|
|
242
|
+
lines.push(`- **${r.recall_initiation_date}** | ${r.classification} | ${r.status} | ${r.reason_for_recall.substring(0, 100)}...`);
|
|
243
|
+
}
|
|
244
|
+
lines.push(``);
|
|
245
|
+
}
|
|
246
|
+
// Adverse events (live)
|
|
247
|
+
if (events.events.length > 0) {
|
|
248
|
+
lines.push(`### Recent Adverse Events (${events.total} total)`);
|
|
249
|
+
for (const e of events.events) {
|
|
250
|
+
lines.push(`- **${e.date_received}** | ${e.event_type} | ${e.brand_name || e.device_name} | ${e.manufacturer}`);
|
|
251
|
+
}
|
|
252
|
+
lines.push(``);
|
|
253
|
+
}
|
|
254
|
+
if (!enriched && isEnrichedAvailable()) {
|
|
255
|
+
lines.push(`*Note: Enriched data unavailable. Set DATABASE_URL to include warning letters and 483 inspection data.*`);
|
|
256
|
+
}
|
|
257
|
+
else if (!enriched) {
|
|
258
|
+
lines.push(`*Tip: Enable enriched tools (DATABASE_URL) to include warning letters, 483 inspections, and CSA analysis.*`);
|
|
259
|
+
}
|
|
260
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
252
261
|
}
|
|
253
|
-
|
|
254
|
-
}
|
|
255
|
-
catch (error) {
|
|
256
|
-
return {
|
|
257
|
-
content: [
|
|
258
|
-
{
|
|
259
|
-
type: "text",
|
|
260
|
-
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
261
|
-
},
|
|
262
|
-
],
|
|
263
|
-
isError: true,
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
// ─── Enriched Tools (require DATABASE_URL → fda-csa-data PostgreSQL) ─────────
|
|
268
|
-
server.tool("csa_risk_assessment", "Assess a company's Computer Software Assurance (CSA) enforcement risk. Returns risk score, CSA-specific citation counts, failure modes, and escalation analysis from the enriched fda-csa-data dataset.", {
|
|
269
|
-
company_name: z.string().describe("Company or firm name to assess"),
|
|
270
|
-
}, async (params, extra) => {
|
|
271
|
-
const gate = await enrichedConnectionGate(extra.authInfo?.token);
|
|
272
|
-
if (!gate.ok)
|
|
273
|
-
return { content: gate.content };
|
|
274
|
-
try {
|
|
275
|
-
const result = await csaRiskAssessment(params.company_name);
|
|
276
|
-
if (!result) {
|
|
262
|
+
catch (error) {
|
|
277
263
|
return {
|
|
278
264
|
content: [
|
|
279
|
-
{
|
|
265
|
+
{
|
|
266
|
+
type: "text",
|
|
267
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
268
|
+
},
|
|
280
269
|
],
|
|
270
|
+
isError: true,
|
|
281
271
|
};
|
|
282
272
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
for (const c of result.top_cfr_citations) {
|
|
300
|
-
lines.push(`- **${c.cfr_full}** (${c.category}) — ${c.count}`);
|
|
273
|
+
});
|
|
274
|
+
// ─── Enriched Tools (require DATABASE_URL → fda-csa-data PostgreSQL) ─────────
|
|
275
|
+
server.tool("csa_risk_assessment", "Assess a company's Computer Software Assurance (CSA) enforcement risk. Returns risk score, CSA-specific citation counts, failure modes, and escalation analysis from the enriched fda-csa-data dataset.", {
|
|
276
|
+
company_name: z.string().describe("Company or firm name to assess"),
|
|
277
|
+
}, async (params, extra) => {
|
|
278
|
+
const gate = await enrichedConnectionGate(extra.authInfo?.token);
|
|
279
|
+
if (!gate.ok)
|
|
280
|
+
return { content: gate.content };
|
|
281
|
+
try {
|
|
282
|
+
const result = await csaRiskAssessment(params.company_name);
|
|
283
|
+
if (!result) {
|
|
284
|
+
return {
|
|
285
|
+
content: [
|
|
286
|
+
{ type: "text", text: `No data found for "${params.company_name}".` },
|
|
287
|
+
],
|
|
288
|
+
};
|
|
301
289
|
}
|
|
302
|
-
lines
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
290
|
+
const lines = [
|
|
291
|
+
`## CSA Risk Assessment: ${result.company_name}`,
|
|
292
|
+
``,
|
|
293
|
+
`### Risk Score: ${result.risk_score} — ${result.risk_level}`,
|
|
294
|
+
``,
|
|
295
|
+
`| Metric | Total | CSA-Specific |`,
|
|
296
|
+
`|--------|------:|-------------:|`,
|
|
297
|
+
`| Warning Letters | ${result.warning_letter_count} | ${result.csa_warning_letter_count} |`,
|
|
298
|
+
`| Citations | ${result.total_citations} | ${result.csa_citations} |`,
|
|
299
|
+
`| 483 Inspections | ${result.inspection_count} | ${result.csa_inspection_count} |`,
|
|
300
|
+
``,
|
|
301
|
+
`**Escalation Multiplier:** ${result.escalation_multiplier}x`,
|
|
302
|
+
``,
|
|
303
|
+
];
|
|
304
|
+
if (result.top_cfr_citations.length > 0) {
|
|
305
|
+
lines.push(`### Top CFR Citations`);
|
|
306
|
+
for (const c of result.top_cfr_citations) {
|
|
307
|
+
lines.push(`- **${c.cfr_full}** (${c.category}) — ${c.count}`);
|
|
308
|
+
}
|
|
309
|
+
lines.push(``);
|
|
308
310
|
}
|
|
309
|
-
|
|
311
|
+
if (result.failure_modes.length > 0) {
|
|
312
|
+
lines.push(`### Failure Modes`);
|
|
313
|
+
for (const fm of result.failure_modes) {
|
|
314
|
+
lines.push(`- ${fm}`);
|
|
315
|
+
}
|
|
316
|
+
lines.push(``);
|
|
317
|
+
}
|
|
318
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
310
319
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
isError: true,
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
});
|
|
325
|
-
server.tool("citation_analysis", "Analyze FDA citation patterns across warning letters. Break down by CFR part, section, category, and type. Identify CSA-relevant percentages. Powered by the enriched fda-csa-data dataset.", {
|
|
326
|
-
cfr_part: z.string().optional().describe("Filter by CFR part (e.g., '820', '211', '11')"),
|
|
327
|
-
category: z
|
|
328
|
-
.string()
|
|
329
|
-
.optional()
|
|
330
|
-
.describe("Filter by category (e.g., 'software_validation', 'design_controls', 'capa')"),
|
|
331
|
-
center: z.string().optional().describe("Filter by FDA center (e.g., 'CDRH', 'CDER')"),
|
|
332
|
-
fiscal_year: z.number().optional().describe("Filter by fiscal year (e.g., 2024, 2025)"),
|
|
333
|
-
}, async (params, extra) => {
|
|
334
|
-
const gate = await enrichedConnectionGate(extra.authInfo?.token);
|
|
335
|
-
if (!gate.ok)
|
|
336
|
-
return { content: gate.content };
|
|
337
|
-
try {
|
|
338
|
-
const result = await citationAnalysis(params);
|
|
339
|
-
if (!result) {
|
|
340
|
-
return { content: [{ type: "text", text: "No citation data found." }] };
|
|
320
|
+
catch (error) {
|
|
321
|
+
return {
|
|
322
|
+
content: [
|
|
323
|
+
{
|
|
324
|
+
type: "text",
|
|
325
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
326
|
+
},
|
|
327
|
+
],
|
|
328
|
+
isError: true,
|
|
329
|
+
};
|
|
341
330
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
.
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
lines.push(`- **Part ${p.part}** — ${p.count}`);
|
|
331
|
+
});
|
|
332
|
+
server.tool("citation_analysis", "Analyze FDA citation patterns across warning letters. Break down by CFR part, section, category, and type. Identify CSA-relevant percentages. Powered by the enriched fda-csa-data dataset.", {
|
|
333
|
+
cfr_part: z.string().optional().describe("Filter by CFR part (e.g., '820', '211', '11')"),
|
|
334
|
+
category: z
|
|
335
|
+
.string()
|
|
336
|
+
.optional()
|
|
337
|
+
.describe("Filter by category (e.g., 'software_validation', 'design_controls', 'capa')"),
|
|
338
|
+
center: z.string().optional().describe("Filter by FDA center (e.g., 'CDRH', 'CDER')"),
|
|
339
|
+
fiscal_year: z.number().optional().describe("Filter by fiscal year (e.g., 2024, 2025)"),
|
|
340
|
+
}, async (params, extra) => {
|
|
341
|
+
const gate = await enrichedConnectionGate(extra.authInfo?.token);
|
|
342
|
+
if (!gate.ok)
|
|
343
|
+
return { content: gate.content };
|
|
344
|
+
try {
|
|
345
|
+
const result = await citationAnalysis(params);
|
|
346
|
+
if (!result) {
|
|
347
|
+
return { content: [{ type: "text", text: "No citation data found." }] };
|
|
360
348
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
349
|
+
const filters = [
|
|
350
|
+
params.cfr_part && `CFR Part ${params.cfr_part}`,
|
|
351
|
+
params.category && `Category: ${params.category}`,
|
|
352
|
+
params.center && `Center: ${params.center}`,
|
|
353
|
+
params.fiscal_year && `FY${params.fiscal_year}`,
|
|
354
|
+
]
|
|
355
|
+
.filter(Boolean)
|
|
356
|
+
.join(" | ");
|
|
357
|
+
const lines = [
|
|
358
|
+
`## FDA Citation Analysis`,
|
|
359
|
+
filters ? `**Filters:** ${filters}` : `**Scope:** All citations`,
|
|
360
|
+
`**Total:** ${result.total_citations} | **CSA-Relevant:** ${result.csa_percentage}%`,
|
|
361
|
+
``,
|
|
362
|
+
];
|
|
363
|
+
if (result.by_cfr_part.length > 0) {
|
|
364
|
+
lines.push(`### By CFR Part`);
|
|
365
|
+
for (const p of result.by_cfr_part) {
|
|
366
|
+
lines.push(`- **Part ${p.part}** — ${p.count}`);
|
|
367
|
+
}
|
|
368
|
+
lines.push(``);
|
|
368
369
|
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
370
|
+
if (result.by_category.length > 0) {
|
|
371
|
+
lines.push(`### By Category`);
|
|
372
|
+
for (const c of result.by_category) {
|
|
373
|
+
const csa = c.csa_relevant ? " (CSA)" : "";
|
|
374
|
+
lines.push(`- **${c.category}** — ${c.count}${csa}`);
|
|
375
|
+
}
|
|
376
|
+
lines.push(``);
|
|
375
377
|
}
|
|
376
|
-
|
|
378
|
+
if (result.top_sections.length > 0) {
|
|
379
|
+
lines.push(`### Top Sections`);
|
|
380
|
+
for (const s of result.top_sections) {
|
|
381
|
+
lines.push(`- **${s.cfr_full}** (${s.description}) — ${s.count}`);
|
|
382
|
+
}
|
|
383
|
+
lines.push(``);
|
|
384
|
+
}
|
|
385
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
377
386
|
}
|
|
378
|
-
|
|
379
|
-
}
|
|
380
|
-
catch (error) {
|
|
381
|
-
return {
|
|
382
|
-
content: [
|
|
383
|
-
{
|
|
384
|
-
type: "text",
|
|
385
|
-
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
386
|
-
},
|
|
387
|
-
],
|
|
388
|
-
isError: true,
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
});
|
|
392
|
-
server.tool("supplier_qualification_report", "Generate an audit-ready supplier qualification report. Consolidates warning letters, 483 inspections, citations, failure modes, and CSA risk into a single brief with a qualification recommendation. Powered by the enriched fda-csa-data dataset.", {
|
|
393
|
-
company_name: z.string().describe("Supplier/company name to qualify"),
|
|
394
|
-
}, async (params, extra) => {
|
|
395
|
-
const gate = await enrichedConnectionGate(extra.authInfo?.token);
|
|
396
|
-
if (!gate.ok)
|
|
397
|
-
return { content: gate.content };
|
|
398
|
-
try {
|
|
399
|
-
const result = await supplierQualification(params.company_name);
|
|
400
|
-
if (!result) {
|
|
387
|
+
catch (error) {
|
|
401
388
|
return {
|
|
402
389
|
content: [
|
|
403
|
-
{
|
|
390
|
+
{
|
|
391
|
+
type: "text",
|
|
392
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
393
|
+
},
|
|
404
394
|
],
|
|
395
|
+
isError: true,
|
|
405
396
|
};
|
|
406
397
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
if (
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
for (const fei of result.fei_numbers) {
|
|
423
|
-
lines.push(`- ${fei}`);
|
|
398
|
+
});
|
|
399
|
+
server.tool("supplier_qualification_report", "Generate an audit-ready supplier qualification report. Consolidates warning letters, 483 inspections, citations, failure modes, and CSA risk into a single brief with a qualification recommendation. Powered by the enriched fda-csa-data dataset.", {
|
|
400
|
+
company_name: z.string().describe("Supplier/company name to qualify"),
|
|
401
|
+
}, async (params, extra) => {
|
|
402
|
+
const gate = await enrichedConnectionGate(extra.authInfo?.token);
|
|
403
|
+
if (!gate.ok)
|
|
404
|
+
return { content: gate.content };
|
|
405
|
+
try {
|
|
406
|
+
const result = await supplierQualification(params.company_name);
|
|
407
|
+
if (!result) {
|
|
408
|
+
return {
|
|
409
|
+
content: [
|
|
410
|
+
{ type: "text", text: `No data found for "${params.company_name}".` },
|
|
411
|
+
],
|
|
412
|
+
};
|
|
424
413
|
}
|
|
425
|
-
lines
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
lines.push(
|
|
414
|
+
const lines = [
|
|
415
|
+
`## Supplier Qualification Report: ${result.company_name}`,
|
|
416
|
+
`*Generated ${new Date().toISOString().split("T")[0]}*`,
|
|
417
|
+
``,
|
|
418
|
+
];
|
|
419
|
+
if (result.csa_risk) {
|
|
420
|
+
lines.push(`### CSA Risk Assessment`);
|
|
421
|
+
lines.push(`- **Risk Score:** ${result.csa_risk.risk_score} — **${result.csa_risk.risk_level}**`);
|
|
422
|
+
lines.push(`- **CSA Warning Letters:** ${result.csa_risk.csa_warning_letter_count} of ${result.csa_risk.warning_letter_count}`);
|
|
423
|
+
lines.push(`- **CSA Inspections:** ${result.csa_risk.csa_inspection_count} of ${result.csa_risk.inspection_count}`);
|
|
424
|
+
lines.push(`- **CSA Citations:** ${result.csa_risk.csa_citations} of ${result.csa_risk.total_citations}`);
|
|
425
|
+
lines.push(``);
|
|
433
426
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
for (const insp of result.inspections) {
|
|
441
|
-
lines.push(`| ${insp.inspection_end_date} | ${insp.center} | ${insp.product_area} | ${insp.csa_relevant ? "YES" : "no"} |`);
|
|
427
|
+
if (result.fei_numbers.length > 0) {
|
|
428
|
+
lines.push(`### Facility Establishment Identifiers (FEI)`);
|
|
429
|
+
for (const fei of result.fei_numbers) {
|
|
430
|
+
lines.push(`- ${fei}`);
|
|
431
|
+
}
|
|
432
|
+
lines.push(``);
|
|
442
433
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
434
|
+
if (result.warning_letters.length > 0) {
|
|
435
|
+
lines.push(`### Warning Letters (${result.warning_letters.length})`);
|
|
436
|
+
lines.push(`| Date | Center | Regime | CSA |`);
|
|
437
|
+
lines.push(`|------|--------|--------|-----|`);
|
|
438
|
+
for (const wl of result.warning_letters) {
|
|
439
|
+
lines.push(`| ${wl.issue_date} | ${wl.center} | ${wl.regime} | ${wl.csa_relevant ? "YES" : "no"} |`);
|
|
440
|
+
}
|
|
441
|
+
lines.push(``);
|
|
449
442
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
443
|
+
if (result.inspections.length > 0) {
|
|
444
|
+
lines.push(`### Form 483 Inspections (${result.inspections.length})`);
|
|
445
|
+
lines.push(`| Date | Center | Area | CSA |`);
|
|
446
|
+
lines.push(`|------|--------|------|-----|`);
|
|
447
|
+
for (const insp of result.inspections) {
|
|
448
|
+
lines.push(`| ${insp.inspection_end_date} | ${insp.center} | ${insp.product_area} | ${insp.csa_relevant ? "YES" : "no"} |`);
|
|
449
|
+
}
|
|
450
|
+
lines.push(``);
|
|
456
451
|
}
|
|
457
|
-
|
|
452
|
+
if (result.citation_summary.length > 0) {
|
|
453
|
+
lines.push(`### Citation Summary`);
|
|
454
|
+
for (const c of result.citation_summary) {
|
|
455
|
+
lines.push(`- **${c.cfr_full}** (${c.category}) — ${c.count}x`);
|
|
456
|
+
}
|
|
457
|
+
lines.push(``);
|
|
458
|
+
}
|
|
459
|
+
if (result.failure_modes.length > 0) {
|
|
460
|
+
lines.push(`### Failure Modes`);
|
|
461
|
+
for (const fm of result.failure_modes) {
|
|
462
|
+
lines.push(`- **${fm.mode}** (confidence: ${fm.confidence}) — ${fm.count}x`);
|
|
463
|
+
}
|
|
464
|
+
lines.push(``);
|
|
465
|
+
}
|
|
466
|
+
if (result.csa_risk) {
|
|
467
|
+
lines.push(`### Qualification Recommendation`);
|
|
468
|
+
const rec = {
|
|
469
|
+
CRITICAL: "**DO NOT QUALIFY without on-site audit.** Critical CSA enforcement history requires remediation evidence, CAPA verification, and management commitment assessment.",
|
|
470
|
+
HIGH: "**Conditional qualification.** Significant CSA enforcement history. Require CAPA documentation for all cited findings. Schedule audit within 90 days.",
|
|
471
|
+
MODERATE: "**Qualify with enhanced monitoring.** Enforcement history present but manageable. Include CSA-specific questions in supplier questionnaire. Annual re-evaluation.",
|
|
472
|
+
LOW: "**Standard qualification pathway.** No significant CSA enforcement concerns.",
|
|
473
|
+
};
|
|
474
|
+
lines.push(rec[result.csa_risk.risk_level] ?? "Insufficient data for recommendation.");
|
|
475
|
+
lines.push(``);
|
|
476
|
+
}
|
|
477
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
458
478
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
479
|
+
catch (error) {
|
|
480
|
+
return {
|
|
481
|
+
content: [
|
|
482
|
+
{
|
|
483
|
+
type: "text",
|
|
484
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
485
|
+
},
|
|
486
|
+
],
|
|
487
|
+
isError: true,
|
|
466
488
|
};
|
|
467
|
-
lines.push(rec[result.csa_risk.risk_level] ?? "Insufficient data for recommendation.");
|
|
468
|
-
lines.push(``);
|
|
469
489
|
}
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
catch (error) {
|
|
473
|
-
return {
|
|
474
|
-
content: [
|
|
475
|
-
{
|
|
476
|
-
type: "text",
|
|
477
|
-
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
478
|
-
},
|
|
479
|
-
],
|
|
480
|
-
isError: true,
|
|
481
|
-
};
|
|
482
|
-
}
|
|
483
|
-
});
|
|
490
|
+
});
|
|
491
|
+
} // end registerTools
|
|
484
492
|
// ─── Start Server ────────────────────────────────────────────────────────────
|
|
485
493
|
async function logStartup(mode) {
|
|
486
494
|
const enriched = isEnrichedAvailable();
|
|
@@ -501,10 +509,8 @@ async function main() {
|
|
|
501
509
|
const port = process.env.PORT;
|
|
502
510
|
if (port) {
|
|
503
511
|
// ─── HTTP mode (Railway deployment) ─────────────────────────
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
});
|
|
507
|
-
await server.connect(transport);
|
|
512
|
+
// Per-session transport map: each client gets its own server + transport
|
|
513
|
+
const transports = new Map();
|
|
508
514
|
Bun.serve({
|
|
509
515
|
port: parseInt(port),
|
|
510
516
|
async fetch(req) {
|
|
@@ -531,11 +537,33 @@ async function main() {
|
|
|
531
537
|
const token = authHeader?.startsWith("Bearer ")
|
|
532
538
|
? authHeader.slice(7)
|
|
533
539
|
: undefined;
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
540
|
+
const authInfo = token
|
|
541
|
+
? { token, clientId: "", scopes: [] }
|
|
542
|
+
: undefined;
|
|
543
|
+
const sessionId = req.headers.get("mcp-session-id");
|
|
544
|
+
// Existing session — route to its transport
|
|
545
|
+
if (sessionId && transports.has(sessionId)) {
|
|
546
|
+
return transports.get(sessionId).handleRequest(req, { authInfo });
|
|
547
|
+
}
|
|
548
|
+
// New session — create transport + server
|
|
549
|
+
if (!sessionId && req.method === "POST") {
|
|
550
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
551
|
+
sessionIdGenerator: () => crypto.randomUUID(),
|
|
552
|
+
onsessioninitialized: (id) => {
|
|
553
|
+
transports.set(id, transport);
|
|
554
|
+
},
|
|
555
|
+
});
|
|
556
|
+
transport.onclose = () => {
|
|
557
|
+
const sid = transport.sessionId;
|
|
558
|
+
if (sid)
|
|
559
|
+
transports.delete(sid);
|
|
560
|
+
};
|
|
561
|
+
const mcpServer = createServer();
|
|
562
|
+
await mcpServer.connect(transport);
|
|
563
|
+
return transport.handleRequest(req, { authInfo });
|
|
564
|
+
}
|
|
565
|
+
// Invalid — no session ID on non-init request
|
|
566
|
+
return Response.json({ jsonrpc: "2.0", error: { code: -32000, message: "Bad Request: No valid session ID" }, id: null }, { status: 400 });
|
|
539
567
|
}
|
|
540
568
|
return new Response("Not found", { status: 404 });
|
|
541
569
|
},
|
|
@@ -546,8 +574,9 @@ async function main() {
|
|
|
546
574
|
}
|
|
547
575
|
else {
|
|
548
576
|
// ─── stdio mode (npx / local use) ───────────────────────────
|
|
577
|
+
stdioServer = createServer();
|
|
549
578
|
const transport = new StdioServerTransport();
|
|
550
|
-
await
|
|
579
|
+
await stdioServer.connect(transport);
|
|
551
580
|
await logStartup("stdio");
|
|
552
581
|
}
|
|
553
582
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fda-mcp-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"description": "MCP server for FDA Warning Letters, Form 483 Inspections, and Enforcement/Recall data. Query FDA public data from any MCP client.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|