<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vedar</title>
    <description>The latest articles on DEV Community by Vedar (@vedarai).</description>
    <link>https://dev.to/vedarai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4203539%2Feefb3562-e60c-4428-8c6a-8f1766cde67c.png</url>
      <title>DEV Community: Vedar</title>
      <link>https://dev.to/vedarai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vedarai"/>
    <language>en</language>
    <item>
      <title>用 MCP 把俄罗斯一个地区的小旅行社接入 AI 智能体：22 个工具的实践</title>
      <dc:creator>Vedar</dc:creator>
      <pubDate>Sun, 25 Oct 2026 00:37:27 +0000</pubDate>
      <link>https://dev.to/vedarai/yong-mcp-ba-e-luo-si-ge-di-qu-de-xiao-lu-xing-she-jie-ru-ai-zhi-neng-ti-22-ge-gong-ju-de-shi-jian-1f8o</link>
      <guid>https://dev.to/vedarai/yong-mcp-ba-e-luo-si-ge-di-qu-de-xiao-lu-xing-she-jie-ru-ai-zhi-neng-ti-22-ge-gong-ju-de-shi-jian-1f8o</guid>
      <description>&lt;h2&gt;
  
  
  问题：AI 不认识小商家
&lt;/h2&gt;

&lt;p&gt;问大模型“堪察加有什么火山徒步线路、下周有没有位置”，它一般会给你一段概括性的介绍，然后建议你“联系当地旅行社”。原因很简单：堪察加的旅行社大多是几个人的小团队，信息散在俄语网站、Telegram 频道和电话里，搜索引擎抓不全，模型训练数据里更没有实时的余位和价格。&lt;/p&gt;

&lt;p&gt;我们做的 Vedar（vedarai.ru）是堪察加本地的旅行平台，汇总了当地旅行社的线路、包车、租车和住宿。网站本身对人是友好的，但我们发现越来越多的用户在用 AI 助手规划旅行，于是决定把平台直接开放给 AI 智能体——用的就是 MCP（Model Context Protocol）。&lt;/p&gt;

&lt;h2&gt;
  
  
  架构：一个远程 MCP 服务器
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;接入地址：&lt;code&gt;https://vedarai.ru/api/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;传输：Streamable HTTP&lt;/li&gt;
&lt;li&gt;鉴权：无（查询类全部只读）&lt;/li&gt;
&lt;li&gt;文档：&lt;a href="https://vedarai.ru/mcp" rel="noopener noreferrer"&gt;https://vedarai.ru/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;仓库：&lt;a href="https://github.com/tourhabk-ui/vedar-mcp" rel="noopener noreferrer"&gt;https://github.com/tourhabk-ui/vedar-mcp&lt;/a&gt; （有中文 README）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我们没有让 MCP 去爬自己的网页，而是让工具直接读平台的业务数据：线路目录、实时余位、合作方的住宿和车辆。这样 AI 拿到的价格和日期就是旅行社在后台维护的那一份，不会出现“网页改了、AI 还在说旧价格”的问题。&lt;/p&gt;

&lt;h2&gt;
  
  
  22 个工具，分三类
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tools/list&lt;/code&gt; 当前返回 22 个工具：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. 查询（只读）&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;get_tours&lt;/code&gt;、&lt;code&gt;get_tour_details&lt;/code&gt;、&lt;code&gt;get_tour_availability&lt;/code&gt;：线路、详情、实时余位&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;search_accommodations&lt;/code&gt;、&lt;code&gt;search_transfers&lt;/code&gt;、&lt;code&gt;search_car_rental&lt;/code&gt;、&lt;code&gt;search_gear&lt;/code&gt;：住宿、包车、租车、装备&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;search&lt;/code&gt; + &lt;code&gt;fetch&lt;/code&gt;：通用检索，兼容只认这两个工具名的客户端&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_place_info&lt;/code&gt;：地点名称、类型、坐标&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. 安全与环境&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;get_weather&lt;/code&gt;：按天预报（Open-Meteo），支持地名或经纬度&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_volcano_status&lt;/code&gt;：KVERT 航空颜色代码 + 俄罗斯科学院地球物理局地震数据&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;safety_status&lt;/code&gt;、&lt;code&gt;get_guardian_context&lt;/code&gt;：全区预警（地震、火山、天气、紧急情况部）和某条路线的风险提示&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. 规划与申请&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;make_trip_plan&lt;/code&gt; / &lt;code&gt;edit_trip_plan&lt;/code&gt;：结合天气和余位生成按天行程，返回计划 ID，后续可以只改某一天&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;create_lead&lt;/code&gt;、&lt;code&gt;create_booking_request&lt;/code&gt;、&lt;code&gt;create_stay_request&lt;/code&gt;、&lt;code&gt;request_charter&lt;/code&gt;、&lt;code&gt;create_car_rental_request&lt;/code&gt;、&lt;code&gt;get_request_status&lt;/code&gt;：提交申请、查询进度&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  几个设计取舍
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;不收钱，只提交申请。&lt;/strong&gt; 所有 &lt;code&gt;create_*&lt;/code&gt; 工具只创建一份申请，由旅行社或承运人人工电话确认，平台不在线收款。对 AI 来说，“替用户下单付款”风险太大；“替用户把需求整理好交给真人”刚好合适。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;个人信息必须显式同意。&lt;/strong&gt; 只有参数里带 &lt;code&gt;consent: true&lt;/code&gt; 时才会发送联系方式。租车申请更严格，分两步：第一步返回草稿和确认码，第二步需要用户本人明确同意才提交。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;价格只来自目录。&lt;/strong&gt; 我们要求工具返回的价格必须对应目录里的具体线路并附链接，不让模型自己“估一个区间”。旅游场景里，一个编出来的价格比没有价格更糟。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;行程留空天。&lt;/strong&gt; &lt;code&gt;make_trip_plan&lt;/code&gt; 会在一周行程里主动留一天备用。堪察加的直升机和出海经常因天气取消，这是当地向导的经验，我们把它写进了规划逻辑。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;安全数据和线路放在一起。&lt;/strong&gt; 火山预警升级时，模型在推荐相关线路的同一轮对话里就能看到预警，而不是让用户自己去别处查。&lt;/p&gt;

&lt;h2&gt;
  
  
  接入配置
&lt;/h2&gt;

&lt;p&gt;支持远程 MCP 的客户端（Claude Desktop、Cursor 等）：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vedar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://vedarai.ru/api/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;只支持 stdio 的客户端，用 &lt;code&gt;mcp-remote&lt;/code&gt; 转一下：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vedar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://vedarai.ru/api/mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;不装客户端，先用 curl 看看工具列表：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://vedarai.ru/api/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Accept: application/json, text/event-stream'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":1,"method":"tools/list"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  一个实际场景
&lt;/h2&gt;

&lt;p&gt;今年 10 月，伊尔航空开通了哈尔滨直飞堪察加的航线（每周六），中国公民入境俄罗斯又可以免签停留 30 天。用户在 AI 助手里说“周六从哈尔滨飞堪察加，玩一周，想看火山”，智能体可以依次调用 &lt;code&gt;safety_status&lt;/code&gt; 看预警、&lt;code&gt;get_tours&lt;/code&gt; 和 &lt;code&gt;get_tour_availability&lt;/code&gt; 找有位置的线路、&lt;code&gt;make_trip_plan&lt;/code&gt; 排出“周六到周六”的行程，最后用 &lt;code&gt;create_booking_request&lt;/code&gt; 把申请交给旅行社。整个过程中，价格、日期、预警都来自实时数据。&lt;/p&gt;

&lt;h2&gt;
  
  
  写在最后
&lt;/h2&gt;

&lt;p&gt;对小商家来说，MCP 的意义不在于技术多新，而在于门槛低：一个 HTTP 端点，就能让所有支持 MCP 的 AI 客户端“认识”你。如果你也在做本地生活、旅游或者其他长尾行业，欢迎参考我们的仓库，也欢迎提 Issue 交流。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;仓库：&lt;a href="https://github.com/tourhabk-ui/vedar-mcp" rel="noopener noreferrer"&gt;https://github.com/tourhabk-ui/vedar-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;中文站：&lt;a href="https://vedarai.ru/zh" rel="noopener noreferrer"&gt;https://vedarai.ru/zh&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>chinese</category>
      <category>travel</category>
    </item>
    <item>
      <title>A 7-Day Kamchatka Trip Plan That Leaves a Day Empty on Purpose</title>
      <dc:creator>Vedar</dc:creator>
      <pubDate>Sat, 24 Oct 2026 23:25:21 +0000</pubDate>
      <link>https://dev.to/vedarai/a-7-day-kamchatka-trip-plan-that-leaves-a-day-empty-on-purpose-cke</link>
      <guid>https://dev.to/vedarai/a-7-day-kamchatka-trip-plan-that-leaves-a-day-empty-on-purpose-cke</guid>
      <description>&lt;h1&gt;
  
  
  A 7-Day Kamchatka Trip Plan That Leaves a Day Empty on Purpose
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;How our AI trip planner builds itineraries from real operator data and refuses to invent tours or prices&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ask any chatbot to "plan a week in Kamchatka" and you'll get a confident, nicely formatted itinerary. The trouble is where it comes from: old blog posts and travel articles. The tours may not run on your dates, the prices are years out of date, and nobody mentions that a bear-watching permit has to be booked two weeks in advance.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://vedarai.ru" rel="noopener noreferrer"&gt;Vedar&lt;/a&gt; we built a trip planner for Kamchatka that an AI assistant can call in the middle of a conversation, and it answers with live data from local operators. This post covers what it returns, the three design rules behind it, and how to connect it to your own assistant.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the traveller sees
&lt;/h2&gt;

&lt;p&gt;Someone tells their assistant (Claude, ChatGPT, Cursor, anything that can connect an external MCP server): &lt;em&gt;"We're two people, 7 days in Kamchatka in July, volcanoes and bears."&lt;/em&gt; The assistant calls Vedar's &lt;code&gt;make_trip_plan&lt;/code&gt; tool and gets back a day-by-day plan in a few seconds.&lt;/p&gt;

&lt;p&gt;Here's the real response for a trip starting July 10, 2027 (translated from Russian, which is the platform's data language):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Day 1.&lt;/strong&gt; Arrive in the afternoon, check in, acclimatise, walk around town.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 2.&lt;/strong&gt; Bears, Avacha zone. &lt;em&gt;Guide only:&lt;/em&gt; a permit for the South Kamchatka Federal Reserve is required, book 14 days ahead. Accredited guide only; keep at least 50 m from bears.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 3.&lt;/strong&gt; Trekking, Avacha zone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 4.&lt;/strong&gt; Volcanoes, Avacha zone. &lt;em&gt;Guide only:&lt;/em&gt; high risk (volcano ascent). Trekking boots, rain jacket and layers are mandatory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 5.&lt;/strong&gt; Free day: town, souvenirs, fish market.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 6.&lt;/strong&gt; &lt;strong&gt;Not filled:&lt;/strong&gt; we have no confirmed departure for this date, so we didn't make one up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 7.&lt;/strong&gt; Pack in the morning, airport transfer, afternoon flight.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plan also comes with a price estimate per person: &lt;strong&gt;53,500â€“120,000 â‚½&lt;/strong&gt; at "comfort" accommodation, with a breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;activities: 23,000â€“73,000 â‚½ (a reference range for each activity type, explicitly &lt;em&gt;not&lt;/em&gt; a tour price)&lt;/li&gt;
&lt;li&gt;accommodation: 28,000â€“42,000 â‚½, estimated by zone and comfort level&lt;/li&gt;
&lt;li&gt;local transport: 2,500â€“5,000 â‚½&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the group of two that's 107,000â€“240,000 â‚½. Flights to Kamchatka aren't included, and the response says so.&lt;/p&gt;

&lt;p&gt;Note how the response labels each number: which ones are estimates, which are reference ranges and which are real tour prices. The assistant passes that on to the traveller, so they know what's firm and what's a ballpark.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 1: an honestly empty day beats a plausible fake one
&lt;/h2&gt;

&lt;p&gt;Day 6 is empty on purpose. When there's no confirmed tour for a date, the planner says so instead of filling the gap with something that sounds right. The response states it plainly: "Filled 6 of 7 days: we have no confirmed departures for the rest. We don't invent the remaining days. Shift the dates or add interests and the plan will fill out."&lt;/p&gt;

&lt;p&gt;The same rule applies to tours that don't fit. The Klyuchevskaya Sopka ascent takes 12 days. A naive generator would squeeze a "volcano day" onto day 4 and call it Klyuchevskaya. Our planner leaves it out and explains why: operators sell the tour as a whole, it can't be cut to fit your trip, so add days if you want it.&lt;/p&gt;

&lt;p&gt;This matters more than it looks. When an LLM builds an itinerary from training data, a gap is a failure, so it fills the gap. When the tool returns an explicit "nothing confirmed here", the assistant has something true to say and no pressure to make things up. In practice the honest gap is what makes the rest of the plan believable.&lt;/p&gt;

&lt;p&gt;We also put a hint for the model right in the tool output: &lt;em&gt;"Platform data is in Russian: translate it for the user yourself; do not add facts that are not in this answer."&lt;/em&gt; It's a small thing, but it noticeably cuts down on assistants "helpfully" adding details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 2: safety is part of the plan, not a footnote
&lt;/h2&gt;

&lt;p&gt;Kamchatka isn't a city break. Bears, active volcanoes, protected reserves with permit systems, and seasons that decide what's even possible. So the planner returns safety data as part of each day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"guide only" flags for bears and volcano ascents;&lt;/li&gt;
&lt;li&gt;permit requirements and lead times (book 14 days ahead for the reserve);&lt;/li&gt;
&lt;li&gt;minimum distances and mandatory gear;&lt;/li&gt;
&lt;li&gt;warnings tied to the traveller's stated fitness ("volcanoes need good fitness, you said average").&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The traveller learns about the 14-day permit lead time while planning, not on arrival. The start date is required context too: the planner works out what's in season from the trip dates, so a November trip won't get a July itinerary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 3: edit the plan, don't regenerate it
&lt;/h2&gt;

&lt;p&gt;Each plan gets an ID and is stored for 7 days. After that the conversation works with the plan itself through a second tool, &lt;code&gt;edit_trip_plan&lt;/code&gt;: add a day, remove or swap a day, change the accommodation level, or handle a flight delay.&lt;/p&gt;

&lt;p&gt;We tested the "flight delayed by two days" case. The planner moved the arrival to July 12, kept the original return flight, dropped the days that no longer fit (bears and trekking), and left the other dates alone, because operators run on their own schedules and an edit shouldn't quietly move a confirmed departure.&lt;/p&gt;

&lt;p&gt;This is why it's a stateful tool and not one big prompt. If you regenerate a plan every time someone says "make it cheaper", you get a new random plan every time. If you edit by ID, the parts the traveller already agreed to stay put.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the traveller ends up with
&lt;/h2&gt;

&lt;p&gt;Every plan has its own page with a map, a GPX file for offline navigation apps, and a "save to phone" option for when you're in the field without signal. The tool response links to it directly.&lt;/p&gt;

&lt;p&gt;There are also ready-made routes such as &lt;a href="https://vedarai.ru/plans/kamchatka-za-7-dney-medvedi" rel="noopener noreferrer"&gt;Kamchatka in 7 days: bears, ocean and a volcano&lt;/a&gt;, where each day is linked to real tours from local operators, with their prices and a request button.&lt;/p&gt;

&lt;p&gt;We deliberately left out instant booking and payment through the assistant. The traveller sends the request to the operator themselves, their name and phone number are shared only with their explicit consent, and a real operator confirms the tour. For a trip that involves bears and volcanoes, a person on the other end is a feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the hood
&lt;/h2&gt;

&lt;p&gt;The MCP server at &lt;code&gt;https://vedarai.ru/api/mcp&lt;/code&gt; currently exposes 17 tools. Besides the two planning tools there are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;get_tours&lt;/code&gt;, &lt;code&gt;get_tour_details&lt;/code&gt;, &lt;code&gt;get_tour_availability&lt;/code&gt;: operator tours and departures&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_volcano_status&lt;/code&gt;, &lt;code&gt;safety_status&lt;/code&gt;, &lt;code&gt;get_weather&lt;/code&gt;: current conditions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;search_accommodations&lt;/code&gt;, &lt;code&gt;search_transfers&lt;/code&gt;, &lt;code&gt;search_car_rental&lt;/code&gt;, &lt;code&gt;search_gear&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_place_info&lt;/code&gt;, &lt;code&gt;get_guardian_context&lt;/code&gt;, &lt;code&gt;get_request_status&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;search&lt;/code&gt; / &lt;code&gt;fetch&lt;/code&gt; for assistants that expect that pair&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tool descriptions are bilingual: English for the model's routing, Russian for the data and examples. The data itself stays in Russian because that's what operators enter, and the model translates it with the "don't add facts" instruction above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Without an assistant:&lt;/strong&gt; use the &lt;a href="https://vedarai.ru/planner" rel="noopener noreferrer"&gt;planner on vedarai.ru&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;With an assistant:&lt;/strong&gt; add &lt;code&gt;https://vedarai.ru/api/mcp&lt;/code&gt; as a remote MCP connector. No sign-up or API key. Setup steps for Claude, ChatGPT, Cursor and VS Code are at &lt;a href="https://vedarai.ru/mcp" rel="noopener noreferrer"&gt;vedarai.ru/mcp&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Directory listing:&lt;/strong&gt; &lt;a href="https://glama.ai/mcp/connectors/ru.vedarai/mcp" rel="noopener noreferrer"&gt;Vedar on Glama&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building an MCP server for a small, data-poor niche, the lesson we keep coming back to is simple: give the model a true "we don't know" to say, and it'll stop inventing the rest.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://vedarai.ru" rel="noopener noreferrer"&gt;vedarai.ru&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP setup: &lt;a href="https://vedarai.ru/mcp" rel="noopener noreferrer"&gt;vedarai.ru/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Previous post: &lt;a href="https://dev.to/vedarai/why-ai-assistants-dont-know-small-businesses-and-how-we-opened-kamchatka-to-agents-with-mcp-5gio"&gt;Why AI assistants don't know small businesses, and how we opened Kamchatka to agents with MCP&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>travel</category>
      <category>llm</category>
    </item>
    <item>
      <title>Why AI assistants don't know small businesses, and how we opened Kamchatka to agents with MCP</title>
      <dc:creator>Vedar</dc:creator>
      <pubDate>Fri, 23 Oct 2026 23:25:10 +0000</pubDate>
      <link>https://dev.to/vedarai/why-ai-assistants-dont-know-small-businesses-and-how-we-opened-kamchatka-to-agents-with-mcp-5gio</link>
      <guid>https://dev.to/vedarai/why-ai-assistants-dont-know-small-businesses-and-how-we-opened-kamchatka-to-agents-with-mcp-5gio</guid>
      <description>&lt;p&gt;AI assistants are getting good at planning trips. Ask one about Kamchatka, though, and you get Booking, Viator, GetYourGuide and a few generic tour agencies. The small local operators who actually run the volcano climbs and the bear-watching trips mostly don't show up. We build &lt;strong&gt;Vedar&lt;/strong&gt; (&lt;a href="https://vedarai.ru" rel="noopener noreferrer"&gt;vedarai.ru&lt;/a&gt;), a travel platform for Kamchatka, Russia: tours from local operators, stays, transfers, self-drive car rental, volcano status and route safety. This post covers how we opened all of it to AI agents through an open MCP server, and what we learned along the way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdtlwfmerw029xckpgyrs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdtlwfmerw029xckpgyrs.png" alt="Vedar home page: daily summary, volcanoes, alerts" width="800" height="681"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: assistants don't know small businesses
&lt;/h2&gt;

&lt;p&gt;We asked four models (GPT-4o mini, Claude Haiku 4.5, Qwen3 and DeepSeek V3.1) the same question in Russian, English and Chinese: "Which services help plan a trip to Kamchatka?" None of them named Vedar: 0 out of 12 answers. We repeated the test four times between October 18 and 23, and got 0 out of 12 every time.&lt;/p&gt;

&lt;p&gt;Then we gave the same models our MCP server. In 12 of 12 runs the assistant called our tools by itself and built a day-by-day trip. In 9 of 12 the answer contained our real data: prices, permit requirements, rules for areas with bears.&lt;/p&gt;

&lt;p&gt;So the lesson is simple. &lt;strong&gt;Models can already use your service. They just won't find out about it on their own.&lt;/strong&gt; Those are two separate problems, and only the first one is solved with code.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP and A2A in plain words
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; is a common "socket" that lets an AI assistant plug into an outside service. Without it, the assistant only knows what it read during training. With it, the assistant can ask the service mid-conversation, "what tours are there in July?", and get a live answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A2A (Agent2Agent)&lt;/strong&gt; is for two agents talking to each other. With MCP, an assistant picks up a tool. With A2A, one agent asks another agent for help, the way you'd ask a colleague. The agent publishes a card listing its skills, accepts a task and returns a result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvii79xg38ke1m8djdmjt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvii79xg38ke1m8djdmjt.png" alt="Person → AI assistant → MCP → Vedar → operator" width="798" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Vedar exposes: 22 tools
&lt;/h2&gt;

&lt;p&gt;Endpoint: &lt;code&gt;https://vedarai.ru/api/mcp&lt;/code&gt;. It's Streamable HTTP, and you don't need to sign up or get a key. The server is at version 2.7.0, and this is the live &lt;code&gt;tools/list&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tours:&lt;/strong&gt; &lt;code&gt;get_tours&lt;/code&gt; (catalog with prices), &lt;code&gt;get_tour_details&lt;/code&gt; (program, what's included, what to bring), &lt;code&gt;get_tour_availability&lt;/code&gt; (free seats by date).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety:&lt;/strong&gt; &lt;code&gt;safety_status&lt;/code&gt; (regional alerts: seismic, volcanic, weather, emergency service), &lt;code&gt;get_volcano_status&lt;/code&gt; (KVERT aviation codes and seismicity), &lt;code&gt;get_guardian_context&lt;/code&gt; (hazards and advice for a specific place or route).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Places and weather:&lt;/strong&gt; &lt;code&gt;get_place_info&lt;/code&gt;, &lt;code&gt;get_weather&lt;/code&gt;, plus &lt;code&gt;search&lt;/code&gt; and &lt;code&gt;fetch&lt;/code&gt; across the whole base.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logistics:&lt;/strong&gt; &lt;code&gt;search_accommodations&lt;/code&gt;, &lt;code&gt;search_transfers&lt;/code&gt; (whole-vehicle charters: vakhtovka, minibus, jeep), &lt;code&gt;search_car_rental&lt;/code&gt; (self-drive SUVs, 4x4s, minibuses), &lt;code&gt;search_gear&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trip plans:&lt;/strong&gt; &lt;code&gt;make_trip_plan&lt;/code&gt; (day by day, with weather and live availability) and &lt;code&gt;edit_trip_plan&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requests, always confirmed by a human:&lt;/strong&gt; &lt;code&gt;create_lead&lt;/code&gt;, &lt;code&gt;create_booking_request&lt;/code&gt;, &lt;code&gt;create_stay_request&lt;/code&gt;, &lt;code&gt;request_charter&lt;/code&gt;, &lt;code&gt;create_car_rental_request&lt;/code&gt;, plus &lt;code&gt;get_request_status&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a real &lt;code&gt;get_tours&lt;/code&gt; response from October 24, 2026, when an assistant asked about volcano tours:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwub14j74a03k4y8l6wij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwub14j74a03k4y8l6wij.png" alt="Real get_tours response" width="799" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Consent comes first
&lt;/h3&gt;

&lt;p&gt;Assistants can't book instantly or take payment. Every request goes to a real operator, who confirms it. A traveler's name and phone number only reach the operator with that person's explicit consent.&lt;/p&gt;

&lt;p&gt;The car rental request goes one step further and works in two steps. The first call to &lt;code&gt;create_car_rental_request&lt;/code&gt; returns a draft and a confirmation code that's valid for 30 minutes. The assistant shows the draft to the person. Only the second call, with the same fields, the code and &lt;code&gt;consent: true&lt;/code&gt;, actually sends the request. That way an agent can't send someone's details on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to connect
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Any MCP client.&lt;/strong&gt; Run &lt;code&gt;npx vedar-mcp&lt;/code&gt; (&lt;a href="https://www.npmjs.com/package/vedar-mcp" rel="noopener noreferrer"&gt;npm&lt;/a&gt;) to print a ready config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vedar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://vedarai.ru/api/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Cursor / VS Code:&lt;/strong&gt; add the block above to your MCP config, or use the one-click install buttons on &lt;a href="https://vedarai.ru/mcp" rel="noopener noreferrer"&gt;vedarai.ru/mcp&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Desktop / claude.ai:&lt;/strong&gt; add a custom connector with the URL &lt;code&gt;https://vedarai.ru/api/mcp&lt;/code&gt;. It doesn't need authentication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http vedar https://vedarai.ru/api/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;A2A agents:&lt;/strong&gt; the agent card is at &lt;a href="https://vedarai.ru/.well-known/agent-card.json" rel="noopener noreferrer"&gt;vedarai.ru/.well-known/agent-card.json&lt;/a&gt;. Calls go to &lt;code&gt;https://vedarai.ru/api/a2a&lt;/code&gt; (JSON-RPC) or &lt;code&gt;https://vedarai.ru/api/a2a/v1&lt;/code&gt; (REST), using A2A 1.0.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgvhefmpcb3x4w63tfqk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgvhefmpcb3x4w63tfqk2.png" alt="Connection page vedarai.ru/mcp" width="800" height="681"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll also find the server on &lt;a href="https://glama.ai/mcp/connectors/ru.vedarai/mcp" rel="noopener noreferrer"&gt;Glama&lt;/a&gt;, and code examples are &lt;a href="https://github.com/tourhabk-ui/vedar-mcp-examples" rel="noopener noreferrer"&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why assistants make things up
&lt;/h2&gt;

&lt;p&gt;When we asked models directly, "do you know Vedar?", they often didn't say "I don't know". In the latest check, 8 of 12 answers were honest or cautious and 4 of 12 were made up. None was correct. One model called us a "B2B platform". Another expanded MCP as "Master Channel Partner". Here's what has helped us so far:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;One honest description of yourself, the same everywhere.&lt;/strong&gt; Ours lives at &lt;a href="https://vedarai.ru/llms.txt" rel="noopener noreferrer"&gt;vedarai.ru/llms.txt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Catalogs and registries.&lt;/strong&gt; We're listed in MCP registries and directories such as Glama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentions from other people.&lt;/strong&gt; One link from a real partner carries more weight than ten pages on your own site.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regular, honest testing.&lt;/strong&gt; Ask several assistants about your niche without naming yourself, and repeat the check.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  For travelers
&lt;/h2&gt;

&lt;p&gt;You don't need to be a developer. Connect Vedar to your assistant once, then ask in plain language: "a 7-day Kamchatka trip in July with a volcano climb", "a 4x4 rental in Petropavlovsk", "is it safe to go to Avachinsky this week?". The answers come from live operator data, and nothing gets booked without your say.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://vedarai.ru" rel="noopener noreferrer"&gt;vedarai.ru&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP: &lt;code&gt;https://vedarai.ru/api/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/vedar-mcp" rel="noopener noreferrer"&gt;vedar-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Glama: &lt;a href="https://glama.ai/mcp/connectors/ru.vedarai/mcp" rel="noopener noreferrer"&gt;ru.vedarai/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Channel about vibe coding and AI agents (in Russian): &lt;a href="https://t.me/ai_hub_money" rel="noopener noreferrer"&gt;Telegram&lt;/a&gt; · &lt;a href="https://max.ru/channel_ai_hub_money" rel="noopener noreferrer"&gt;MAX&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The original Russian article on vc.ru: &lt;a href="https://vc.ru/ai/3212976-pochemu-iskusstvennyi-intellekt-ne-znaet-vash-servis-i-chto-s-etim-delat-malenkomu-biznesu" rel="noopener noreferrer"&gt;Why AI doesn't know your service&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>travel</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
