search-mcp
v0.1.0
Published
Universal MCP server providing Brave Search tools (web, local, rich)
Downloads
14
Readme
Search MCP
The Universal MCP Server exposes tools for your workflows and is designed for prompt-first usage in MCP-compatible clients.
Installation
Prerequisites
- Node.js 18+
- Set
SEARCH_MCP_...in your environment
Get an API key
- If your tools require an external API, obtain a key from the provider’s docs/console.
- Otherwise, you can skip this step.
Build locally
cd /path/to/search-mcp
npm i
npm run buildSetup: Claude Code (CLI)
Use this one-liner (replace with your real values):
claude mcp add Search MCP -s user -e SEARCH_MCP_API_KEY="sk-your-real-key" -- npx search-mcpTo remove:
claude mcp remove Search MCPSetup: Cursor
Create .cursor/mcp.json in your client (do not commit it here):
{
"mcpServers": {
"search-mcp": {
"command": "npx",
"args": ["search-mcp"],
"env": { "SEARCH_MCP_API_KEY": "sk-your-real-key" },
"autoStart": true
}
}
}Other Clients and Agents
Install via URI or CLI:
code --add-mcp '{"name":"search-mcp","command":"npx","args":["search-mcp"],"env":{"SEARCH_MCP_API_KEY":"sk-your-real-key"}}'Follow the MCP install guide and reuse the standard config above.
- Command: npx
- Args: ["search-mcp"]
- Env: SEARCH_MCP_API_KEY=sk-your-real-key
- Type: STDIO
- Command: npx
- Args: search-mcp
- Enabled: true
Example ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"search-mcp": {
"type": "local",
"command": ["npx", "search-mcp"],
"enabled": true
}
}
}Add a new MCP and paste the standard JSON config.
See docs and reuse the standard config above.
Setup: Codex (TOML)
Example (Serena):
[mcp_servers.serena]
command = "uvx"
args = ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "codex"]This server (minimal):
[mcp_servers.search-mcp]
command = "npx"
args = ["search-mcp"]
# Optional:
# SEARCH_MCP_API_KEY = "sk-your-real-key"
# MCP_NAME = "search-mcp"Configuration (Env)
- SEARCH_MCP_API_KEY: Your API key (if applicable)
- MCP_NAME: Server name override (default: search-mcp)
Available Tools
- web_search
- inputs: object { query: string (required), count?: number, offset?: number, safeSearch?: 'off'|'moderate'|'strict', country?: string, freshness?: 'pd'|'pw'|'pm'|'py', enableRichCallback?: boolean }
- outputs: object (Brave Web Search API JSON)
- local_pois
- inputs: object { ids: string[] (1-20) }
- outputs: object (Local POI API JSON)
- local_descriptions
- inputs: object { ids: string[] (1-20) }
- outputs: object (Local descriptions API JSON)
- rich_fetch
- inputs: object { callback_key: string }
- outputs: object (Rich results JSON)
Example invocation (MCP tool call)
{
"tool": "web_search",
"inputs": {
"query": "weather in munich",
"enableRichCallback": true
}
}Troubleshooting
- 401 auth errors: check SEARCH_MCP_API_KEY
- Ensure Node 18+
- Local runs: npx search-mcp after npm run build
- Inspect publish artifacts: npm pack --dry-run
References
- MCP SDK: https://modelcontextprotocol.io/docs/sdks
- Architecture: https://modelcontextprotocol.io/docs/learn/architecture
- Server Concepts: https://modelcontextprotocol.io/docs/learn/server-concepts
- Specification: https://modelcontextprotocol.io/specification/2025-06-18/server/index
- Brave Search API: https://api.search.brave.com/app/documentation
Name Consistency & Troubleshooting
- Always use CANONICAL_ID (search-mcp) for identifiers and keys.
- Use CANONICAL_DISPLAY (Search MCP) only for UI labels.
- Do not mix legacy keys after registration.
Consistency Matrix:
- npm package name → search-mcp
- Binary name → search-mcp
- MCP server name (SDK metadata) → search-mcp
- Env default MCP_NAME → search-mcp
- Client registry key → search-mcp
- UI label → Search MCP
Conflict Cleanup:
- Remove any stale keys (e.g., old display names) and re-add with search-mcp only.
- Cursor: configure in the UI; this project intentionally omits .cursor/mcp.json.
