import type { Tool } from "@modelcontextprotocol/sdk/types.js";
/**
* MCP Tool definitions for SearXNG
*/
export const tools: Tool[] = [
{
name: "searxng_search",
description:
"Search the web using SearXNG. Returns web search results with titles, URLs, and snippets.",
inputSchema: {
type: "object",
properties: {
query: {
type: "string",
description: "The search query",
},
categories: {
type: "string",
description:
"Comma-separated categories: general, images, news, videos, music, files, it, science, social media",
},
engines: {
type: "string",
description:
"Comma-separated engine names to use (e.g., 'google,bing,duckduckgo')",
},
language: {
type: "string",
description: "Search language (e.g., 'en', 'ja', 'de')",
},
pageno: {
type: "number",
description: "Page number (default: 1)",
},
},
required: ["query"],
},
},
{
name: "searxng_images",
description:
"Search for images using SearXNG. Returns image results with URLs and thumbnails.",
inputSchema: {
type: "object",
properties: {
query: {
type: "string",
description: "The image search query",
},
engines: {
type: "string",
description: "Comma-separated engine names to use",
},
language: {
type: "string",
description: "Search language (e.g., 'en', 'ja')",
},
pageno: {
type: "number",
description: "Page number (default: 1)",
},
},
required: ["query"],
},
},
{
name: "searxng_news",
description:
"Search for news articles using SearXNG. Returns recent news with titles, URLs, and summaries.",
inputSchema: {
type: "object",
properties: {
query: {
type: "string",
description: "The news search query",
},
engines: {
type: "string",
description: "Comma-separated engine names to use",
},
language: {
type: "string",
description: "Search language (e.g., 'en', 'ja')",
},
pageno: {
type: "number",
description: "Page number (default: 1)",
},
},
required: ["query"],
},
},
];
export const toolNames = [
"searxng_search",
"searxng_images",
"searxng_news",
] as const;
export type ToolName = (typeof toolNames)[number];