web-search-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TZ | No | Timezone used for the summary's timestamp. Convenience for containers, whose default is UTC. Example: America/Sao_Paulo. | |
| MODEL | No | Name of the model to use. Empty means use the server default model (the one already loaded). | |
| MCP_HOST | No | Listening interface in --http mode. Warning: changing to 0.0.0.0 exposes the server without authentication. | 127.0.0.1 |
| MCP_NAME | No | Name the server announces during the MCP handshake. | web-search |
| MCP_PORT | No | Listening port in --http mode. | 8765 |
| LOG_LEVEL | No | Log level: DEBUG, INFO, ERROR. INFO logs info and error; DEBUG shows each search, each URL read, and the assembled dossier. Log always goes to stderr. | INFO |
| EXTRA_BODY | No | Raw JSON merged into the /chat/completions payload for provider-specific parameters. Invalid JSON crashes the server at boot. | |
| SEARXNG_URL | No | Base URL of your SearXNG instance. It must have JSON format enabled. | http://localhost:8886 |
| MCP_TRANSPORT | No | Transport used when --http is not passed. Either stdio or http. | stdio |
| MODEL_API_KEY | No | Sent as 'Authorization: Bearer <value>'. Local servers usually ignore it; paid providers require the real key. | not-needed |
| MODEL_TIMEOUT | No | Timeout in seconds for each LLM call. Large models on CPU may need more. | 120 |
| SCRAPER_LIMIT | No | Character limit for extracted text in read_url. Empty means the whole page. Does not affect research_web. | |
| MODEL_BASE_URL | No | Base URL of an OpenAI-compatible API, without the /chat/completions suffix. Works with llama.cpp, vLLM, Ollama, OpenAI, etc. | http://localhost:8200/v1 |
| SCRAPER_TIMEOUT | No | Timeout in seconds for downloading each page. Deliberately low: a slow page should not hold up the entire research. | 6 |
| SEARXNG_TIMEOUT | No | Timeout in seconds for each SearXNG query. | 10 |
| EVAL_JUDGE_MODEL | No | Model used as judge in the eval. Pointing to a different model than the one that wrote the summary makes the evaluation much less lenient. | |
| SEARXNG_LANGUAGE | No | Language passed to the search. For English, use en-US. | pt-BR |
| MODEL_TEMPERATURE | No | Temperature for LLM calls. 0 because the task is to summarize sources, not create. | 0 |
| RESEARCH_MAX_WAVES | No | Cap on read attempts before giving up. Without it, a bad sequence of links would sweep through the entire reserve and spike latency. | 4 |
| RESEARCH_POOL_SIZE | No | Reserve of candidate links. Dead, blocked, or text-less links do not use a budget slot; the next in reserve takes their place. | 20 |
| SEARXNG_CATEGORIES | No | SearXNG categories, comma-separated, passed through raw. | general,news |
| EXTRA_SYSTEM_PROMPT | No | Text appended to the end of the system prompt in every call. | |
| RESEARCH_PAGE_CHARS | No | Character limit per page in the research_web dossier. Prevents a single outlier page from blowing the context window. | 25000 |
| SEARXNG_MAX_RESULTS | No | Number of results requested per search. The research_web tool makes multiple searches, so this is the per-search cap, not the total. | 10 |
| MODEL_CONTEXT_TOKENS | No | Context window of the model. Must match the --ctx-size used when starting the server. | 65536 |
| MODEL_RESERVE_TOKENS | No | How much of the context window is reserved for non-dossier content. The dossier budget is MODEL_CONTEXT_TOKENS - MODEL_RESERVE_TOKENS. | 4096 |
| RESEARCH_PAGE_BUDGET | No | Number of pages that enter a research dossier, across all searches. Main quality vs latency control. | 5 |
| MCP_CORS_ALLOW_ORIGINS | No | Allowed origins for CORS in --http mode, comma-separated. Only matters for browser-based clients (e.g., MCP Inspector). | * |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| read_urlA | Abre uma URL específica e devolve o conteúdo principal da página. UMA página por chamada, e o texto bruto inteiro entra no seu contexto. Se você precisa ler VÁRIAS páginas, use analyze_urls (aceita até 8 de uma vez, lê todas, e devolve só a análise) — encadear read_url gasta contexto e tempo à toa. O texto vem com um cabeçalho "Fonte desta página" e um link markdown pronto. Use esse link ao citar qualquer coisa que tenha lido aqui: nome de página sem endereço não é fonte, é referência que o usuário não consegue conferir. Use quando o usuário fornecer um link e pedir para você ler, resumir, analisar ou extrair algo dele. Diferente de research_web, aqui não há busca nem resumo interno: a página é lida e o texto bruto (em Markdown) volta para você processar conforme o que foi pedido. |
| research_webA | Pesquisa na web e devolve um resumo com fontes. Use para qualquer informação que você não saiba com certeza — e também quando acha que sabe mas o assunto pode ter mudado desde o seu treino: nesses casos, prefira pesquisar a responder de memória. Passe a pergunta completa em linguagem natural — a busca, a leitura das páginas e o resumo são feitos internamente. UMA CHAMADA POR PERGUNTA. Esta ferramenta já reformula a pergunta em vários ângulos de busca por dentro, roda todos em paralelo e lê as melhores páginas do conjunto. Chamar de novo com a mesma pergunta escrita de outro jeito não traz material novo: relê as mesmas páginas e gasta o mesmo tempo outra vez. Só chame outra vez quando a pergunta for genuinamente outra, ou quando o resumo apontar o que faltou. Pergunta NOVA do usuário = chamada nova, mesmo que seja sobre o mesmo assunto de antes: cada pergunta diferente merece sua própria pesquisa. |
| analyze_urlsA | Lê uma ou mais URLs e devolve uma análise pronta, sem o texto bruto. Use quando o usuário fornecer a(s) URL(s) e quiser resumo, parecer técnico, opinião ou comparação entre páginas: a leitura e a análise acontecem internamente e só o resultado volta — o conteúdo integral das páginas não entra no seu contexto. Prefira read_url apenas quando o texto completo da página for necessário de verdade. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| pesquisador | Política de pesquisa: sempre pesquisar, nunca inventar, citar a fonte. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fabio-barboza/web_search_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server