Connect TalorData SERP to MCP-compatible AI agents and clients for real-time search, usage history, and statistics.
TalorData SERP MCP Server exposes TalorData search capabilities through the Model Context Protocol (MCP), making it easy to integrate live search tools into agents, workflows, and MCP clients. In addition to real-time SERP requests, it also provides access to search history, usage statistics, and engine schema resources for richer integrations.
Sign up at TalorData and get your API key from the dashboard.
git clone https://github.com/Talordata/talordata-mcp
cd talordata-mcp
go mod tidy
go run .
By default, configuration is loaded from configs/config.yaml.
The sample config in this repository is:
root_dir: .
listen_addr: ":8800"
upstream_endpoint: "https://serpapi.talordata.net/serp/v1/request"
history_endpoint: "https://api.talordata.com/accounts/v1/serp/mcp/history"
statistics_endpoint: "https://api.talordata.com/pay_package_view/v1/serp/mcp/statistics"
timeout_ms: 150000
shutdown_timeout_ms: 10000
log_prefix: "[talordata-mcp]"
After startup, the server exposes:
-
GET / -
GET /healthz -
POST | GET | DELETE /mcp -
POST | GET | DELETE /{user-token}/mcp
go build ./...
Recommended remote HTTP MCP setup:
{
"mcpServers": {
"talordata": {
"url": "https://your-domain.com:8800/mcp",
"headers": {
"Authorization": "Bearer YOUR_USER_TOKEN"
}
}
}
}
For clients that cannot send custom headers:
{
"mcpServers": {
"talordata": {
"url": "https://your-domain.com:8800/YOUR_USER_TOKEN/mcp"
}
}
}
-
Dynamically loads all engine schemas from local
engines/*.json -
Exposes engine index and raw engine schemas through MCP resources
-
Proxies Talor SERP search requests through the
searchtool -
Proxies usage history through the
historytool -
Proxies usage statistics through the
statisticstool -
Supports response format control via upstream
json -
Supports schema-aware parameter serialization rules
-
Supports per-request user token forwarding instead of storing a fixed upstream token
-
date_range -
tags -
cr -
switch -
time_range -
cascader -
number -
google_flightsairport code normalization
-
json=1→ structured JSON only -
json=2→ JSON + HTML -
json=3→ HTML only
-
Designed for cloud deployment with
streamable-http -
The server does not persist a shared upstream token
-
Each user provides their own Talor SERP token per MCP request
-
The server authenticates the incoming request and forwards the user token upstream
Supported token delivery methods:
-
Recommended:
Authorization: Bearer <user-token> -
Compatible:
X-Talor-Serp-Token: <user-token> -
Compatible:
/{user-token}/mcp
-
For
/mcp, sending the token in headers is recommended -
/{user-token}/mcpis useful for clients that cannot customize headers -
Query string token passing is intentionally not supported
-
The server does not infer
agent-platformfrom inbound requests
Service configuration is loaded from configs/config.yaml.
| Field | Description |
|---|---|
root_dir |
Project root directory; supports relative paths and must contain engines/index.json |
listen_addr |
Service listen address |
upstream_endpoint |
Talor SERP search endpoint |
history_endpoint |
Talor SERP history endpoint |
statistics_endpoint |
Talor SERP statistics endpoint |
timeout_ms |
Upstream timeout in milliseconds |
shutdown_timeout_ms |
Graceful shutdown timeout in milliseconds |
log_prefix |
Log prefix used by the service |
Business tools are implemented under the tools directory:
-
tools/search.go -
tools/history.go -
tools/statistics.go
Returns:
-
Default engine
-
Category list
-
Engine list
-
Schema resource URI for each engine
Executes a Talor SERP search request.
Parameters
| Parameter | Required | Description |
|---|---|---|
engine |
No | Engine key such as google_web, google_images, bing_images |
q |
No | Search query |
json |
No | Response format: 1, 2, or 3 |
params |
No | Engine-specific parameters |
response_mode |
No | complete or compact |
Recommended flow
-
Read
talor://engines -
Read
talor://engines/<engine> -
Build
paramsaccording to the schema -
Call
search
Queries Talor SERP usage history.
Parameters
| Parameter | Required | Description |
|---|---|---|
page |
No | Page number, default 1 |
page_size |
No | Page size, commonly 20, 50, 100 |
search_query |
No | Search query filter |
search_engine |
No | Search engine filter |
status |
No | all, success, or error |
start_time |
No | Start time in Unix seconds |
end_time |
No | End time in Unix seconds |
timezone |
No | Forwarded as X-Time-Zone |
Queries Talor SERP usage statistics.
Parameters
| Parameter | Required | Description |
|---|---|---|
start_date |
Yes | Start date in YYYY-MM-DD |
end_date |
Yes | End date in YYYY-MM-DD |
engines |
No | Comma-separated string or string array |
timezone |
No | Timezone offset such as +08:00 |
| Resource | Description |
|---|---|
talor://engines |
Engine index |
talor://engines/<engine> |
Raw schema loaded from engines/<engine>.json |
When building upstream form parameters:
-
enginemust be set to the engine key -
jsonmust be included when needed by the upstream endpoint -
date_rangefields are expanded to{field}_startand{field}_end -
tagsvalues are joined with commas -
switchvalues are serialized as"true"/"false" -
cascaderuses the last selected value -
numbervalues are serialized as strings -
time_rangevalues are formatted asHHmm,HHm
| Path | Responsibility |
|---|---|
main.go |
Service startup, MCP registration, HTTP routing, graceful shutdown |
tools/search.go |
search tool definition and handler |
tools/history.go |
history tool definition and handler |
tools/statistics.go |
statistics tool definition and handler |
internal/auth/auth.go |
Token extraction, auth middleware, MCP context injection |
internal/engines/registry.go |
Engine index and schema loading |
internal/serp/client.go |
Upstream HTTP requests |
internal/serp/serialize.go |
Parameter serialization logic |
go build ./...
-
GET /returns service metadata -
GET /healthzreturns health status
Explore MCP and how to use it across different platforms: