Skip to main content
Glama
NeshanMaps

Neshan MCP Server

Official
by NeshanMaps

Neshan MCP Server

با این پروژه، دستیارهای هوش مصنوعی مثل Claude Desktop یا Cursor به قابلیت‌های نقشه نشان دسترسی پیدا می‌کنند — یعنی می‌توانی مستقیم در چت با آن‌ها بگویی «مسیر خونه تا محل کارم رو با ترافیک الان نشونم بده» یا «نزدیک‌ترین کافه به این مختصات کجاست؟» و جواب را همان‌جا ببینی.

این پروژه یک MCP Server است: یک واسط استاندارد که سرویس‌های نشان را به شکلی در اختیار دستیار هوش مصنوعی می‌گذارد که خودش بتواند در لحظه تصمیم بگیرد از کدام‌شان استفاده کند.

چه کارهایی می‌توان با آن انجام داد؟

بعد از وصل کردن این سرور به دستیار خودت، می‌توانی به زبان معمولی از او بخواهی:

  • جستجوی مکان — پیدا کردن آدرس، کسب‌وکار یا نقطه‌ی موردنظر با اسم یا توضیح

  • تبدیل آدرس ↔ مختصات — گرفتن آدرس از روی مختصات جغرافیایی یا برعکس

  • مسیریابی — مسیر بین دو یا چند نقطه برای خودرو، موتور یا پیاده؛ با ترافیک لحظه‌ای، بدون ترافیک، یا بر اساس الگوی معمول/تاریخی

  • بهینه‌سازی مسیر چند ایستگاهی (TSP) — بهترین ترتیب سر زدن به چند مقصد

  • تطبیق مسیر با جاده (Map Matching) — تبدیل یک رشته نقطه GPS خام به مسیر واقعی روی جاده

  • ناحیه دسترس‌پذیری (Isochrone) — مشخص کردن محدوده‌ای که در زمان/فاصله مشخص از یک نقطه قابل دسترسی است

  • ماتریس فاصله/زمان — فاصله و زمان سفر بین چند مبدا و مقصد به‌صورت هم‌زمان

  • مسیریابی ناوگان (VRP) — تخصیص بهینه‌ی سفارش‌ها به چند وسیله نقلیه با در نظر گرفتن ظرفیت و بازه زمانی

  • نقشه استاتیک — گرفتن یک تصویر نقشه از یک نقطه، یا نقشه‌ای با کمانی بین مبدا و مقصد

  • نقشه تعاملی — ساخت یک صفحه نقشه با نشانگر و مسیر، قابل باز کردن در مرورگر

  • تحلیل ترافیک — وضعیت ترافیک یک منطقه در ۲۴ ساعت گذشته

  • جزئیات یک مکان — گرفتن اطلاعات کامل یک نتیجه جستجو (آدرس، دسته‌بندی، محله)

همه‌ی این‌ها از طریق مکالمه‌ی طبیعی با دستیار اتفاق می‌افتد؛ خودت لازم نیست چیزی درباره‌ی API یا اندپوینت‌ها بدانی.

Related MCP server: Google Maps MCP Server

سریع‌ترین راه: استفاده از سرور آماده

نیازی به نصب یا اجرای چیزی نیست — کافی است این را به تنظیمات کلاینت خودت (Claude Desktop، Cursor و…) اضافه کنی:

{
  "mcpServers": {
    "neshan": {
      "type": "http",
      "url": "https://platform-stage.rajman.org/mcp",
      "headers": { "Neshan-Api-Key": "کلید_شما_اینجا" }
    }
  }
}

آدرس سرور آماده: https://platform-stage.rajman.org/mcp

کلید API را هم از پنل نشان بگیر (بخش «گرفتن و تنظیم کلید API» را ببین). همین — دستیارت الان به قابلیت‌های نقشه‌ی نشان دسترسی دارد.

اگر ترجیح می‌دهی سرور را خودت روی سیستم/سرور خودت اجرا کنی، ادامه‌ی این راهنما را دنبال کن.

چیزهایی که لازم داری (برای اجرای خودت)

  1. Python 3.10 یا بالاتر

  2. کلید API نشان — از platform.neshan.org ثبت‌نام کن و کلید سرویس(های) موردنظرت را بگیر (رایگان برای شروع)

  3. یکی از این کلاینت‌ها: Claude Desktop، Cursor، یا هر کلاینت دیگری که از MCP پشتیبانی می‌کند

نصب

pip install -e .

گرفتن و تنظیم کلید API

کلید را از پنل نشان بگیر، سپس یکی از دو روش زیر را انتخاب کن:

روش ۱ — فایل env (ساده‌ترین حالت، برای Claude Desktop توصیه می‌شود):

cp .env.example .env
# داخل فایل .env مقدار NESHAN_API_KEY را با کلید خودت جایگزین کن

روش ۲ — ارسال کلید در هدر درخواست (برای حالت HTTP):

اگر سرور را به‌صورت HTTP اجرا می‌کنی، می‌توانی کلید را در هر اتصال جداگانه بفرستی و نیازی به فایل env نیست (بخش «اتصال کلاینت» را ببین).

اجرا

neshan-mcp          # حالت پیش‌فرض، برای Claude Desktop / Cursor

یا با Docker:

docker build -t neshan-mcp .
docker run -p 3000:3000 --env-file .env neshan-mcp

اتصال به Claude Desktop

فایل تنظیمات Claude Desktop را باز کن و این را اضافه کن:

{
  "mcpServers": {
    "neshan": {
      "command": "neshan-mcp",
      "env": { "NESHAN_API_KEY": "کلید_شما_اینجا" }
    }
  }
}

Claude Desktop را ری‌استارت کن — از این به بعد می‌توانی مستقیم درباره‌ی نقشه، مسیر و آدرس از آن بپرسی.

اتصال از طریق HTTP (Cursor یا کلاینت‌های دیگر)

اگر سرور را با neshan-mcp-http اجرا کرده‌ای:

{
  "mcpServers": {
    "neshan": {
      "type": "http",
      "url": "http://localhost:3000/mcp",
      "headers": { "Neshan-Api-Key": "کلید_شما_اینجا" }
    }
  }
}

سوالات متداول

آیا کلید API رایگان است؟ نشان یک پلن رایگان برای شروع دارد؛ برای مصرف بیشتر باید طبق پلن‌های platform.neshan.org ارتقا بدهی.

می‌توانم فقط بخشی از سرویس‌ها را فعال کنم؟ بله — برای هر سرویس (جستجو، مسیریابی، نقشه استاتیک و…) می‌توانی کلید جدا بگیری و جدا تنظیم کنی؛ کافی است در فایل .env مقدار NESHAN_KEY_<SERVICE> را ست کنی (مثلاً NESHAN_KEY_STATIC).

خطای مربوط به کلید می‌گیرم، چه کار کنم؟ مطمئن شو کلید درست کپی شده و در پنل نشان برای IP/دامنه‌ای که از آن درخواست می‌زنی محدودیتی نگذاشته باشی.

مستندات و پشتیبانی

Available Tools

16 tools
neshan_directionA

Calculate a route between two points, choosing how traffic is modeled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bearingNoOptional heading (0-360) at the origin. Only usable with traffic_mode 'live' or 'typical'.
vehicleNo'car', 'motorcycle', or 'pedestrian'. Must stay 'car' (the default) when traffic_mode='historical' — that mode has no vehicle choice.car
dest_latYes
dest_lngYes
date_timeNoRequired when traffic_mode='historical'. Target date and time as 'YYYY-MM-DDThh:mm' (no timezone, UTC+0).
waypointsNoOptional ordered stops as [[lat, lng], ...]. Not usable with traffic_mode='historical'.
origin_latYes
origin_lngYes
alternativeNoAlso return alternative routes.
routing_typeNoRequired when traffic_mode='historical'. 'DepartAt' to specify departure time, 'ArriveAt' for arrival time.
traffic_modeNoHow to account for traffic when routing: - 'live' (default): current real-time traffic. Use for "how long would this take if I left right now". - 'no_traffic': static road speeds; traffic is ignored entirely. - 'typical': pattern-based traffic refreshed every 15 minutes. Use for a stable ETA when live traffic is flaky or unavailable. - 'historical': traffic-aware ETA for a *future* date/time, based on historical patterns for that time of day. Requires routing_type and date_time. Covers Tehran, Mashhad, and Karaj only, up to one week ahead.live
avoid_traffic_zoneNoAvoid the central traffic (طرح ترافیک) zone.
avoid_odd_even_zoneNoAvoid the odd/even (زوج و فرد) zone. Not usable with traffic_mode='historical'.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does not disclose behavioral traits such as output format, API key requirements, or geographic limitations. However, detailed parameter descriptions in the schema provide some behavioral context (e.g., constraints for historical traffic mode).

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 sentence of 14 words, front-loaded with the core action, and contains no superfluous information.

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?

Given the tool's complexity (13 parameters, no output schema), the description does not explain what the tool returns (e.g., duration, distance, polyline). The parameter details are well-documented, but the overall completeness for an agent to use the tool effectively is moderate.

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 69%, and the parameter descriptions in the schema are detailed (e.g., traffic_mode explains modes and constraints). The tool description adds minimal extra meaning beyond 'traffic modeling', so it meets the baseline without excelling.

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 verb 'Calculate' and the resource 'route between two points', and specifies the distinguishing feature 'choosing how traffic is modeled'.

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 description implies usage for route calculation but does not explicitly mention when to use this tool versus siblings like 'neshan_distance_matrix' or 'neshan_map_matching'. No when-not-to-use guidance is provided.

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

neshan_distance_matrixB

Compute travel distance and duration for every origin-destination pair.

ParametersJSON Schema
NameRequiredDescriptionDefault
originsYesOrigin points as [[lat, lng], ...].
destinationsYesDestination points as [[lat, lng], ...].

TDQS

B3/5.0
Behavior2/5

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

No annotations exist, so the description bears full burden for behavioral disclosure. It does not state that the tool is read-only, any required authentication, rate limits, or performance characteristics. The description only states the core function, leaving the agent uninformed about side effects or constraints.

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

Conciseness3/5

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

The description is very short and front-loaded, but it is undersized for the tool's complexity. It could include more detail without being verbose, so it is not optimally sized.

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

Completeness2/5

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

The tool has no output schema, so the description should explain return values like distance and duration units or format. It fails to do so. Given the complexity of a distance matrix and the lack of structured output information, the description is incomplete.

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%, so baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions, which already specify lat/lng arrays. No extra context on formatting or constraints.

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 computes travel distance and duration for every origin-destination pair. The verb 'compute' and resource 'distance and duration' are specific and distinguish this matrix operation from single-pair directions or other map tools.

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?

No guidance is provided on when to use this tool versus alternatives like neshan_direction or when to avoid it (e.g., for large matrices). There is no mention of prerequisites, limitations, or context for use.

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

neshan_geocodeA

Convert a free-text Persian address into geographic coordinates.

Cheaper than neshan_geocode_plus — prefer this by default. Switch to neshan_geocode_plus only when the address includes a plaque (پلاک) number or refers to a point of interest by name, which this endpoint does not resolve.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe address text (street, landmark, etc.).

TDQS

A4.7/5.0
Behavior4/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 that the endpoint does not resolve plaque numbers or POI names, which is key behavioral info. It also mentions cost (cheaper). While it doesn't cover all possible behaviors (e.g., rate limits, auth), it provides sufficient transparency for a simple geocoding 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?

Three sentences, no redundancy, front-loaded with the core purpose. Every sentence adds distinct value: purpose, cost/usage guidance, and limitation. No wasted words.

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 tool with one parameter and no output schema, the description is complete. It covers what the tool does, when to use it (and when not to), and its limitations. No additional information is necessary.

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%, with a single parameter 'address' described generically. The description adds meaning by specifying it handles Persian addresses and noting limitations (no plaque/POI resolution). This adds value beyond the schema's minimal description.

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 core purpose: 'Convert a free-text Persian address into geographic coordinates.' It uses a specific verb ('convert') and resource ('address into coordinates'), and distinguishes from the sibling 'neshan_geocode_plus' by highlighting cost and address types.

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

Usage Guidelines5/5

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

Provides explicit guidance: 'Cheaper than neshan_geocode_plus — prefer this by default. Switch to neshan_geocode_plus only when the address includes a plaque (پلاک) number or refers to a point of interest by name.' This clearly states when to use this tool vs the alternative.

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

neshan_geocode_plusA

Geocode an address that includes a plaque (پلاک) number or a named point of interest — neshan_geocode can't resolve those.

More expensive than neshan_geocode, so only use this when plaque/POI resolution is actually needed. Whenever available, pass city, province, a bias location, and/or a bounding box: all of them improve geocoding accuracy regardless of whether plaque/POI resolution is involved.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name — improves accuracy.
ne_latNo
ne_lngNo
sw_latNo
sw_lngNo
addressYesThe address text.
bias_latNo
bias_lngNo
provinceNoProvince name — improves accuracy.

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It mentions the tool is more expensive and handles plaque/POI resolution, but lacks details about rate limits, returned data format, error behavior, or whether results are cached. This partial disclosure is adequate but not thorough.

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 focused sentences. The first sentence defines purpose and differentiation. The second provides usage guidance and accuracy tips. No redundant or extraneous text; 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?

Given 9 parameters, no output schema, and no annotations, the description covers the essential purpose, usage distinction, and parameter hints. However, it does not describe the return value format (e.g., coordinates, confidence) or error conditions, leaving some gaps. For a geocoding tool, this is mostly complete but could improve.

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 description coverage is low (33%), so the description compensates by explaining the purpose of city, province, bias, and bounding box parameters ('improves accuracy'). However, it does not detail the exact format or constraints for bounding box coordinates (e.g., order of ne/sw or bias lat/lng). This adds meaningful context but could be more precise.

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 it geocodes addresses with plaque numbers or named points of interest, and explicitly distinguishes from sibling tool 'neshan_geocode' which cannot resolve those. This provides a specific verb, resource, and scope, achieving full differentiation.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: 'only use this when plaque/POI resolution is actually needed' and notes it is 'More expensive than neshan_geocode'. It also advises providing city, province, bias, and bounding box to improve accuracy, offering clear when/why/alternatives.

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

neshan_get_point_by_hashA

Fetch full details of a place using its poiHash from neshan_search results.

Only works for items where neshan_search marked 'verified_details_available: true' (owner-claimed places). This call is expensive — use it selectively for specific candidates you need confirmed details on (precise address, category, working hours, region), not as a blanket follow-up for every search result.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesThe poiHash value taken from a result item returned by neshan_search.

TDQS

A4.2/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. It discloses that the call is expensive and only works for owner-claimed places. However, it omits details about error cases (invalid hash, unverified hash), idempotency, or rate limiting.

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 long, each serving a purpose: stating the function and providing usage guidance. It is front-loaded with the main action and avoids repetition or fluff.

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 (1 param, no output schema), the description covers the core purpose, prerequisite (verified flag), and expense concern. It lists example output fields (address, category, hours, region) which partially compensates for the missing output schema. Could be improved by mentioning error handling or output format.

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?

The schema covers 100% of parameters with a description linking hash to neshan_search results. The description adds the critical condition that it only works for verified places, providing context beyond the schema. For a single parameter, this is well-handled.

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 it fetches full details using a poiHash from neshan_search results. It specifies the resource (place details) and the action (fetch), and distinguishes from siblings like neshan_search which returns a list, as well as other tools like directions or geocoding.

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 advises when to use this tool: only for items with verified_details_available: true, and cautions against blanket use due to expense. It implies usage after neshan_search but does not explicitly name alternatives for non-verified places or bulk needs.

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

neshan_isochroneA

Calculate the reachable area from a point within a given time or distance (isochrone).

Returns a GeoJSON FeatureCollection. Each feature's geometry is a Polygon or LineString (controlled by 'polygon') and properties.metric is 'time' or 'distance'. Both distance and time can be requested simultaneously.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesCenter latitude.
lngYesCenter longitude.
timeNoMax reachable time in minutes. At least one of distance/time is required.
denoiseNoSimplification level 0–1 (0 = full detail, 1 = maximum simplification).
polygonNoTrue → Polygon geometry; False → LineString geometry (default False).
distanceNoMax reachable distance in km. At least one of distance/time is required.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the return type (GeoJSON FeatureCollection), geometry control via 'polygon', metric property, and the ability to request both time and distance. It does not mention side effects or safety, but for a calculation tool, this is adequate.

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 purpose, and every word is informative. No redundant or irrelevant information.

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 complexity (6 parameters, no output schema), the description covers key aspects: purpose, output format, and parameter interplay. It lacks details on coordinate system, error handling, or behavior of multiple features, but is largely sufficient for typical use.

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 baseline is 3. The description adds value by explaining output structure (FeatureCollection with geometry and properties) and how parameters interplay (both time/distance can be requested simultaneously), which goes beyond the schema's per-parameter descriptions.

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 states the purpose: 'Calculate the reachable area from a point within a given time or distance (isochrone).' It also describes the output format (GeoJSON FeatureCollection) and distinguishes from sibling tools by its specific functionality, though it does not explicitly contrast with them.

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 description implies that at least one of 'time' or 'distance' must be provided (from schema), and that both can be used simultaneously. However, it does not provide explicit guidance on when to choose this tool over siblings, nor any exclusions or prerequisite conditions.

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

neshan_map_matchingC

Snap a sequence of GPS points onto the road network (map matching).

ParametersJSON Schema
NameRequiredDescriptionDefault
path_pointsYesThe recorded track as [[lat, lng], ...].

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden. It only states 'snap' without detailing output (e.g., matched coordinates, segment IDs), error handling, or constraints (e.g., minimum points, sampling rate). Minimal transparency for a potentially complex operation.

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

Conciseness3/5

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

The one-sentence description is concise but omits critical details. Every sentence should earn its place; while succinct, it sacrifices completeness for brevity.

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

Completeness2/5

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

For a tool with only one parameter and no output schema, the description should clarify return values or behavior. It fails to mention what the tool outputs (e.g., matched path points) or any important caveats, making it incomplete for an agent to rely on.

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 coverage is 100% and the parameter description is clear. The tool description adds no extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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 states the tool's action (snapping GPS points onto the road network) and the resource (a sequence of GPS points). It distinguishes map matching from sibling tools like directions or geocoding, though it could specify the output type (e.g., matched points).

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?

No guidance on when to use map matching versus alternatives like direction or TSP. The description does not mention typical use cases (e.g., noisy GPS data) or prerequisites (e.g., point format requirements), leaving the agent to infer context.

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

neshan_map_viewA

Generate an interactive Neshan map HTML file and save it locally.

Creates a fully interactive map page using the Neshan Maps SDK. Supports markers with popups and route polylines drawn on the map. The map auto-fits to show all markers and routes. Open the returned file_path in any browser to view the map.

ParametersJSON Schema
NameRequiredDescriptionDefault
zoomNoInitial zoom level (2–21). Auto-calculated when markers/routes are present.
titleNoPage title shown in the header bar.نقشه نشان
routesNoRoute objects to draw. Each needs either 'encoded_polyline' (the overview_polyline field returned by neshan_direction) or a raw 'coordinates' list.
map_keyNoNeshan Web SDK API key (different from service key). Without this the base map tiles won't load, but markers and routes are still drawn. Get one from platform.neshan.org.
markersNoMarker objects to place on the map.
show_poiNoShow points of interest labels on the map.
center_latNoFallback center latitude (used when no markers/routes given).
center_lngNoFallback center longitude.
show_trafficNoOverlay live traffic layer on the map.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: file creation, auto-fit behavior, behavior without map_key (markers/routes still work). It lacks details on file size, performance, or cleanup, but covers the main behavioral traits adequately.

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

Conciseness4/5

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

The description is concise (5 lines) and front-loaded with the main purpose. It could be slightly more structured with bullet points, but every sentence adds value and it avoids verbosity.

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?

Given 9 parameters with thorough schema descriptions and no output schema, the description adequately explains the output (file_path to open in browser) and auto-fit behavior, making the tool's usage fully understandable.

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%, but the description adds context beyond the schema: explains auto-fit, file_path output, and map_key distinction from service key. This adds value, exceeding the baseline of 3.

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 states a specific verb ('Generate') and resource ('interactive Neshan map HTML file'), and clarifies it creates a page with markers and routes, distinguishing it from siblings like static maps or direction 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/5

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

The description implies usage for interactive map creation but does not explicitly contrast with alternatives (e.g., static_map for images, deeplink for navigation), leaving the agent to infer when to choose this tool.

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

neshan_reverse_geocodeA

Convert coordinates into a human-readable Persian address.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude.
lngYesLongitude.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so description carries full burden. It only states the core function without disclosing behavioral traits like geographic coverage, precision, error handling, or return format.

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?

A single, efficient sentence of 8 words that is front-loaded and contains no redundant information. Every word earns its place.

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?

For a simple tool with two parameters and no output schema, the description is mostly adequate. However, it lacks context about geographic limits (e.g., Iran-only) and what a 'human-readable Persian address' entails.

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%, so the schema already documents both parameters. The description adds no additional meaning beyond the schema, hence baseline score.

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 converts coordinates (lat/lng) to a human-readable Persian address, using a specific verb and resource. It distinguishes from sibling 'neshan_geocode' which does forward geocoding.

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 description implies when to use (when you have coordinates and need an address), but does not explicitly provide exclusions or alternatives. Context from sibling names helps, but no direct guidance.

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

neshan_static_mapC

Render a static map image (PNG) centered on a coordinate.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lngYes
zoomNoZoom level (1-20).
widthNo
heightNo
markerNoMarker color at the center (e.g. 'red'), or None.red
map_typeNo'day' or 'night'.day

TDQS

C2.8/5.0
Behavior2/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 only states the tool renders a PNG image, without mentioning behavioral traits like destructive potential, authentication requirements, rate limits, or how output is returned (binary, URL, etc.).

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 immediately states the tool's primary function. No extraneous content.

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

Completeness2/5

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

Given the tool has 7 parameters and no output schema or annotations, the description is too brief. It does not specify the return format (e.g., PNG binary, data URL), how to use the output, or any constraints (e.g., max image size beyond schema boundaries). This likely leaves an agent uncertain about result handling.

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 low (43%) with only zoom, marker, and map_type documented. The description adds that the map is centered on the given coordinate (lat, lng), but width, height, and other parameters lack any additional explanation. The description fails to compensate for the low schema coverage.

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 states it renders a static map image in PNG format centered on a coordinate. This distinguishes it from interactive map tools (neshan_map_view) and route-based tools, but does not explicitly differentiate from the sibling neshan_static_map_arc.

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 guidance on when to use this tool instead of alternatives. While the purpose is implied by the name and description, explicit context is missing.

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

neshan_static_map_arcA

Render a static map image (PNG) with a curved arc line between two points.

Useful for visualising geographic connections, travel reports, or origin-destination relationships on a map without performing full routing.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoArc colour as a hex string (e.g. '#FF0AA5'). Defaults to API default.
widthNoImage width in pixels (16-2000).
dashedNoRender the arc as a dashed line.
heightNoImage height in pixels (16-1200).
dest_latYes
dest_lngYes
map_typeNo'standard-day', 'standard-night', 'bright', 'osm-bright', 'neshan', 'dreamy', 'dreamy-gold', or 'pelak'.standard-night
origin_latYes
origin_lngYes
marker1_tokenNoCustom icon token for the origin marker (upload via Neshan panel).
marker2_tokenNoCustom icon token for the destination marker.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description must carry behavioral burden. It states the output is a PNG image, but does not disclose side effects, auth requirements, or how the image is returned.

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 concise sentences with zero waste, effectively front-loading the core purpose.

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

Completeness2/5

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

Given 11 parameters and no output schema, the description is insufficient. It omits return format, coordinate semantics, and differentiation from static_map siblings.

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?

With schema coverage at 64%, the description adds no parameter-specific context. The required coordinate parameters (origin_lat, etc.) lack descriptions in both schema and tool description.

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 renders a PNG with a curved arc between two points, and provides concrete use cases like visualising geographic connections.

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 when to use it (visualising geographic connections without full routing), but does not contrast with sibling tools like neshan_static_map.

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

neshan_traffic_analyticsA

Analyse historical traffic patterns around a location.

Returns three things:

  • kpi: overall traffic congestion score for the location (higher = more congested).

  • chart: 24-hour traffic breakdown — one entry per hour with a numeric score and a color key (green → free flow, yellow → moderate, orange → heavy, red → congested).

  • static_map: a PNG image of the area (~500 m radius) with traffic overlay.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude of the location.
lngYesLongitude of the location.

TDQS

A4.1/5.0
Behavior4/5

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

Without annotations, the description details the three outputs including chart color codes and map radius, but omits potential side effects, rate limits, or data freshness. Still informative.

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 concise, uses bullet points for clarity, and front-loads the main purpose. Every sentence adds value.

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?

Given no output schema, the description fully explains return components. Parameters are well-covered in schema. Tool complexity is adequately addressed.

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?

Input schema already provides 100% coverage with descriptions for lat/lng. The description adds no further parameter context (e.g., coordinate system, precision), so baseline 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 it analyzes historical traffic patterns and lists three specific outputs (kpi, chart, static_map), distinguishing it from sibling tools like static_map or direction.

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 description does not explicitly state when to use this tool versus alternatives, nor does it provide when-not or prerequisite guidance. It is implied for traffic analysis around a point.

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

neshan_tspB

Find the optimal visiting order for multiple destinations (TSP).

ParametersJSON Schema
NameRequiredDescriptionDefault
waypointsYesStops as [[lat, lng], ...] (first item is the start).
round_tripNoIf True, the route returns to the start point.
last_is_any_pointNoLet the optimizer choose any stop as the end.
source_is_any_pointNoLet the optimizer choose any stop as start.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the high-level purpose without disclosing any behavioral traits such as constraints, assumptions, or side effects beyond what the name implies.

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?

A single sentence of 10 words efficiently conveys the tool's purpose with no redundancy. It is front-loaded and easy to parse.

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

Completeness2/5

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

Given the absence of an output schema and annotations, the description lacks information about the return format (e.g., ordered list of indices or waypoints) and contextual details like usage scenarios or limitations.

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 coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond the parameter descriptions in the schema. All parameters have sufficient descriptions in the schema itself.

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 verb 'Find' and the resource 'optimal visiting order', with the acronym 'TSP' specifying the problem type. It distinguishes this tool from siblings like neshan_direction (simple routing) and neshan_vrp_logistic (more complex vehicle routing).

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?

No explicit guidance on when to use this tool versus alternatives like neshan_direction or neshan_vrp_logistic. The description does not state prerequisites 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.

neshan_vrp_logisticB

Solve a Vehicle Routing Problem (VRP) for logistics / delivery optimization.

Assigns a set of jobs to vehicles starting from a depot, minimising total distance or duration, respecting vehicle capacities, skills, and time windows. See each object's field descriptions in the tool schema for exact shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobsYesJobs to assign to vehicles. 'skills' on a job must be a subset of the assigned vehicle's 'skills' to be eligible.
depotYesStarting/ending point shared by vehicles without their own startLocation/endLocation.
vehiclesYesVehicles available to plan routes for.
cost_typeNoOptimise for 'DISTANCE' or 'DURATION'.DISTANCE
plan_timeNoMax solver time in milliseconds (default 45000).
routing_engineNo'typical' | 'car' | 'motorcycle'.typical
balance_workloadNoDistribute jobs evenly across vehicles.
exploration_levelNo'LOW' | 'MEDIUM' | 'HIGH'.MEDIUM
solution_strategyNo'BEST_EFFORT' | 'FAST' | 'THOROUGH'.BEST_EFFORT
use_time_balancingNoBalance travel time across vehicles.
use_traffic_multiplierNoApply live traffic to duration estimates.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as whether the tool modifies data, requires authentication, or has rate limits. It only describes the function without side effects or constraints.

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

Conciseness4/5

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

The description is concise (two sentences) and front-loaded with key purpose. However, the line break after 'optimization.' is unnecessary and slightly disrupts flow. Otherwise efficient.

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?

With 11 parameters, nested objects, and no output schema, the description should explain return value structure or provide examples. It only mentions 'route results' but lacks detail on format, pagination, or error handling. Adequate but incomplete for a complex tool.

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?

All parameters have descriptions in the schema (100% coverage). The description adds a high-level overview but does not deepen understanding beyond what the schema already provides. Baseline 3 is appropriate given the schema's completeness.

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 specific verbs ('Solve a Vehicle Routing Problem') and clearly states the resource (logistics/delivery optimization) and objective (minimizing distance/duration). It distinguishes the tool from siblings by focusing on multi-vehicle VRP, contrasting with TSP or simpler routing tools found in sibling list.

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 description implies usage for logistics optimization but does not explicitly state when to use this tool vs. alternatives like `neshan_tsp` for single-vehicle problems. No guidance on when not to use or prerequisites beyond the schema.

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.

  1. 16 tool updatesv0.3.0
    • First observedneshan_deeplink
    • First observedneshan_direction
    • First observedneshan_distance_matrix
    • First observedneshan_geocode
    • First observedneshan_geocode_plus
    • First observedneshan_get_point_by_hash
    • First observedneshan_isochrone
    • First observedneshan_map_matching
    • First observedneshan_map_view
    • First observedneshan_reverse_geocode
    • First observedneshan_search
    • First observedneshan_static_map
    • First observedneshan_static_map_arc
    • First observedneshan_traffic_analytics
    • First observedneshan_tsp
    • First observedneshan_vrp_logistic

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: geocoding (with two variants clearly differentiated), routing, distance matrix, isochrones, map matching, search, reverse geocoding, static maps (standard and arc), traffic analytics, deeplinks, TSP, and VRP. No two tools overlap, and descriptions provide explicit guidance on when to use each.

Naming Consistency5/5

All tool names follow a consistent 'neshan_' prefix followed by a descriptive snake_case name (e.g., 'neshan_direction', 'neshan_geocode_plus', 'neshan_vrp_logistic'). The naming pattern is uniform and predictable across all 16 tools.

Tool Count5/5

With 16 tools covering geocoding, routing, search, static maps, traffic, optimization, and more, the count is well-scoped for a comprehensive mapping server. Each tool serves a distinct function without redundancy or excessive granularity.

Completeness5/5

The tool surface is remarkably complete for a mapping API server. It includes forward/reverse geocoding, routing, distance matrix, isochrones, map matching, search, static maps (with arc variant), traffic analytics, deeplinks, interactive map view, TSP, and VRP. No obvious gaps for core mapping workflows.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables AI assistants to search, validate, and edit OpenStreetMap data through natural language commands and built-in safety protections. It supports discovery of nearby amenities, geographic data exploration, and secure map editing via OAuth authentication.
    28
    4
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to become geospatially intelligent assistants with tools for location search, smart routing, round trip planning, reverse geocoding, isochrone analysis, route visualization, geofence management, and interactive map display.
    8
    29
    7
    Apache 2.0

Latest Blog Posts

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/NeshanMaps/Neshan-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server