misp_fetch_feed
Fetch threat intelligence from a specified MISP feed by providing its feed ID to update local data.
Instructions
Trigger a fetch/pull of data from a specific MISP feed
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| feedId | Yes | Feed ID to fetch |
Implementation Reference
- src/tools/feeds.ts:93-122 (handler)Tool handler for 'misp_fetch_feed' - triggers a fetch/pull of data from a specific MISP feed by calling client.fetchFeed(feedId)
server.tool( "misp_fetch_feed", "Trigger a fetch/pull of data from a specific MISP feed", { feedId: z.string().describe("Feed ID to fetch"), }, async ({ feedId }) => { try { const result = await client.fetchFeed(feedId); return { content: [ { type: "text", text: result.message || `Feed ${feedId} fetch initiated.`, }, ], }; } catch (err) { return { content: [ { type: "text", text: `Error fetching feed: ${err instanceof Error ? err.message : String(err)}`, }, ], isError: true, }; } } ); - src/tools/feeds.ts:96-122 (schema)Input schema for misp_fetch_feed: requires a feedId string parameter
{ feedId: z.string().describe("Feed ID to fetch"), }, async ({ feedId }) => { try { const result = await client.fetchFeed(feedId); return { content: [ { type: "text", text: result.message || `Feed ${feedId} fetch initiated.`, }, ], }; } catch (err) { return { content: [ { type: "text", text: `Error fetching feed: ${err instanceof Error ? err.message : String(err)}`, }, ], isError: true, }; } } ); - src/tools/feeds.ts:93-122 (registration)Tool registration via server.tool() inside registerFeedTools(), which is called from src/index.ts:40
server.tool( "misp_fetch_feed", "Trigger a fetch/pull of data from a specific MISP feed", { feedId: z.string().describe("Feed ID to fetch"), }, async ({ feedId }) => { try { const result = await client.fetchFeed(feedId); return { content: [ { type: "text", text: result.message || `Feed ${feedId} fetch initiated.`, }, ], }; } catch (err) { return { content: [ { type: "text", text: `Error fetching feed: ${err instanceof Error ? err.message : String(err)}`, }, ], isError: true, }; } } ); - src/client.ts:617-622 (helper)MispClient.fetchFeed() - Makes a GET request to /feeds/fetchFromFeed/{feedId} on the MISP API
async fetchFeed(feedId: string): Promise<{ message: string }> { return this.request<{ message: string }>( "GET", `/feeds/fetchFromFeed/${encodeId(feedId, "feedId")}` ); } - src/client.ts:26-31 (helper)Helper function encodeId that sanitizes the feed ID before including it in the URL path, preventing URL manipulation attacks
function encodeId(id: string, kind = "id"): string { if (!ID_PATTERN.test(id)) { throw new Error(`Invalid ${kind}: ${JSON.stringify(id)}`); } return encodeURIComponent(id); }