captain-search
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EXA_API_KEY | No | API key for Exa web and code search | |
| JINA_API_KEY | No | API key for Jina webpage extraction (optional) | |
| BRAVE_API_KEY | No | API key for Brave web search | |
| MORPH_API_KEY | No | API key for Morph code search (optional) | |
| MCP_AUTH_TOKEN | No | Authentication token for remote MCP mode | |
| MORPH_BASE_URL | No | Base URL for Morph API (default: https://api.morphllm.com/v1) | |
| SERPER_API_KEY | No | API key for Serper web search | |
| TAVILY_API_KEY | No | API key for Tavily web search | |
| PARALLEL_API_KEY | No | API key for Parallel web search and webpage extraction | |
| PERPLEXITY_API_KEY | No | API key for Perplexity web search | |
| CAPTAIN_SEARCH_LOG_DIR | No | Log directory (default: ~/.captain-search/logs) | |
| CAPTAIN_SEARCH_LOG_ENABLED | No | Enable logging (default: true) | |
| CAPTAIN_SEARCH_LOG_FULL_PAYLOADS | No | Log full payloads (default: true) |
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 |
|---|---|
| search_webA | Search the web using weighted selection or multi-provider search. Args: query: The search query string max_results: Maximum number of results (1-50, default 10). Per provider in multi mode. provider: Provider selector (default: auto) Returns: Search results in markdown format |
| fetch_webpageA | Fetch and extract content from a webpage or PDF. Uses Jina Reader to fetch and convert web pages and PDFs to clean text. Handles JavaScript-rendered pages and extracts content from PDFs. Falls back to Trafilatura extraction if Jina fails. Args: url: The URL to fetch (web page or PDF) Returns: Extracted content in markdown format Examples: - Fetch a webpage: fetch_webpage("https://example.com/article") - Fetch a PDF: fetch_webpage("https://example.com/document.pdf") |
| search_codeA | Search code across multiple providers. Args: query: Code search query string repo: Git URL or owner/repo (optional). When provided, results are scoped to this repo. Returns: Search results in markdown format |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
Each tool serves a clearly distinct purpose: web search, code search, and fetching a specific URL. There is no overlap between the tools, so an agent can easily select the correct one.
All tool names follow a consistent verb_noun pattern with underscores: search_web, fetch_webpage, search_code. This makes the tool set predictable and easy to navigate.
Three tools is slightly minimal for a search-focused server, but it covers the core operations of web search, code search, and page fetching. The count is reasonable for a niche tool set.
The tool set covers the primary search and fetch workflows, but it lacks options like image or news search. Minor gaps exist, but agents can accomplish most tasks without dead ends.