botrun-default-mcp
A stdio-based MCP (Model Context Protocol) server providing PDF analysis, image analysis, web search, web scraping, and visualization tools. Designed to run via uvx with no server deployment needed.
Tools
| Tool | Description |
|---|---|
chat_with_pdf |
Analyze local PDF files with Gemini via Botrun Gateway (supports large files via chunked parallel processing) |
chat_with_imgs |
Analyze local image files with Gemini Vision via Botrun Gateway |
web_search |
Search the web via Perplexity API (supports OpenRouter) |
scrape |
Scrape web pages to Markdown via ScraperAPI |
create_html_page |
Generate HTML pages and save to local files |
create_plotly_chart |
Generate interactive Plotly charts as local HTML files |
create_mermaid_diagram |
Generate Mermaid diagrams as local HTML files |
current_date_time |
Get current date/time in Asia/Taipei timezone |
Installation
uvx botrun-default-mcp
Or install from source:
git clone https://github.com/sebastian-hsu/botrun_default_mcp_uv.git
cd botrun_default_mcp_uv
uv sync
Configuration
The server automatically loads environment variables from a .env file in the working directory. Just point cwd to the directory containing your .env file — no need to pass env in the MCP config.
LLM routing (chat_with_pdf / chat_with_imgs)
Both tools call Gemini. Which endpoint they use is decided by environment variables (no runtime fallback):
BOTRUN_GATE_BASE_URL+BOTRUN_GATE_API_KEYboth set → requests go through Botrun Gateway's/gemini/*passthrough (base_url = ${BOTRUN_GATE_BASE_URL}/gemini, auth viaAuthorization: Bearer). Vertex runs behind the gateway, so no GCP service account is needed. This is the recommended setup.- Otherwise → direct Vertex AI with the
GOOGLE_APPLICATION_CREDENTIALS_FOR_FASTAPIservice account (projectscoop-386004, regionus-central1). - Neither → the tools fail fast with a message naming both options.
Models available through the gateway passthrough are the Vertex gemini-2.5-* family (gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-lite). Aliases such as gemini-flash-latest do not exist there and return 404.
Claude Desktop / Claude Code
Add to your MCP settings (claude_desktop_config.json or .claude.json):
{
"mcpServers": {
"botrun-default-mcp": {
"command": "uvx",
"args": ["botrun-default-mcp"],
"cwd": "/path/to/directory/with/dotenv"
}
}
}
LangGraph
{
"botrun-default-mcp": {
"transport": "stdio",
"command": "/path/to/uvx",
"args": ["botrun-default-mcp"],
"cwd": "/path/to/directory/with/dotenv"
}
}
.env file example
BOTRUN_GATE_BASE_URL=https://gate.botrun.ai
BOTRUN_GATE_API_KEY=br-your-key-here
OPENROUTER_API_KEY=sk-or-v1-xxx
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
SCRAPERAPI_API_KEY=your-scraperapi-key
Environment Variables
| Variable | Required | Description |
|---|---|---|
BOTRUN_GATE_BASE_URL |
Yes* (for PDF/image tools) | Botrun Gateway base URL, e.g. https://gate.botrun.ai |
BOTRUN_GATE_API_KEY |
Yes* (for PDF/image tools) | Gateway br- API key (sent as Authorization: Bearer) |
GOOGLE_APPLICATION_CREDENTIALS_FOR_FASTAPI |
Yes* (only without gateway) | GCP service account JSON key for direct Vertex AI |
PPLX_API_KEY |
Yes† (for web_search) | Perplexity API key |
OPENROUTER_API_KEY |
Yes† (for web_search) | OpenRouter API key (alternative to PPLX_API_KEY) |
OPENROUTER_BASE_URL |
With OpenRouter | OpenRouter base URL |
SCRAPERAPI_API_KEY |
Yes (for scrape) | ScraperAPI key |
PDF_ANALYZER_MODEL |
No | Gemini model for PDF analysis (default: gemini-2.5-flash); comma-separated list = fallback order |
IMG_ANALYZER_MODEL |
No | Gemini model for image analysis (default: gemini-2.5-flash); comma-separated list = fallback order |
* Either BOTRUN_GATE_BASE_URL + BOTRUN_GATE_API_KEY (recommended) or GOOGLE_APPLICATION_CREDENTIALS_FOR_FASTAPI is required for chat_with_pdf / chat_with_imgs.
† Either PPLX_API_KEY or OPENROUTER_API_KEY + OPENROUTER_BASE_URL is required for web_search.
Development
# Setup
uv sync
# Run tests
uv run pytest tests/ -v
# Build
uv build
# Publish to PyPI
cd sh && bash seba_pypi.sh
License
MIT
Metadata
Release files for botrun-default-mcp 0.5.0
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 | |
|---|---|---|---|---|
| botrun_default_mcp-0.5.0.tar.gz | 83.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| botrun_default_mcp-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 102.3 kB
Release files / botrun_default_mcp-0.5.0.tar.gz
| Download URL | botrun_default_mcp-0.5.0.tar.gz |
|---|---|
| Size | 83.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b499cfb130a41ec53a1fc8393154b5d78f12c32d8fe5a75079da0805fc6da258
|
|
BLAKE2b-256 checksum How to use checksums |
9a70e83e64cf6b4fbc02a5002a40d59b299bdf8a03d45ba3957b00b169c0fcc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / botrun_default_mcp-0.5.0-py3-none-any.whl
| Download URL | botrun_default_mcp-0.5.0-py3-none-any.whl |
|---|---|
| Size | 19.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf182daf9fd6da6e530bd948ac9beadd0ad16d29d788d4eb7cccb67daa19ec10
|
|
BLAKE2b-256 checksum How to use checksums |
5ae3103a0e0c560ab2666f067bed3748c0e9a80faa69fb9ceb255a26e374945d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Security for botrun-default-mcp 0.5.0
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.