Skip to main content
Glama

arnfa-mcp

MCP server for Arnfa — weather-aware trip planning across Thailand. Lets any AI agent read the Thai sky and plan a weather-fit day in 150+ areas (Bangkok neighbourhoods & districts, all 76 province cities, tourist hotspots).

Reads Arnfa's open API — no key, no fabrication (real forecast or an honest error).

Tools

  • arnfa_list_areas(query?, tier?) — find a valid area key (search by Thai/English name).

  • arnfa_plan_day(area, budget?, day?) — an ordered, weather-fit itinerary; day 0–6 plans ahead.

  • arnfa_sky_now(area) — current sky + a go-out verdict for one area.

  • arnfa_where(day?) — rank WHERE the sky is clearest across Thailand ("ไปไหนดี").

  • arnfa_cooling_centers(lat, lng, n?) — nearest official Bangkok cooling refuges (ห้องหลบร้อน) for dangerous heat / PM2.5.

  • arnfa_ask(message, prior?) — ask in natural Thai/English; the grounded engine reads the real sky and narrates a plan. Pass back the previous reply's intent as prior to refine (multi-turn).

Related MCP server: Travel Planner MCP Server

Quickstart

npx arnfa-mcp        # runs the stdio MCP server, no install

Wire into a client (e.g. Claude Code .mcp.json):

{ "mcpServers": { "arnfa": { "command": "npx", "args": ["-y", "arnfa-mcp"] } } }

From source

npm install && npm run build
node dist/index.js                                # stdio MCP server
ARNFA_BASE=http://localhost:3248 npm run smoke    # quick check against a deployment

ARNFA_BASE (default https://arnfa.vercel.app) points the tools at any Arnfa deployment.

MIT.

Available Tools

6 tools
arnfa_askA

Ask Arnfa AI in natural Thai or English — it reads the REAL sky and returns a weather-fit plan (the same grounded engine, narrated). For a follow-up that refines the last plan, pass back the intent from the previous reply as prior.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorNothe intent object from a previous arnfa_ask reply, to refine (change day, area, vibe…)
messageYese.g. 'อยากไปคาเฟ่ชิลๆ พรุ่งนี้ เลี่ยงฝน'

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it states the tool reads live weather data, returns a plan, and explains the follow-up mechanism using prior. It doesn't cover error behavior or rate limits, but for a query tool, the core behavior is transparent enough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every clause earns its place. It avoids fluff and clearly explains the main action and the follow-up pattern.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-param tool with no output schema or annotations, the description is complete: it specifies language, input type, return value, and chaining pattern. It provides enough context for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining how to use 'prior' in follow-up calls, linking it to the previous reply's 'intent'. This clarifies the chaining behavior beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Ask') and resource ('Arnfa AI') and clearly states the outcome: a weather-fit plan based on real sky data. It distinguishes itself from siblings by emphasizing natural Thai/English input and the 'same grounded engine, narrated', which differentiates it from more structured tools like arnfa_plan_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool (natural language queries in Thai/English, follow-up refinements) but does not explicitly name alternatives or exclusions. The phrase 'the same grounded engine' implies a relationship to arnfa_plan_day, but an explicit comparison is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arnfa_cooling_centersA

Nearest OFFICIAL Bangkok cooling centers (ห้องหลบร้อน) to a point — for dangerous heat or PM2.5. Real กทม. open data.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNohow many (default 3)
latYes
lngYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states the data source ('Real กทม. open data') and implies a read-only lookup, but it does not disclose return format, side effects, or external dependencies. This is moderate transparency for a simple geo-query tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that packs the core function, use case, and data source without wasted words. Every clause adds value, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks an explanation of return values (no output schema) and does not mention the optional 'n' parameter, so it is not fully complete. However, for a simple tool with few parameters, it captures the primary purpose and context adequately, earning a mid-range score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only 'n' has a description). The description mentions 'to a point' implying lat/lng coordinates, but it does not elaborate on parameter meaning or format, and it never mentions the 'n' parameter. It does not compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds 'Nearest OFFICIAL Bangkok cooling centers' to a point, which is a specific verb+resource+scope combination. It also distinguishes from siblings like arnfa_where or arnfa_ask by focusing on cooling centers for heat/PM2.5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'for dangerous heat or PM2.5.' It does not explicitly mention alternatives or exclusions, so it stops short of a full 5, but the context is specific and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arnfa_list_areasA

List/search Arnfa's plannable areas across Thailand (Bangkok neighbourhoods & districts, all 76 province cities, tourist spots) with real POI counts. Use to find a valid area key.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNo
queryNoThai or English name fragment, e.g. 'chiang' or 'ภูเก็ต'

TDQS

A4/5.0
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 disclosing behavior. It adds 'with real POI counts', which provides insight into the quality of results, and 'list/search' indicates read-only behavior. However, it does not describe return format, filtering details, or any limitations, so it is only partially 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both informative and front-loaded with the essential purpose. No filler or repetition of schema details. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list/search tool with no output schema, the description adequately explains the tool's scope, use case, and highlights the 'real POI counts' feature. It gives enough context for an agent to know when to use it, though it could be slightly clearer on how the parameters interact.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes the 'query' parameter but not 'tier'. The description mentions categories (neighborhoods, districts, province cities, tourist spots) that loosely correspond to the tier enum but does not explicitly map them or explain that the parameters are optional. This adds some context but does not fully compensate for the 50% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'List/search Arnfa's plannable areas across Thailand' with specific granularity levels (Bangkok neighbourhoods & districts, all 76 province cities, tourist spots). This distinguishes it from sibling tools like arnfa_plan_day or arnfa_sky_now, which are clearly different in purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use to find a valid `area` key', which gives a concrete use case and directs when to invoke this tool. However, it does not state when not to use it or mention alternatives, so it misses the highest bar for explicit distinctions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arnfa_plan_dayA

Plan a weather-fit day in an area: the engine reranks real places by the forecast at each arrival time and returns an ordered itinerary. Real forecast only — never fabricated.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo0=today … 6 days ahead
areaYesarea key from arnfa_list_areas, e.g. 'chiang-mai'
budgetNominutes: 150=quick, 240=half day, 420=full day

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the transparency burden. It discloses key behavioral traits: reranking based on forecast at arrival time, returning an ordered itinerary, and the strong guarantee that it uses 'real forecast only — never fabricated.' This goes beyond the schema and sets clear expectations, including a data integrity promise.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, tightly packed with useful information: purpose, mechanism, output, and a key behavioral assurance. It is front-loaded with the main verb and avoids any filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a planning tool with no output schema, the description sufficiently explains the return value ('ordered itinerary') and the overall workflow. It could be more specific about the number of places returned or itinerary structure, but given the tool's scope and the completeness of the parameter schema, it is adequately complete for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with each parameter (area, day, budget) already explained clearly. The description itself adds no new parameter info beyond mentioning 'area' generically. Since the schema already does the heavy lifting, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Plan') and resource ('a weather-fit day in an area'), and explains the mechanism (reranks places by forecast) and output (ordered itinerary). It distinguishes itself from sibling tools like arnfa_list_areas (just lists areas) and arnfa_sky_now (current sky), making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: when the user wants a day plan optimized for weather in a specific area. It does not explicitly mention alternatives or when not to use it, but the context is clear and the 'ordered itinerary' outcome signals it as the planning tool among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arnfa_sky_nowA

Current sky + a go-out verdict for an area (real forecast at its centre).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaYesarea key, e.g. 'phuket'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It reveals that the forecast is 'real forecast at its centre', a useful limitation, but does not explain how the verdict is derived or mention read-only nature or any potential side effects. This adds some context but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded and contains no filler. It efficiently conveys the tool's purpose and a notable caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with no output schema, the description is nearly complete. It explains the core output (current sky + verdict) and an important spatial limitation. However, it omits any detail about the output format or how the verdict is determined, which could be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with the parameter 'area' described as 'area key, e.g. 'phuket''. The description adds no extra parameter semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool provides 'Current sky + a go-out verdict' for an area, using a specific verb and resource. It distinguishes itself from siblings like arnfa_plan_day (future planning) and arnfa_list_areas (listing areas) by focusing on current conditions and a verdict.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'current sky' implies use for immediate conditions, and the 'go-out verdict' suggests a decision aid, providing some context. However, it does not explicitly mention when to prefer this over alternatives like arnfa_plan_day or arnfa_where, nor does it state any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arnfa_whereB

Rank WHERE the sky is clearest across Thailand for a chosen day — the 'ไปไหนดี / where should I go' view. One bulk real forecast, never fabricated.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo0=today … 6 days ahead

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral transparency burden. It discloses that the tool returns a 'bulk real forecast, never fabricated', which is a meaningful promise about data authenticity and request scope. However, it does not disclose details such as data source, latency, error handling, or whether any side effects occur, though the read-only nature is reasonably inferred from 'Rank WHERE'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that packs purpose, scope, and a data-quality promise without waste. Every phrase earns its place, making it both concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter) and the explicit 'Rank WHERE' phrasing, the description conveys the essential purpose. However, without an output schema or further behavioral details, it leaves some ambiguity about the exact return format (e.g., a sorted list of locations with scores). The 'bulk' hint partially addresses this, so the description is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, 'day', is fully described in the input schema with '0=today … 6 days ahead', and the description merely restates 'chosen day' without adding new semantic detail. With 100% schema description coverage, the baseline of 3 is appropriate and the description does not elevate it further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: 'Rank WHERE the sky is clearest across Thailand for a chosen day'. It also adds thematic context with the 'ไปไหนดี / where should I go' view, which helps differentiate it from a general sky-now tool. However, it stops short of explicitly contrasting with sibling tools like arnfa_sky_now or arnfa_list_areas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to choose this tool over alternatives. It does mention 'for a chosen day' as a temporal condition, but it does not state when not to use it, nor does it reference any sibling tools or alternative approaches.

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.

  1. 6 tool updatesv0.2.0
    • First observedarnfa_ask
    • First observedarnfa_cooling_centers
    • First observedarnfa_list_areas
    • First observedarnfa_plan_day
    • First observedarnfa_sky_now
    • First observedarnfa_where

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but arnfa_plan_day and arnfa_ask both produce weather-fit plans, which could cause confusion. However, the descriptions clarify that one is a direct structured planner and the other is an AI-narrated follow-up, so the overlap is manageable.

Naming Consistency3/5

While all tools share the 'arnfa_' prefix, the naming conventions vary: 'list_areas' and 'plan_day' use verb_noun, but 'sky_now' uses noun_adverb, 'where' is just an adverb, 'cooling_centers' is a noun phrase, and 'ask' is a bare verb. This mixed style is readable but lacks a consistent pattern.

Tool Count5/5

With 6 tools covering area discovery, planning, current sky, location ranking, emergency cooling centers, and natural language queries, the count is well-scoped for the intended functionality. Each tool earns its place without unnecessary bloat or sparseness.

Completeness4/5

The tool surface covers core workflows: finding areas, planning a day, checking current conditions, choosing the clearest location, and getting emergency centers. The only minor gap is the lack of a direct multi-day forecast tool, but agents can work around it by using plan_day for specific dates.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables intelligent travel planning by combining weather forecasts and route calculations for destinations. Provides personalized travel recommendations based on weather conditions and supports trip planning with persistent conversation memory.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes public weather and climate data through a standardized API, allowing AI agents to retrieve current conditions, 7-day forecasts, and historical data. It enables weather-aware automation and data enrichment for conversational agents and travel planning.
    -

Appeared in Searches