Skip to main content
Glama
semidark

@semidark/mcp-litellm-searxng

by semidark
README.md
# @semidark/mcp-litellm-searxng

MCP server for searching the web through a LiteLLM proxy's SearXNG-backed search endpoint.

## Installation

No local installation required — the server is executed on-demand via `npx`:

```json
{
  "mcp": {
    "azurelit-search": {
      "type": "local",
      "command": ["npx", "-y", "@semidark/mcp-litellm-searxng"],
      "environment": {
        "LITELLM_SEARCH_URL": "https://your-litellm-proxy/v1/search/searxng-search",
        "LITELLM_API_KEY": "sk-your-key",
        "LITELLM_TIMEOUT_MS": "30000"
      }
    }
  }
}
```

With OpenCode, you can usually reuse your existing secret file:

```json
{
  "mcp": {
    "azurelit-search": {
      "type": "local",
      "command": ["npx", "-y", "@semidark/mcp-litellm-searxng"],
      "environment": {
        "LITELLM_SEARCH_URL": "https://litellm-proxy.example.com/v1/search/searxng-search",
        "LITELLM_API_KEY": "{file:~/.secrets/azure-lit.key}",
        "LITELLM_TIMEOUT_MS": "30000"
      }
    }
  }
}
```

## Development

Run the server locally:

```sh
npm start
```

Run the integration test harness:

```sh
LITELLM_SEARCH_URL="https://your-litellm-proxy/v1/search/searxng-search" \
LITELLM_API_KEY="sk-your-key" \
npm test
```

`npm test` is an integration test against a real LiteLLM endpoint. It does not mock the network and fails fast if `LITELLM_SEARCH_URL` or `LITELLM_API_KEY` is missing.

## Environment Variables

| Variable | Required | Default | Description |
|---|---|---|---|
| `LITELLM_SEARCH_URL` | Yes | — | Full URL to the LiteLLM search endpoint |
| `LITELLM_API_KEY` | Yes | — | Bearer token for API authentication |
| `LITELLM_TIMEOUT_MS` | No | `30000` | Request timeout in milliseconds |

## Tools

### `web_search`

Search the web using the configured LiteLLM proxy search backend.

**Parameters:**
- `query` (string, required): Search query
- `max_results` (number, optional, default 10): Max results to return (1–50)

**Returns:**
- text output formatted for chat clients
- `structuredContent.results` as the raw LiteLLM result array

## License

MIT

TDQS

A3.8/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The single tool has a clear, distinct purpose.

Naming Consistency5/5

The sole tool 'web_search' follows a clear verb_noun pattern. Consistency is not an issue with a single tool.

Tool Count3/5

A single tool is minimal but acceptable for a focused search server. However, it feels thin compared to typical MCP servers.

Completeness4/5

The server provides exactly what its name implies: web search. For a narrow-purpose tool, it covers the core functionality without obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues