Hubble MCP Server
The Hubble MCP Server is a Python-based server that provides tools for keyword analysis, web crawling, and search data extraction:
Keyword Analysis: Retrieve search paths, keyword information (search volume, intent, demographics, trends), and keyword relationship graphs/clusters.
Web Crawling: Extract content from specified URLs and web pages.
Google SERP Analysis: Collect Search Engine Results Page data, Google suggest extensions, and Google trends data over specific timeframes.
Regional Data: Supports geographic targeting with region codes (e.g.,
krfor Korea,jpfor Japan).Error Handling: Includes proper error handling for API requests.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hubble MCP Serverget keyword info for 'artificial intelligence'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hubble_mcp
⚠️ Caution
Currently available only in on-premise VPN environments.
Since the API may occasionally fail, you need to check whether the data response was received normally.
(If you click on the message that Claude used as a tool, you can check the API response message.)
set-up-your-environment
Install Claude Desktop
Install uv (hubble MCP Server is written in python) - https://modelcontextprotocol.io/quickstart/server#set-up-your-environment
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"If the
uvcommand is blocked in real-time monitoring of some security programs, please stop real-time monitoring or exclude the file in question.MacOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Download Hubble MCP Server
https://github.com/ascentkorea/hubble\_mcp/releases
After downloading the zip file, unzip it (requires the corresponding path in the settings file below)
Use the latest version
Issue HUBBLE_API_KEY
Related MCP server: PostHog MCP Server
Setting up the claude_desktop_config.json file
Claude Desktop > File > Preferences (Ctrl + ,) > Developer > Edit Preferences
After modifying the json file, you need to restart Claude Desktop > File > Exit!
If you are on Mac, you need the absolute path to the uv executable file, see the Mac sample below.
{
"mcpServers": {
"hubble": {
"command": "uv",
"args": [
"--directory",
"<Hubble MCP Server 다운로드후 zip 파일 압축 해제후 data_api.py 파일 있는 경로>",
"run",
"data_api.py"
],
"env": {
"HUBBLE_API_KEY": "<HUBBLE_API_KEY>"
}
}
}
}Sample Windows Settings File
{
"mcpServers": {
"hubble": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\XXXX\\Documents\\hubble\\hubble_mcp",
"run",
"data_api.py"
],
"env": {
"HUBBLE_API_KEY": "xxx-xxxx-xxxx-xxx"
}
}
}
}Sample MacOS/Linux configuration file
{
"mcpServers": {
"hubble": {
"command": "/Users/XXX/.local/bin/uv",
"args": [
"--directory",
"/Users/XXX/workspace/hubble/hubble_mcp",
"run",
"data_api.py"
],
"env": {
"HUBBLE_API_KEY": "xxx-xxxx-xxxx-xxx"
}
}
}
}Description of tools (functions) provided ( https://hubble-data-api.ascentlab.io/ )
get_search_path: Search Path API
get_keyword_info: Search volume for the keyword (monthly search volume), summary of feature types appearing in Google SERP, search intent (INCT), gender/age ratio for Korea
get_graph_info: Relationship information between keywords
crawl_google_serp: Google SERP API
crawl_web_page: General web page collection API
crawl_google_suggest_extension: Google Suggest API
crawl_google_trends: Google Trends API
Available Tools
7 toolscrawl_google_serpD
구글 SERP API 요청
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| gl | No | kr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. The phrase 'API 요청' (API request) is vague and does not describe whether the tool returns raw HTML, structured data, handles pagination, requires authentication, or has rate limits. Zero behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (5 words), which might be considered concise, but it achieves conciseness by omitting critical information. It is under-specified, not efficiently compact. Every word is present, but it does not earn its place due to lack of substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (2 parameters, no output schema, no annotations), the description is completely inadequate. It fails to explain return values, parameter behavior, or usage context. The agent cannot reliably select or invoke this tool based solely on this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema lacks descriptions for both parameters. The tool description does not compensate; it does not mention the parameters at all. No explanation of keyword (required) or gl (optional with enum values) is given, leaving the agent without hints beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '구글 SERP API 요청' indicates it requests Google SERP (search results page). It specifies a verb ('crawl' from tool name) and resource (SERP), but does not detail what is returned or how it differs from siblings like crawl_google_suggest or crawl_google_trends. Purpose is somewhat clear but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No context about prerequisites, best use cases, or situations where it should be avoided. This leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_google_suggestC
입력된 키워드에 대해 구글 서제스트에 나타난 키워드 수집 요청
args:
keyword: str, 키워드
gl: Literal['kr', 'us', 'jp'] = "kr", 국가 코드
returns:
dict[Any] | None: 구글 서제스트 수집 결과
키워드 suggestions
한국 (gl: kr)
미국 (gl: us)
일본 (gl: jp)
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| gl | No | kr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates it's a read operation collecting suggestions, but lacks details on rate limits, potential blocking, or response structure. The return type 'dict[Any] | None' is vague and insufficient for an agent to understand what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short but contains a docstring-like structure (args, returns). However, there is redundancy in listing the country codes twice, and the parameter mismatch adds confusion. Could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain the return format in detail. It only says 'dict[Any] | None', which is insufficient. Additionally, the parameter mismatch and lack of behavioral detail make the tool description incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage. The description redundantly lists 'keyword' and 'gl' but inaccurately uses 'keyword' while the schema has 'q'. It adds minimal meaning by listing country labels for the 'gl' enum, but does not clearly explain the parameters' purposes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it collects Google Suggest keywords for a given keyword, which is clear. However, there is a mismatch between the parameter name in the description ('keyword') and the actual schema name ('q'), which could confuse an AI agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings (e.g., crawl_google_serp, crawl_google_trends). The description simply explains what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_google_trendsA
구글 트렌드 수집 요청
최근 며칠 이내의 키워드 트렌드 추이를 0~100 사이의 값으로 표현 됩니다.
(검색량은 아니고, 검색 관심도를 나타냅니다. 해당 수치는 0~100 사이의 값으로 표현 됩니다.)
trends: 기간을 기준으로 차트에서 가장 높은 지점 대비 검색 관심도를 나타냅니다.
값은 검색 빈도가 가장 높은 검색어의 경우 100, 검색 빈도가 그 절반 정도인 검색어의 경우 50,
해당 검색어에 대한 데이터가 충분하지 않은 경우 0으로 나타납니다.
키워드 하나에 대한 검색 관심도 추이를 알수 있으며, 최대 3개 키워드를 비교 할수 있습니다.
특정 키워드하나를 입력했을때, 특정 기간의 최대값이 100 이라고 했을때,
키워드 여러개 입력시에는 검색관심도가 가장 큰 키워드는 0~100 사이값으로 표현되고, 나머지는 적절히 스케일링 되므로
비교시에 특정 키워드의 최대값은 100이 아닐수 있습니다.
따라서, 키워드간 관심도 비교시에 4개 이상의 키워드를 비교 하기 위해서는
우선 3개를 비교 하고, 이후 가장 높은 관심도가 있는 키워드를 계속 같이 추가해야 각 수치간에 비교가 가능해집니다.
args:
keywords: List[str], 키워드 리스트
location: Literal['South Korea', 'Japan'],
timeframe: Literal['now 1-H', 'now 7-d', 'today 1-m'],
gl: Literal['kr', 'jp']
returns:
dict[Any] | None: 구글 트렌드 수집 결과
| Name | Required | Description | Default |
|---|---|---|---|
| req_param | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It explains that values are scaled relative to the highest point, that it's search interest not volume, and that comparing more than three keywords requires a workaround. This is adequate behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose and repeats information about the 0-100 scale and scaling behavior. While it is structured with paragraphs and an args section, it could be more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema and annotations, the description covers purpose, parameters, usage behavior, and return type (dict or None). It is sufficiently complete for an agent to understand and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It lists all parameters: keywords (list), location (with examples), timeframe (with examples), and gl (with examples). It also explains the constraints (max 3 keywords). This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool collects Google Trends data, explaining the 0-100 search interest scale, keyword comparison up to three, and how to handle more than three keywords. It differentiates from sibling tools like crawl_google_serp (search results) and crawl_google_suggest (suggestions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use the tool: for keyword trends over recent periods, comparing up to three keywords directly, and a method for more than three. It does not explicitly state when not to use it or mention alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_web_pageC
웹 페이지 크롤링
args:
url_list: List[str], 크롤링할 웹 페이지 리스트
returns:
dict[Any] | None: 크롤링 결과
| Name | Required | Description | Default |
|---|---|---|---|
| url_list | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'crawl web page' without disclosing error handling, rate limits, authentication needs, or what happens with non-accessible pages. The behavioral profile is completely opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and structured with args and returns, but it is overly minimal. It is not wasteful, but it lacks necessary detail. Better structuring with examples or clearer formatting would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema and no annotations, the description is incomplete. The return value is vaguely described as 'dict[Any] | None', leaving the agent unsure about the structure. Critical behavioral aspects like error handling are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description adds no meaningful information beyond the schema. It rephrases the parameter as 'list of web pages to crawl' which adds no new constraints or formatting details. The return type is mentioned as 'dict[Any] | None' without further clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Crawl web page' which is a clear verb+resource. However, it does not differentiate from sibling tools like crawl_google_serp, which also crawl web pages but with specific Google scope. The generic name implies any URL, but the description fails to explicitly state that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical use cases, or when not to use it. The sibling tools (e.g., crawl_google_serp) are not referenced for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_graph_infoA
키워드 관계 정보(리스닝마인드의 클러스터 파인더의 결과 조회, 키워드 관계 정보 조회)
모든 키워드는 소문자로 변환하여 요청
args:
req_param: ClusterParameters, 키워드 관계 정보 조회 요청 파라미터
returns:
dict[ClusterResponse, Any] | None: 키워드 관계 정보 조회 결과
ClusterResponse 는 아래와 같은 정보를 포함합니다:
nodes: 조회한 키워드의 앞과 뒤로 2혹은 2hop 거리 안에서 검색된 모든 키워드(노드) 리스트
nodes_count: 키워드(노드) 수
rels: 관계 리스트
rels_count: 관계 수
closeness: 관계에서 키워드가 출현한 위치.
distance: 모든 관계에서 키워드가 출현한 위치.
type: PEOPLE_ALSO_SEARCH_FOR | RELATED_SEARCHES | REFINEMENTS | PEOPLE_ALSO_ASK_FOR
| Name | Required | Description | Default |
|---|---|---|---|
| req_param | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In absence of annotations, the description discloses the lowercase normalization of keywords and details the return structure (nodes, rels, etc.). However, it does not mention read-only nature or permissions, which are implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose with repetition (e.g., '키워드 관계 정보 조회' twice) and includes a docstring format. It is structured but could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description adequately explains the return fields and types. It covers the main aspects of the tool, though it omits edge cases and interpretation guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has detailed descriptions for nested properties, but the top-level 'req_param' lacks a description (0% coverage). The description adds value by specifying the lowercase normalization and explaining the return type, compensating for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that it queries keyword relationship information and cluster finder results, but it does not clearly distinguish from sibling tools like get_keyword_info. The verb and resource are specific but somewhat redundant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description only states what it does without providing context about suitable scenarios or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keyword_infoA
키워드 정보 조회 (최대 1000개 키워드 조회 가능)
모든 키워드는 소문자로 변환하여 요청
키워드 정보 조회 결과는 키워드 정보 조회 결과 형식에 따라 반환됩니다.
args:
req_param: KeywordParameters, 키워드 정보 조회 요청 파라미터
returns:
dict[KeywordResponse, Any] | None: 키워드 정보 조회 결과
KeywordResponse 는 아래와 같은 정보를 포함합니다:
ads_metrics:
- competition: 경쟁도 수준 (LOW: 0-33, MEDIUM: 34-66, HIGH: 67-100)
- competition_index: 구글 검색광고 경쟁도 (0-100)
- cpc: 클릭당 비용
- volume_avg: 최근 3개월 월평균 검색량
- volume_total: 최근 12개월 총 검색량
- volume_trend: 3개월 전 대비 검색량 증감율
- gg_volume_avg: 구글 최근 3개월 월평균 검색량
- gg_volume_total: 구글 최근 12개월 총 검색량
- gg_volume_trend: 구글 검색량 증감율
- nv_volume_avg: 네이버 최근 3개월 월평균 검색량
- nv_volume_total: 네이버 최근 12개월 총 검색량
- nv_volume_trend: 네이버 검색량 증감율
intents:
- I: Informational - 잠재 소비자가 제품 자체 정보나 제품이 포함된 카테고리 등에 대한 정보를 얻기 위한 검색
- N: Navigational - 잠재 소비자가 특정 웹사이트나 브랜드 혹은 매장 위치를 찾기 위한 검색
- C: Commercial - 구매 전 단계에서 비교, 리뷰, 추천 등의 구매 의사 결정에 도움이 되는 정보를 구하려는 목적의 검색
- T: Transactional - 구매를 목적으로 하는 검색
monthly_volume:
- month: 해당 월
- gg: 구글 검색량
- nv: 네이버 검색량
- total: 구글 + 네이버 검색량| Name | Required | Description | Default |
|---|---|---|---|
| req_param | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description compensates by detailing the return structure (ads_metrics, intents, monthly_volume) and a preprocessing requirement (lowercase conversion). It does not mention side effects, but the read-only nature is implied by the tool name and known terms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear purpose first, then behavioral notes, then a detailed return format. While lengthy, the detail is justified by the absence of an output schema. It remains front-loaded and logically organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the return data (multiple nested objects), the description thoroughly documents each field. It lacks an output schema but compensates fully. It does not cover error handling, but the tool's behavior is sufficiently described for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for both parameters ('요청 키워드' and '국가 코드') and enums for gl. The description adds no new parameter details but reinforces the request format. Since schema coverage is adequate, the description is satisfactory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '키워드 정보 조회' (keyword information inquiry) with a maximum of 1000 keywords. It distinguishes itself from sibling tools that focus on crawling or graph information by focusing on keyword metrics and intent analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not provide explicit guidance on when to use it versus alternative tools. It implies usage for retrieving keyword analytics but lacks when-not-to-use or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_pathB
Make a request to the Path Finder API of Hubble with proper error handling. Args: keyword: str, 검색 키워드(모든 키워드는 소문자로 변환하여 요청) gl: str, 지역 코드 한국 일본(kr, jp) limit: int, 검색 경로 분석 결과 최대 개수(기본값 300) Returns: dict[str, Any] | None: 검색 키워드의 검색 경로 분석 결과
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| gl | No | kr | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits. It mentions lowercase conversion and error handling, but omits side effects, authentication, rate limits, and mutation status. The 'dict or None' return type is stated but no details on failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses a docstring format ('Args:', 'Returns:') which is not ideal for MCP. It is moderately concise but front-loads an irrelevant implementation detail ('proper error handling') instead of the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description explains the core behavior and return type but lacks details on return structure, error scenarios, constraints, and potential side effects. It partially completes the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is crucial. It provides type, role, and default for all three parameters (keyword lowercase, gl enum, limit as int with default 300), adding significant value beyond the schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool makes a request to the Path Finder API and returns search path analysis results, which is clear but not a concise verb+resource. It distinguishes from siblings (crawl_* tools) but could be more specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Sibling tools (crawl_*, get_graph_info, get_keyword_info) are not referenced for comparison, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v1.0.0- Added
crawl_google_serp - Added
crawl_google_suggest - Removed
crawl_google_suggest_extensions - Changed
crawl_google_trends7 fields changed- added
Input schema / $defsAdded value: +{ + "GoogleTrendsParameters": { + "properties": { + "gl": { + "enum": [ + "kr", + "jp" + ], + "title": "Gl", + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "title": "Keywords", + "type": "array" + }, + "location": { + "enum": [ + "South Korea", + "Japan" + ], + "title": "Location", + "type": "string" + }, + "timeframe": { + "enum": [ + "now 1-H", + "now 7-d", + "today 1-m" + ], + "title": "Timeframe", + "type": "string" + } + }, + "required": [ + "keywords", + "location", + "timeframe", + "gl" + ], + "title": "GoogleTrendsParameters", + "type": "object" + } +} - removed
Input schema / properties / glRemoved value: -{ - "enum": [ - "kr", - "jp" - ], - "title": "Gl", - "type": "string" -} - removed
Input schema / properties / keywordsRemoved value: -{ - "items": { - "type": "string" - }, - "title": "Keywords", - "type": "array" -} - removed
Input schema / properties / locationRemoved value: -{ - "enum": [ - "South Korea", - "Japan" - ], - "title": "Location", - "type": "string" -} - added
Input schema / properties / req_paramAdded value: +{ + "$ref": "#/$defs/GoogleTrendsParameters" +} - removed
Input schema / properties / timeframeRemoved value: -{ - "enum": [ - "now 1-H", - "now 7-d", - "today 1-m" - ], - "title": "Timeframe", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "keywords", - "location", - "timeframe", - "gl" -]New value: +[ + "req_param" +]
- Changed
get_search_path1 field changed- changed
Input schema / properties / limit / defaultPrevious value: -200New value: +300
- Removed
get_serp_info
7 tool updates
- First observed
crawl_google_suggest_extensions - First observed
crawl_google_trends - First observed
crawl_web_page - First observed
get_graph_info - First observed
get_keyword_info - First observed
get_search_path - First observed
get_serp_info
TDQS
Each tool has a clearly distinct purpose: SERP, suggestions, trends, web page crawling, keyword graph info, keyword details, and search path. No overlap or ambiguity.
All tool names use snake_case and follow a verb_noun pattern (crawl_*, get_*). The two verb prefixes are consistent with their functionality, though they differ from each other.
7 tools is well-scoped for a keyword research and analysis server. Each tool covers a distinct aspect of SEO/keyword research without redundancy.
The set covers the main workflow: data collection (SERP, suggestions, trends, web pages) and analysis (graph, keyword info, search path). Minor gaps (e.g., no export or comparison tool) but core functionality is solid.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Python-based server that implements the Model Context Protocol to interface with Claude Desktop as an MCP client, supporting interaction through efficient memory management.1MIT

PostHog MCP Serverofficial
-licenseNot gradedqualityNot gradedmaintenanceA Model Context Protocol server that enables Claude Desktop users to interact directly with PostHog, allowing them to view projects and create annotations through natural language commands.10-- AlicenseBqualityDmaintenanceAn educational implementation of a Model Context Protocol server that demonstrates how to build a functional MCP server for integrating with various LLM clients like Claude Desktop.1163MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides Claude and other LLMs with read-only access to Hugging Face Hub APIs, enabling interaction with models, datasets, spaces, papers, and collections through natural language.1072MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ascentkorea/hubble_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server