Bocha MCP: Complete Setup Guide & Web Search Integration
Bocha MCP Server gives any MCP-compatible AI client — Claude Desktop, Cursor, or your own custom agent — the ability to search the live web using Bocha AI's search API. In under 15 minutes you can configure a working setup where Claude answers questions with real-time data rather than training-cutoff knowledge.
This guide covers everything: what Bocha AI is, how the MCP server works internally, step-by-step installation, API key configuration, Claude Desktop and Cursor integration, all available search tools, production deployment strategies, security hardening, and a complete troubleshooting reference.
What Is Bocha AI?
Bocha AI is a search intelligence platform that provides developer-facing APIs for web search, AI-augmented search, and knowledge retrieval. Unlike generic search APIs that return raw URL lists, Bocha AI's endpoints return structured, ranked, and in some configurations AI-summarized results optimized for consumption by language models.
Key characteristics:
- LLM-optimized payloads: Results include title, URL, snippet, and optionally AI-extracted key points — fields that map directly to what an LLM needs to synthesize an answer.
- Real-time index: Bocha queries a live web index, not a static dataset, so results reflect current information.
- Multilingual support: Bocha handles queries in multiple languages with locale-aware ranking.
- Structured output: JSON responses with consistent schemas reduce the parsing complexity in MCP tool handlers.
Bocha AI targets developers building AI applications that need grounded, factual responses backed by live data.
What Does the Bocha MCP Server Do?
The Bocha MCP Server is a bridge. It implements the Model Context Protocol — an open JSON-RPC-based standard — and exposes Bocha AI's search API as MCP Tools that an LLM client can call during inference.
Want to analyze your API security?
Import your OpenAPI spec and generate a Security Report automatically.
From the LLM's perspective, the flow looks like this:
User prompt → LLM detects search need → MCP tool call → Bocha MCP Server
→ Bocha AI Search API → structured results → MCP response → LLM
→ LLM synthesizes answer → User sees response with real-time data
The server handles:
- Tool advertisement — During the MCP
initializehandshake, the server publishes its tool list so the client knows what capabilities are available. - Request translation — Converts MCP
tools/callJSON-RPC messages into Bocha AI REST API requests. - Response normalization — Formats Bocha API responses back into MCP-compliant
CallToolResultpayloads. - Authentication — Attaches the Bocha API key to every outbound request so the LLM client never needs to know the key.
- Error handling — Maps Bocha API errors (rate limits, invalid queries, network failures) to proper MCP error codes.
Transport Modes
| Mode | Use Case | Connection Type |
|---|---|---|
stdio | Local client (Claude Desktop, Cursor) | Standard input/output |
http+sse | Remote / shared deployment | HTTP with Server-Sent Events |
For most developers getting started, stdio is correct. For team setups or production agents, HTTP+SSE is preferred.
Architecture Overview
┌─────────────────────────────────────────────────────┐
│ MCP Client Layer │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Claude Desktop │ │ Cursor │ │
│ │ (Anthropic) │ │ (Anysphere) │ │
│ └────────┬─────────┘ └──────────┬───────────┘ │
└───────────┼──────────────────────────┼──────────────┘
│ JSON-RPC over stdio │ JSON-RPC over stdio
▼ ▼
┌─────────────────────────────────────────────────────┐
│ Bocha MCP Server (Node.js) │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Tool Reg. │ │ Request │ │ Error │ │
│ │ Handler │ │ Translator │ │ Mapper │ │
│ └─────────────┘ └──────────────┘ └───────────┘ │
│ │ │
│ ┌─────────▼──────────┐ │
│ │ Bocha REST Client │ │
│ │ + API Key Auth │ │
│ └─────────┬──────────┘ │
└────────────────────────┼────────────────────────────┘
│ HTTPS
▼
┌─────────────────────────────────────────────────────┐
│ Bocha AI Search API │
│ /v1/web/search │ /v1/ai/search │ /v1/news │
└─────────────────────────────────────────────────────┘
Prerequisites
Before starting, confirm you have:
- Node.js 18+ — Bocha MCP Server is a Node.js package. Check with
node --version. - npm or npx — Comes with Node.js. Verify with
npm --version. - A Bocha AI account — Register at bochaai.com and generate an API key from the developer dashboard.
- Claude Desktop (optional) — Download from claude.ai/download if integrating with Claude.
- Cursor (optional) — Download from cursor.sh for IDE integration.
Get Your Bocha API Key
- Log in to bochaai.com
- Navigate to Developer → API Keys
- Click Create New Key
- Copy the key immediately — it's shown only once
- Store it in a password manager or secrets vault
Security note: Treat this key like a password. It authorizes billable API calls. Never paste it into chat interfaces, commit it to git, or share it in plain text.
Installation
The Bocha MCP Server is published as an npm package. You have two installation options:
Option A: Run with npx (Recommended for Getting Started)
npx @bocha-ai/mcp-server
npx downloads and runs the latest version without a permanent install. This is the simplest way to verify things work before committing to a permanent setup.
Option B: Global Install
npm install -g @bocha-ai/mcp-server
After global install, the server is available as:
bocha-mcp-server
Option C: Local Project Install
If you're building a custom agent or integrating Bocha MCP into a larger project:
mkdir my-ai-agent && cd my-ai-agent
npm init -y
npm install @bocha-ai/mcp-server
Then reference it in your project's MCP configuration with the full path.
Verify the Installation
npx @bocha-ai/mcp-server --version
Expected output:
@bocha-ai/mcp-server v1.x.x
API Key Configuration
The Bocha MCP Server reads the API key from the BOCHA_API_KEY environment variable. Never hardcode the key in configuration files that might be committed to version control.
Setting the Environment Variable
macOS / Linux (current session):
export BOCHA_API_KEY="your-api-key-here"
macOS / Linux (permanent — add to shell profile):
echo 'export BOCHA_API_KEY="your-api-key-here"' >> ~/.zshrc
source ~/.zshrc
Windows (PowerShell):
$env:BOCHA_API_KEY = "your-api-key-here"
Windows (permanent via System Properties):
System Properties → Advanced → Environment Variables → New User Variable
Variable name: BOCHA_API_KEY
Variable value: your-api-key-here
Test the API Key Works
Before configuring any client, verify the key is valid:
curl -X POST https://api.bochaai.com/v1/web/search \
-H "Authorization: Bearer $BOCHA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "MCP protocol specification", "count": 3}'
A successful response returns a JSON object with a results array. A 401 response means the key is invalid or incorrectly set.
Claude Desktop Integration
Claude Desktop uses a JSON configuration file to define which MCP servers it spawns on startup.
Locate the Config File
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Add the Bocha MCP Server Entry
Open claude_desktop_config.json in any text editor. If it doesn't exist yet, create it.
{
"mcpServers": {
"bocha-search": {
"command": "npx",
"args": ["-y", "@bocha-ai/mcp-server"],
"env": {
"BOCHA_API_KEY": "your-api-key-here"
}
}
}
}
Configuration field breakdown:
command: The executable Claude Desktop spawns. Usenpxfor the package runner approach.args: Arguments passed to the command.-yauto-confirms any npx install prompts.env: Environment variables injected into the server process. This is where the API key lives in the config — it stays out of your shell environment and is process-scoped.
If You Used Global Install
Replace npx with the direct binary path for reliability:
{
"mcpServers": {
"bocha-search": {
"command": "bocha-mcp-server",
"args": [],
"env": {
"BOCHA_API_KEY": "your-api-key-here"
}
}
}
}
To find the exact binary path after global install:
which bocha-mcp-server
# Example output: /usr/local/bin/bocha-mcp-server
If You Have Multiple MCP Servers
You can run multiple MCP servers simultaneously. Just add multiple entries:
{
"mcpServers": {
"bocha-search": {
"command": "npx",
"args": ["-y", "@bocha-ai/mcp-server"],
"env": {
"BOCHA_API_KEY": "your-bocha-key"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"],
"env": {}
}
}
}
Restart Claude Desktop
After saving the config, fully quit and reopen Claude Desktop. MCP servers are spawned on startup.
Verify the Integration
- Open Claude Desktop
- Start a new conversation
- Look for the MCP tools indicator (usually a hammer or tool icon near the input box)
- Type: "Search the web for the latest news about MCP servers"
- Claude should invoke the Bocha search tool and return live results
If you don't see results, check the logs:
- macOS:
~/Library/Logs/Claude/mcp*.log - Windows:
%APPDATA%\Claude\Logs\
Cursor Integration
Cursor supports MCP servers natively from version 0.43+. Configuration lives in a project-level or global settings file.
Global Cursor MCP Configuration
Create or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"bocha-search": {
"command": "npx",
"args": ["-y", "@bocha-ai/mcp-server"],
"env": {
"BOCHA_API_KEY": "your-api-key-here"
}
}
}
}
Project-Level Cursor Configuration
For project-specific configuration (useful when different projects need different Bocha API keys or rate limits), create .cursor/mcp.json in your project root:
{
"mcpServers": {
"bocha-search": {
"command": "npx",
"args": ["-y", "@bocha-ai/mcp-server"],
"env": {
"BOCHA_API_KEY": "project-specific-key"
}
}
}
}
Tip: Add
.cursor/mcp.jsonto.gitignoreif it contains the API key directly. Better practice: reference an environment variable from your shell by omitting theenvblock and ensuringBOCHA_API_KEYis set in your terminal.
Using Bocha Search in Cursor
Once configured, open Cursor's AI chat panel (Cmd+L or Ctrl+L) and ask:
- "Search for the latest React 19 release notes"
- "What are the current Node.js LTS versions?"
- "Find documentation for the Prisma ORM connection pooling"
Cursor's agent will call the Bocha search tool and include the results in its context when generating responses.
Available Search Tools
The Bocha MCP Server exposes several tools depending on the server version. Here are the primary tools as of the current stable release:
web_search
The core tool. Performs a live web search and returns ranked results.
Input schema:
{
"query": "string (required) — the search query",
"count": "integer (optional, default: 10) — number of results to return (1-50)",
"freshness": "string (optional) — filter by date: 'day', 'week', 'month', 'year'",
"language": "string (optional) — language code, e.g. 'en', 'zh', 'fr'",
"market": "string (optional) — regional market, e.g. 'en-US', 'zh-CN'"
}
Example MCP tool call (what the LLM sends internally):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "web_search",
"arguments": {
"query": "TypeScript 5.5 release features",
"count": 5,
"freshness": "month"
}
}
}
Result structure:
{
"content": [
{
"type": "text",
"text": "[\'TypeScript 5.5 introduces...\' - microsoft.github.io\nURL: https://...\nSnippet: ...\']"
}
],
"isError": false
}
ai_search
An AI-augmented search that returns a synthesized answer alongside source results. Ideal for factual questions where the LLM should have a pre-digested answer with citations.
Input schema:
{
"query": "string (required)",
"count": "integer (optional, default: 5)"
}
This tool is more expensive in terms of API credits because Bocha runs its own AI summarization pipeline on the results before returning them. Use it selectively — reserve it for queries where a synthesized answer is more useful than raw links.
news_search
Searches specifically within news sources with temporal ranking.
Input schema:
{
"query": "string (required)",
"count": "integer (optional, default: 10)",
"freshness": "string (optional) — 'day', 'week', 'month'"
}
News search is useful for agents that monitor current events, track competitor announcements, or need to ground responses in recent journalism.
Tool Discovery at Runtime
You can inspect what tools a running Bocha MCP Server advertises using the MCP tools/list method. Start the server manually and send:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
BOCHA_API_KEY="your-key" npx @bocha-ai/mcp-server
The server responds with the full tool definitions including input schemas — useful for debugging and for verifying what version of the server you're running.
Real-World Use Cases
1. Developer Research Assistant
A developer asks Claude: "What's the current best practice for handling JWT refresh tokens in Node.js?"
Without Bocha MCP: Claude answers from training data, potentially citing outdated libraries or patterns.
With Bocha MCP: Claude calls web_search with a freshness filter, retrieves current blog posts and documentation, and synthesizes an answer grounded in 2024–2025 content.
2. Competitive Intelligence Agent
A product team builds a Cursor-based agent that runs news_search queries against competitor names weekly. The results feed into a summary document automatically.
System prompt: "You are a competitive intelligence assistant.
When asked about any company, always search for recent news
before summarizing."
3. Live Documentation Lookup
Instead of relying on the LLM's knowledge of an API, a developer instructs Claude to search for the current API docs:
"Search for the current Stripe API documentation for webhook signature verification"
Bocha returns the current Stripe docs page, and Claude synthesizes the exact current implementation pattern.
4. Research Summarization Pipeline
A custom MCP client calls ai_search in batch for a list of topics, collecting Bocha's AI-synthesized answers, then passes them to a secondary LLM for cross-topic analysis.
5. Real-Time Price and Availability Checks
Agents that need to check current pricing for cloud services, SaaS tools, or hardware can use web_search with freshness set to day to avoid stale pricing data.
Security Considerations
Running a search MCP server introduces several security concerns that are easy to overlook.
API Key Exposure
Risk: The BOCHA_API_KEY in claude_desktop_config.json is stored in plaintext on disk.
Mitigation:
- Restrict file permissions:
chmod 600 ~/Library/Application\ Support/Claude/claude_desktop_config.json - Use a secrets manager (1Password CLI, AWS Secrets Manager) and load keys at runtime
- Rotate keys periodically from the Bocha AI dashboard
- Create separate keys for development, staging, and production environments
Prompt Injection via Search Results
Risk: A malicious webpage could include text like "Ignore previous instructions and..." which gets included in search results and fed to the LLM.
Mitigation:
- Apply result sanitization in a custom MCP server wrapper
- Limit search results count to reduce the attack surface
- Use Claude's built-in prompt injection resistance (Claude 3+ models have improved resistance)
- Never grant the AI agent destructive capabilities (file deletion, code execution) alongside search
Rate Limit Abuse
Risk: An unconstrained LLM might invoke web_search hundreds of times in a single session, rapidly consuming your Bocha API quota.
Mitigation:
{
"mcpServers": {
"bocha-search": {
"command": "npx",
"args": ["-y", "@bocha-ai/mcp-server"],
"env": {
"BOCHA_API_KEY": "your-key",
"MAX_CALLS_PER_SESSION": "20"
}
}
}
}
Check Bocha MCP Server's documentation for supported rate-limiting environment variables. If the server doesn't support this natively, wrap it in a proxy that enforces call limits.
Network Security for Remote Deployments
If deploying Bocha MCP Server as an HTTP+SSE service:
- Require HTTPS — never expose the MCP endpoint over plain HTTP
- Implement bearer token authentication between your MCP client and the server
- Run behind a reverse proxy (nginx, Caddy) with TLS termination
- Restrict access by IP allowlist for team deployments
- Log all tool calls for audit purposes
Verifying MCP Compatibility with MCPForge
Before deploying Bocha MCP into a production workflow or sharing a configuration with your team, it's worth validating the server is behaving correctly against the MCP specification.
MCPForge Verify is an automated tool that:
- Tests the full MCP
initializehandshake - Validates
tools/listreturns correctly structured tool definitions - Sends test
tools/callrequests and validates response formats - Checks JSON-RPC message structure compliance
- Reports transport compatibility (stdio vs HTTP+SSE)
How to Use MCPForge Verify
- Go to mcpforge.dev/verify
- Choose stdio or HTTP as your transport type
- For stdio: provide the command and args (
npx -y @bocha-ai/mcp-server) - For HTTP: provide the server URL
- Run the verification suite
- Review the compliance report
A fully compliant Bocha MCP Server will pass all core MCP protocol checks. If you see failures, the report identifies exactly which part of the protocol is broken — useful for debugging custom wrappers or modified server versions.
You can also browse the MCPForge Verified Directory to find other MCP servers that have been validated, which is helpful when building multi-server agent architectures alongside Bocha.
Performance Optimization
Reduce Result Count for Speed
Each additional result in web_search increases Bocha API processing time. For most LLM use cases, 3–5 results provide enough context:
"Search for X" → count: 5 (not the default 10)
The LLM doesn't benefit from 50 results — it will focus on the first few anyway. Lower counts mean faster tool calls and lower API costs.
Use freshness Filters Strategically
Freshness filtering reduces the candidate pool Bocha searches, which speeds up results and improves relevance for time-sensitive queries:
- Current events →
freshness: "day"or"week" - Library documentation →
freshness: "year"or omit - Historical research → omit freshness entirely
Cache Frequently Repeated Queries
If you're building a custom agent that runs the same searches repeatedly (e.g., monitoring queries), add a caching layer between your agent and the Bocha MCP Server:
// Pseudocode for a caching wrapper
const cache = new Map();
async function cachedSearch(query, ttlSeconds = 300) {
const key = `${query}`;
const cached = cache.get(key);
if (cached && Date.now() - cached.timestamp < ttlSeconds * 1000) {
return cached.result;
}
const result = await bochaSearch(query);
cache.set(key, { result, timestamp: Date.now() });
return result;
}
For production caching, use Redis with a TTL that matches your acceptable data freshness tolerance.
Parallel Tool Calls
Modern MCP clients support parallel tool calls. If you need results from multiple independent searches, structure your prompt to enable this:
"Search for React 19 features AND search for Vue 4 features simultaneously, then compare them."
Claude will attempt to call both web_search tools in parallel, halving the latency compared to sequential calls.
Troubleshooting
Diagnostic Checklist
Work through this checklist in order when something isn't working:
- Node.js version is 18+:
node --version - API key is set:
echo $BOCHA_API_KEY(should print the key) - API key is valid: Run the curl test from the Prerequisites section
- Server starts manually:
BOCHA_API_KEY=your-key npx @bocha-ai/mcp-server— should start without error - Config file is valid JSON: Paste
claude_desktop_config.jsoninto jsonlint.com - Claude Desktop was fully restarted after config change (Quit, not just close window)
- No conflicting MCP server names: All keys in
mcpServersmust be unique - Check MCP logs:
~/Library/Logs/Claude/mcp-server-bocha-search.log
Common Errors and Fixes
Error: spawn npx ENOENT
Claude Desktop can't find npx. This happens when Node.js isn't in the PATH that Claude Desktop sees (common on macOS when Node is installed via nvm).
Fix: Use the full path to npx:
which npx
# Example: /Users/yourname/.nvm/versions/node/v20.10.0/bin/npx
Update the config:
{
"mcpServers": {
"bocha-search": {
"command": "/Users/yourname/.nvm/versions/node/v20.10.0/bin/npx",
"args": ["-y", "@bocha-ai/mcp-server"]
}
}
}
401 Unauthorized from Bocha API
The API key is wrong or expired.
Fix: Regenerate the key in the Bocha AI dashboard and update all configs. Verify with the curl test before updating Claude Desktop config.
Tool 'web_search' not found
The client doesn't see the tool. Usually means the server didn't start successfully.
Fix: Start the server manually in your terminal and check for startup errors:
BOCHA_API_KEY=your-key npx @bocha-ai/mcp-server
Look for any error output before the server enters its listening state.
Rate limit exceeded (429)
You've hit your Bocha AI plan's search quota.
Fix:
- Wait for the rate limit window to reset (check Bocha AI docs for reset intervals)
- Upgrade your Bocha AI plan
- Implement caching to reduce duplicate queries
- Add
MAX_CALLS_PER_SESSIONlimits to prevent runaway LLM search calls
JSON Parse Error in Config
Trailing commas in JSON are invalid and will silently break Claude Desktop.
// WRONG — trailing comma after last entry
{
"mcpServers": {
"bocha-search": {
"command": "npx",
"args": ["-y", "@bocha-ai/mcp-server"], // <-- this trailing comma is valid
"env": {
"BOCHA_API_KEY": "key"
} // <-- but this one is not if it's the last property
} // <-- same here
} // <-- same here
}
Use a JSON linter before saving.
Search Results Are Stale
If results seem outdated, check that you're not accidentally using cached results from a proxy layer, and verify the freshness parameter is set appropriately for your query type.
Production Deployment
For teams or automated agents, running Bocha MCP Server as a shared remote service is better than individual local instances.
For a complete production deployment strategy, see our guide on running MCP servers in production, which covers containerization, health checks, monitoring, and scaling patterns that apply directly to Bocha MCP Server.
Docker Deployment
# Dockerfile
FROM node:20-alpine
WORKDIR /app
# Install the MCP server
RUN npm install -g @bocha-ai/mcp-server
# Create non-root user
RUN addgroup -S mcp && adduser -S mcp -G mcp
USER mcp
# Health check endpoint (if server supports HTTP mode)
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD wget -q -O- http://localhost:3000/health || exit 1
EXPOSE 3000
CMD ["bocha-mcp-server", "--transport", "http", "--port", "3000"]
# docker-compose.yml
version: '3.8'
services:
bocha-mcp:
build: .
environment:
- BOCHA_API_KEY=${BOCHA_API_KEY}
ports:
- "3000:3000"
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Run with:
export BOCHA_API_KEY="your-key"
docker compose up -d
Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: bocha-mcp-server
spec:
replicas: 2
selector:
matchLabels:
app: bocha-mcp
template:
metadata:
labels:
app: bocha-mcp
spec:
containers:
- name: bocha-mcp
image: your-registry/bocha-mcp-server:latest
ports:
- containerPort: 3000
env:
- name: BOCHA_API_KEY
valueFrom:
secretKeyRef:
name: bocha-secrets
key: api-key
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
Create the secret:
kubectl create secret generic bocha-secrets \
--from-literal=api-key="your-api-key-here"
Remote MCP Client Configuration
Once deployed, point Claude Desktop at the remote server instead of spawning it locally:
{
"mcpServers": {
"bocha-search": {
"url": "https://your-mcp-server.example.com/mcp",
"transport": "sse"
}
}
}
Note: HTTP+SSE remote MCP requires the MCP client to support remote transports. Claude Desktop's support for remote MCP connections has been expanding — check the current Claude Desktop release notes for the latest transport support status.
Best Practices Summary
Configuration
- Always use environment variables for API keys — never hardcode them
- Use project-level config for per-project Bocha key isolation
- Validate JSON config with a linter before every change
- Use full binary paths when npx PATH resolution fails
Search Quality
- Set appropriate
freshnessfilters based on query type - Limit result count to 3–5 for most conversational use cases
- Use
ai_searchselectively — it costs more but provides synthesized answers - Write clear, specific queries in your system prompts to guide the LLM's search behavior
Security
- Rotate API keys every 90 days
- Use separate Bocha API keys per environment (dev/staging/prod)
- Sanitize search results before passing to agents with destructive capabilities
- Restrict claude_desktop_config.json file permissions
- Never log raw search results that might contain sensitive scraped content
Performance
- Cache repeated queries with Redis in production
- Enable parallel tool calls by prompting for multiple independent searches simultaneously
- Monitor API usage in the Bocha AI dashboard and set billing alerts
- Use
count: 3for quick factual lookups,count: 10only for comprehensive research tasks
Reliability
- Implement retry logic with exponential backoff for 429 and 503 responses
- Set session-level call limits to prevent runaway LLM search loops
- Add health check monitoring for remote deployments
- Log all tool calls with timestamps for debugging and cost attribution
Production Deployment Checklist
- Bocha API key stored in secrets manager, not plaintext config
- Separate API keys for dev, staging, production
- Server runs as non-root user in containerized deployments
- HTTPS enforced for all HTTP+SSE transport connections
- Health check endpoint configured and monitored
- Billing alerts set on Bocha AI dashboard
- Rate limiting implemented at application layer
- Tool call logging enabled for audit trail
- MCP protocol compliance verified with MCPForge Verify
- Graceful shutdown handling implemented
- Result count tuned to minimum needed for your use case
- Prompt injection mitigations reviewed
- Node.js version pinned in Dockerfile/deployment spec
Key Takeaways
Bocha MCP Server is one of the most practical additions to any AI development workflow that needs live web data. The setup is straightforward — under 15 minutes from API key to working Claude Desktop integration — and the search quality is strong enough for production use cases.
The most common pitfall is the npx PATH problem on macOS with nvm. Use full binary paths in your config to avoid it. The second most common issue is forgetting to fully restart Claude Desktop after config changes — it doesn't hot-reload.
For production, treat the Bocha MCP Server like any other external API integration: secrets management, rate limit handling, monitoring, and graceful error handling are not optional. The MCP protocol makes the integration easy, but the operational discipline is still on you.
Validate your setup with MCPForge Verify before going to production, and explore the MCPForge Verified Directory to discover other MCP servers that complement Bocha's search capabilities in multi-tool agent architectures.