scouts-ai-mcp
Model Context Protocol (MCP) server that exposes the SCOUTS-AI web search API as a single web_search tool for AI agents, LLM apps, answer engines and GEO workflows.
- One tool, no API key. Backed by
GET https://scouts-ai.com/api/search. - Drop-in for Claude Desktop, Cursor, Open WebUI, Continue, Cline and any MCP host.
- Python ≥ 3.10,
fastmcp(>=2.0, currently resolves to 3.x),httpx. - MIT licensed.
Install
pip install scouts-ai-mcp
Run (stdio)
scouts-ai-mcp
That's it. Wire it into your MCP host of choice — for example, Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"scouts-ai": {
"command": "scouts-ai-mcp"
}
}
}
Run (HTTP)
For remote MCP hosts and self-hosted bridges:
scouts-ai-mcp --transport http --host 127.0.0.1 --port 8765
Run (Docker)
A multi-arch (linux/amd64 + linux/arm64) image is published to Docker
Hub as kecven/scouts-ai-mcp.
It runs the MCP server in streamable HTTP mode on port 8765 and exposes
the web_search tool at http://localhost:8765/mcp. No API key, no
external dependencies.
Quick start:
docker run --rm -p 8765:8765 kecven/scouts-ai-mcp:0.1.7
Then point any streamable-HTTP MCP host at http://localhost:8765/mcp
(or, when run behind a public proxy, https://<your-host>/mcp).
Override the upstream API base URL:
docker run --rm -p 8765:8765 \
-e SCOUTS_AI_BASE_URL=https://scouts-ai.com \
kecven/scouts-ai-mcp:0.1.7
Append CLI args (the image entrypoint is scouts-ai-mcp):
docker run --rm -p 8765:8765 kecven/scouts-ai-mcp:0.1.7 --log-level=DEBUG
Available tags:
kecven/scouts-ai-mcp:0.1.7— pinned, recommended for production.kecven/scouts-ai-mcp:0.1— minor-version rolling tag.kecven/scouts-ai-mcp:latest— latest stable release.
Build and push locally (requires docker buildx):
docker buildx build \
--platform linux/amd64,linux/arm64 \
-f Dockerfile.hosted \
-t kecven/scouts-ai-mcp:0.1.7 \
-t kecven/scouts-ai-mcp:0.1 \
-t kecven/scouts-ai-mcp:latest \
--push .
The image runs as a non-root user (scouts, uid 1001) and includes a
TCP-level HEALTHCHECK on 127.0.0.1:8765 (the streamable HTTP
endpoint does not return 200 on plain GET, so an HTTP probe would be
unreliable).
Tool: web_search
| Parameter | Type | Default | Description |
|---|---|---|---|
query |
string | — | Search query, 1–512 chars. |
lang |
string | en |
BCP-47 language code (e.g. en, en-US). |
page |
int | 1 |
1-based page number, 1–10. page=1 is the reliable default; pages >1 may be empty for some queries because the upstream provider (Bing) does not always return additional pages. |
Returns a compact JSON object mirroring the SCOUTS-AI response shape:
{
"query": "rust async runtime",
"lang": "en",
"page": 1,
"pageSize": 10,
"cached": false,
"tookMs": 412,
"results": [
{
"title": "Tokio - An asynchronous runtime for Rust",
"url": "https://tokio.rs/",
"content": "Tokio is an asynchronous runtime for the Rust programming language...",
"publishedAt": "2025-11-14T00:00:00Z",
"engine": "bing"
}
]
}
Error handling
The tool raises ToolError (rendered as an MCP tool error) when:
- The query is empty/too long or
lang/pageare invalid → invalid arguments. - The upstream returns
429→ rate limit exceeded; honorsRetry-Afterwhen present. - The upstream returns
5xxor the network call fails → SCOUTS-AI temporarily unavailable. - The upstream returns a structured
4xxerror envelope → forwards the code and message.
Configuration
All settings are environment variables. Defaults match the public SCOUTS-AI deployment.
| Variable | Default | Description |
|---|---|---|
SCOUTS_AI_BASE_URL |
https://scouts-ai.com |
Base URL of the SCOUTS-AI API. |
SCOUTS_AI_TIMEOUT_S |
5.0 |
HTTP timeout in seconds (0.1–60). |
SCOUTS_AI_USER_AGENT |
scouts-ai-mcp/0.1.7 |
User-Agent header. |
SCOUTS_AI_DEFAULT_LANG |
en |
Default lang when the tool omits it. |
SCOUTS_AI_MAX_QUERY_LENGTH |
512 |
Reject queries longer than this. |
SCOUTS_AI_MAX_PAGE |
10 |
Reject page numbers above this. |
Development
git clone https://github.com/kecven/scouts-ai-mcp.git
cd scouts-ai-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
License
MIT — see LICENSE.
Metadata
Release files for scouts-ai-mcp 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| scouts_ai_mcp-0.1.7.tar.gz | 21.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scouts_ai_mcp-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.7 kB
Release files / scouts_ai_mcp-0.1.7.tar.gz
| Download URL | scouts_ai_mcp-0.1.7.tar.gz |
|---|---|
| Size | 21.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
057048b755c19c7aef5f117c0e4c89e541afe01329ff1eca359255a7620686f8
|
|
BLAKE2b-256 checksum How to use checksums |
04d8f58663195990ddbf62a4b35dae43825420d0fb7b63767b112ba8f0dcced5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / scouts_ai_mcp-0.1.7-py3-none-any.whl
| Download URL | scouts_ai_mcp-0.1.7-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f8ecc2792a5567ee38d38330665187d6c2d0d7ec140626045a5604807643df83
|
|
BLAKE2b-256 checksum How to use checksums |
bedf3888fd245846cea189636127f138dcdff9766fc4ceea125e92f51227d0be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Security for scouts-ai-mcp 0.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.