ollama-web-tools-mcp
Provides web search and web fetch tools, using Ollama as the backend service for API authentication and request handling.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ollama-web-tools-mcpSearch the web for Ollama Web Tools MCP setup guide"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ollama Web Tools MCP
Python 3.12+ MCP server preserving the Ruby oracle's web_search and web_fetch
contracts and adding cluesift_domain_fetch. It uses the official Python MCP SDK,
stdio by default, and stateless JSON streamable HTTP at / with --http.
Configuration
Production (prod or production in the first set of ENVIRONMENT,
CLUESIFT_ENV, or ENV) requires OLLAMA_KEY_POOL_FILE. The reloadable UTF-8
JSON document has exactly this useful shape; array order is strict priority and
duplicates are removed while preserving first occurrence:
{"keys":["primary-ollama-tools-key","secondary-ollama-tools-key"]}The file is re-read when its mtime changes or after a two-second TTL. Outside
production only, comma-separated OLLAMA_CLOUD_API_KEYS, then OLLAMA_API_KEY,
are fallback inputs. Keys are never logged; diagnostics identify them only by the
first 12 lowercase hex characters of SHA-256.
Optional Ollama timeouts: OLLAMA_OPEN_TIMEOUT=10, OLLAMA_READ_TIMEOUT=60,
OLLAMA_WRITE_TIMEOUT=30. ClueSift aliases use complete endpoint URLs (not base
URLs):
cluesift-test:CLUESIFT_ARTIFACT_TEST_URLand_TOKENcluesift-prod:CLUESIFT_ARTIFACT_PROD_URLand_TOKEN
Each pair must be wholly present or absent. Callback timeout defaults are
CLUESIFT_ARTIFACT_OPEN_TIMEOUT=2, ...READ_TIMEOUT=5, and
...WRITE_TIMEOUT=5. Callback failures are content-free telemetry and never
replace a successful fetch result.
Callback URLs are complete absolute HTTP(S) endpoints, may use only their
scheme's default port, and may not contain userinfo, a query, or a fragment.
Fetched public URLs reject trailing-dot hosts rather than canonicalizing them.
Related MCP server: web-mcp-server
Run and develop
python -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/ollama-web-tools-mcp
.venv/bin/ollama-web-tools-mcp --http --port 8767
.venv/bin/ruff check .
.venv/bin/ruff format --check .
.venv/bin/pytestThe three tools are exactly web_search, web_fetch, and
cluesift_domain_fetch. The ClueSift tool accepts only url, artifact_target,
request_id, and case_id; see the copied implementation brief for its full
security and delivery contract.
Available Tools
3 toolscluesift_domain_fetchC
Fetch a public page and best-effort deliver it to a fixed ClueSift target.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| case_id | Yes | ||
| request_id | Yes | ||
| artifact_target | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The only behavioral hint is 'best-effort', implying possible delivery failure, but it does not explain error handling, retries, output format, or side effects. This leaves significant transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant wording. It delivers the primary purpose upfront, but its brevity comes at the cost of missing critical details, so it is efficient yet under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four required parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain the full workflow, the role of each parameter, the destination of the fetched page, or how the agent should handle failures. This tool cannot be invoked confidently based on the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the tool description does not explain any of the four required parameters (url, artifact_target, request_id, case_id). The description adds no meaning beyond what the schema already shows, which is just types and an enum, leaving the agent without context for request_id and case_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core action ('Fetch a public page and best-effort deliver it to a fixed ClueSift target'), which distinguishes it from siblings like web_fetch or web_search. However, 'fixed ClueSift target' is ambiguous given the artifact_target parameter, which can be 'cluesift-test' or 'cluesift-prod'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling tools (web_search, web_fetch). There is no mention of prerequisites, exclusions, or recommended use cases, leaving the agent to infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_fetchC
Fetch web page content using Ollama's web fetch API.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| truncate | No | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'fetch web page content' with no mention of rate limits, authentication, output format, or how truncation/max_chars affect behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is under-specified. It keeps the core action clear but omits necessary operational details, so it is not fully effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple fetch tool with 3 parameters and no output schema or annotations. The description does not cover truncation behavior, character limits, return types, or use cases, leaving a gap in operational understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the three parameters (url, truncate, max_chars). The description adds no value over the bare schema, and the agent gets no hints about parameter meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches web page content and identifies the specific API (Ollama's web fetch API). It distinguishes from sibling web_search by focusing on fetching content rather than searching, though it doesn't explicitly compare to cluesift_domain_fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like web_search or cluesift_domain_fetch. It does not mention any prerequisites, contexts, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchC
Search the internet using Ollama's web search API.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| truncate | No | ||
| max_chars | No | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior, but it only says 'Search the internet using Ollama's web search API.' It does not mention result truncation, character limits, maximum results, pagination, or API-specific constraints, leaving the agent without critical behavioral knowledge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence that is front-loaded and free of extraneous text. However, it under-specifies the tool's behavior, balancing conciseness against completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and four parameters, the description is critically incomplete. It fails to explain return values, parameter use, or tool-specific behaviors, leaving the agent to make unsupported assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has four parameters with 0% description coverage. The description does not explain the meaning of query, truncate, max_chars, or max_results, relying on schema names alone, which forces the agent to guess semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Search the internet using Ollama's web search API,' which clearly identifies the action (search), resource (internet), and implementation (Ollama's API). This distinguishes it from sibling tools like web_fetch, though it doesn't explicitly compare against them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use web_search versus web_fetch or cluesift_domain_fetch. The description lacks any contextual signals, alternatives, or exclusions, scoring a 2 for absent usage guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
cluesift_domain_fetch - First observed
web_fetch - First observed
web_search
TDQS
Scored across 3 tools
web_search clearly differs from the fetch tools. web_fetch and cluesift_domain_fetch both fetch pages, but cluesift_domain_fetch has a distinct delivery target, reducing confusion. One or two could be confused but descriptions clarify.
web_search and web_fetch follow a consistent noun-verb pattern. cluesift_domain_fetch deviates by adding a longer domain prefix, but still ends with a verb and uses consistent snake_case.
3 tools is on the lower end but appropriate for a focused web search/fetch server; each tool has a clear purpose, though the server may seem slightly thin.
The core web operations of search and fetch are covered, plus a specialized fetch-to-target. Minor gaps exist (e.g., no tool for parsing or summarizing pages) but not critical for the primary use case.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceA local MCP server that exposes Tavily search as a tool and rotates across multiple API keys for reliability.1MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that exposes web_search and web_fetch tools, allowing LLM applications to search the web via DuckDuckGo and fetch page content as cleaned markdown.-
- AlicenseNot gradedqualityAmaintenanceA self-contained web-research MCP server that lets local LLM agents search, fetch, and synthesize web content using tools like web_search, web_fetch, and web_research.1MIT
- AlicenseNot gradedqualityBmaintenanceA modular MCP server that provides file search, URL fetching, text reading, knowledge base search, and image embedding tools, with a web interface powered by an Ollama agent.MIT