BMKG MCP Server
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Most tools have distinct purposes, but there is some overlap between earthquake-related tools. get_felt_earthquakes, get_latest_earthquake, and get_significant_earthquakes all retrieve earthquake data with subtle differences in criteria (felt vs. latest vs. magnitude ≥5.0), which could cause confusion for an agent. The weather and location tools are clearly distinct.
Naming Consistency5/5All tool names follow a consistent snake_case pattern with a clear verb_noun structure (e.g., get_weather_forecast, search_location_code). The naming is uniform across all tools, making them predictable and easy to understand.
Tool Count5/5With 9 tools, the count is well-scoped for a BMKG (meteorology and geophysics) server. It covers earthquakes, weather forecasts, alerts, and location searches without being overwhelming, allowing for comprehensive functionality in a manageable set.
Completeness4/5The tool set provides good coverage for BMKG data, including earthquakes, weather forecasts, and alerts with search capabilities. A minor gap is the lack of tools for historical data or more granular weather parameters, but core workflows are supported with tools like get_weather_forecast and search_location_code working together.
Average 4.3/5 across 9 of 9 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 0 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses this is a read operation from a local database and mentions the output format ('daftar kelurahan/desa dengan kode lengkap'), but doesn't cover important behavioral aspects like error handling, data freshness, rate limits, or authentication requirements. It adds some context about the data's purpose but leaves significant gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with three focused sentences: purpose statement, parameter explanation with example, and return value clarification. It's front-loaded with the core functionality. The bilingual presentation (Indonesian/English) is slightly redundant but still efficient. Every sentence adds value, though the structure could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple nature (single parameter, read-only operation, has output schema), the description provides adequate context. It covers the purpose, parameter meaning with example, and output purpose. The existence of an output schema means the description doesn't need to detail return structure. However, for a database query tool, additional context about data source reliability or update frequency would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema has no parameter descriptions), the description fully compensates by providing essential semantic information: it explains what 'district_code' represents ('Kode kecamatan'), provides a concrete example ('33.02.07 untuk Sumpiuh'), and clarifies this is a required input. The description adds substantial value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Mendapatkan daftar semua kelurahan/desa' - Getting a list of all villages/subdistricts) and resource ('dalam kecamatan tertentu dari database lokal' - within a specific district from the local database). It distinguishes from siblings by focusing on village-level data retrieval rather than earthquake or weather data, which are handled by other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying it retrieves village data for weather forecasting purposes ('siap digunakan untuk prakiraan cuaca'), but doesn't explicitly state when to use this tool versus alternatives like 'search_location_code' or 'search_weather_alerts_by_kecamatan'. It provides some directional guidance but lacks explicit comparison or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
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 discloses key behavioral traits: it returns 15 items, filters by magnitude ≥5.0, includes specific data fields (time, location, magnitude, depth, tsunami potential), and cites the data source (BMKG). However, it doesn't mention potential limitations like rate limits, data freshness, or error conditions, which would be helpful for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and well-structured: two sentences that efficiently convey purpose, scope, return details, and data source. Every sentence adds value without redundancy. The first sentence states what the tool does, and the second provides additional context about the returned data and source.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, but with an output schema), the description is reasonably complete. It explains what the tool returns and the data source, which complements the output schema. However, it could be more complete by mentioning any constraints (e.g., data update frequency) or typical use cases, though the output schema likely covers return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (empty schema). The description doesn't need to add parameter semantics since there are none. A baseline of 4 is appropriate for a zero-parameter tool where the schema fully covers the absence of inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Mengambil daftar 15 gempabumi terkini dengan magnitudo 5.0 atau lebih' (Retrieves a list of 15 recent earthquakes with magnitude 5.0 or higher). It specifies the exact resource (earthquakes), quantity (15), and magnitude threshold (5.0+), distinguishing it from siblings like 'get_latest_earthquake' (singular) and 'get_felt_earthquakes' (different criteria).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when you need recent significant earthquakes (magnitude ≥5.0). It doesn't explicitly mention when not to use it or name alternatives, but the context is sufficiently clear given the sibling tools. For example, 'get_latest_earthquake' might return a single latest event regardless of magnitude, while this tool returns multiple filtered events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool returns (detailed CAP information including affected areas) but doesn't mention important behavioral aspects like error handling (e.g., what happens with invalid CAP codes), rate limits, authentication requirements, or whether it's a read-only operation. The description is accurate but incomplete for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It starts with the core purpose, then provides parameter explanations in a clear 'Args' section, and concludes with return value details. Every sentence adds value with no redundancy or unnecessary information. The bilingual nature (Indonesian/English) is efficiently handled.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (though not shown here), the description doesn't need to fully explain return values, which it acknowledges by listing key return fields. With no annotations and 2 parameters well-explained, the description provides good context for a read-only retrieval tool. However, it could be more complete by addressing potential errors or behavioral constraints that aren't covered by annotations or schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for the lack of parameter documentation in the schema. It successfully explains both parameters: 'cap_code' is described as a CAP code with an example, and 'language' is explained as the output language with options and default value. This adds significant meaning beyond the bare schema, though it could provide more context about CAP code format or validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Mengambil detail peringatan dini cuaca' - retrieving early weather alert details) and resources ('untuk provinsi tertentu berdasarkan CAP code' - for a specific province based on CAP code). It distinguishes itself from sibling tools like 'get_weather_alerts' (likely listing alerts) and 'search_weather_alerts_by_kecamatan' (searching by district) by focusing on detailed information for a specific alert identified by CAP code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when detailed information about a specific weather alert is needed, identified by its CAP code. It doesn't explicitly state when NOT to use it or name specific alternatives, but the context implies it's for detailed retrieval rather than listing or searching, which is covered by sibling tools. This gives good guidance but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the data source (CAP-based), geographic granularity (kecamatan level), and return format (list with province, time, area description, CAP links). However, it does not mention rate limits, authentication needs, or potential errors, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with three sentences: purpose, parameter details, and return information. Each sentence adds value without redundancy, and it is front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 parameter, no annotations, but with an output schema), the description is mostly complete. It covers purpose, parameter semantics, and return content. However, it could improve by addressing potential limitations or error cases, though the output schema may handle return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by explaining the 'language' parameter's purpose, options ('id' or 'en'), and default value. Since there is only one parameter, this provides adequate semantic context beyond the schema's basic structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Mengambil peringatan dini cuaca ekstrem') and resource ('di Indonesia'), with precise scope ('yang sedang aktif', 'berbasis Common Alerting Protocol (CAP) hingga level kecamatan'). It distinguishes from siblings by focusing on active weather alerts rather than forecasts, earthquakes, or detailed searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving active extreme weather alerts in Indonesia, but does not explicitly state when to use this tool versus alternatives like 'get_weather_forecast' or 'search_weather_alerts_by_kecamatan'. It provides clear context but lacks explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by specifying it searches 'di seluruh peringatan aktif' (across all active alerts) and returns relevant ones, but doesn't mention important behavioral aspects like rate limits, authentication requirements, error handling, or whether results are paginated. The description doesn't contradict any annotations since none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with purpose statement, parameter explanations, and return value description in separate sections. It's appropriately sized at 4 sentences, though the Args/Returns formatting could be more integrated with the natural language flow. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (search with filtering), no annotations, but with an output schema present, the description does well. It covers purpose, parameters, and return content adequately. The output schema existence means the description doesn't need to detail return structure, but it could benefit from mentioning error cases or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (titles only, no descriptions), the description fully compensates by providing clear semantic meaning for both parameters. It explains 'kecamatan' as the subdistrict name to search for with examples, and 'language' as the output language with valid values and default. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Mencari peringatan dini cuaca' - search for early weather warnings) and resource ('untuk kecamatan tertentu' - for a specific subdistrict). It distinguishes itself from sibling tools like 'get_weather_alerts' (general alerts) and 'get_weather_alert_detail' (detailed view) by specifying the kecamatan-based filtering scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when searching for active weather alerts affecting a specific kecamatan. However, it doesn't explicitly state when NOT to use it or mention alternatives like 'get_weather_alerts' for broader searches or 'get_weather_forecast' for non-alert weather information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it retrieves a fixed list of 15 items, specifies the data source (BMKG), and details the returned information (time, location, magnitude, depth, and felt areas). This covers key aspects like output format and data origin, though it could mention rate limits or update frequency for a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and well-structured in three sentences: the first states the purpose, the second details the return values, and the third specifies the data source. Every sentence adds value without redundancy, making it front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, but has an output schema), the description is complete. It explains what the tool does, what it returns, and the data source, which is sufficient for an AI agent to understand and invoke it correctly without needing to cover parameters or output details that are handled by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description does not need to add parameter information, and it correctly focuses on the tool's function without unnecessary details, maintaining an appropriate baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Mengambil daftar' - 'Retrieves list') and resources ('15 gempabumi terkini yang dirasakan masyarakat' - '15 latest earthquakes felt by the public'), distinguishing it from siblings like 'get_latest_earthquake' and 'get_significant_earthquakes' by specifying it's about felt earthquakes with a fixed count of 15.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying '15 gempabumi terkini yang dirasakan masyarakat' (15 latest earthquakes felt by the public), which suggests when to use this tool (for recent felt earthquakes) versus alternatives like 'get_latest_earthquake' or 'get_significant_earthquakes'. However, it does not explicitly state when not to use it or name alternatives, keeping it at a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it's a read operation ('Mengambil'), specifies the data source (BMKG), and outlines return details (time, location, magnitude, tsunami potential). It doesn't mention rate limits or authentication needs, but for a public data tool, this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: purpose, return details, and data source. Each sentence adds value without redundancy, and it's front-loaded with the core functionality. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, but has output schema), the description is complete. It explains what the tool does, the data source, and what to expect in returns. With an output schema, it doesn't need to detail return values further, making this sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%. The description doesn't need to explain parameters, so it meets the baseline of 4 for zero-parameter tools. It appropriately focuses on what the tool does rather than input details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Mengambil data gempa bumi terbaru yang dirasakan' (Retrieve latest felt earthquake data). It specifies the criteria (M 5.0+ or significant) and distinguishes from siblings like 'get_felt_earthquakes' and 'get_significant_earthquakes' by focusing on the single latest event rather than multiple events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for the latest felt/significant earthquake data. It doesn't explicitly state when not to use it or name alternatives, but the context is sufficient given the sibling tool names imply different scopes (e.g., 'get_felt_earthquakes' for multiple events).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by explaining the tool searches a local database, supports all administrative levels, returns hierarchical results, and provides integration guidance with get_weather_forecast(). It doesn't mention performance characteristics, error handling, or authentication requirements, but covers core behavioral aspects adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, Args, Returns, Note), uses bullet points for admin_level values, and every sentence serves a purpose. It's appropriately sized for a tool with 2 parameters and provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, no annotations, and the presence of an output schema, the description is quite complete. It explains what the tool does, documents parameters thoroughly, describes the return format, and provides integration guidance. The main gap is lack of explicit error cases or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed parameter documentation including examples for location_name and a comprehensive explanation of admin_level values with translations and default behavior. The Args section adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Mencari' - search) and resource ('kode wilayah Indonesia' - Indonesian region codes), and distinguishes it from siblings by focusing on location code lookup rather than earthquake or weather data retrieval. The opening sentence provides a complete functional statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (searching Indonesian location codes at various administrative levels) and includes a helpful note about using village codes with get_weather_forecast(). However, it doesn't explicitly state when NOT to use it or provide direct alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: data source (BMKG), forecast scope (3 days with 3-hour intervals, ~24 forecasts total), and return format details. It doesn't mention rate limits or error conditions, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Sumber Data, Note) and efficiently conveys necessary information. While comprehensive, it maintains appropriate length with each sentence adding value. Minor room for tightening exists in the example explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, no annotations, and the presence of an output schema, the description provides excellent completeness. It covers purpose, parameter semantics, return content, data source, usage prerequisites, and format examples - everything needed for effective tool invocation despite the structured data gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for the single parameter, the description fully compensates by explaining the parameter's meaning ('Kode wilayah Indonesia level desa/kelurahan adm4'), format ('[kode_provinsi].[kode_kabkota].[kode_kecamatan].[kode_desa]'), providing a concrete example ('31.71.01.1001 = DKI Jakarta > Jakarta Pusat > Gambir > Gambir'), and noting the default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Mengambil prakiraan cuaca' - Get weather forecast) and resource ('berdasarkan kode wilayah adm4' - based on adm4 region code), distinguishing it from sibling tools like earthquake or alert tools. It precisely defines what the tool does without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when-to-use guidance: 'Untuk mencari kode wilayah, gunakan search_location_code() terlebih dahulu' (To find region codes, use search_location_code() first). It names the specific alternative tool and establishes a clear prerequisite workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/revomkg/mcp-bmkg'
If you have feedback or need assistance with the MCP directory API, please join our Discord server