<?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>Forem: Erica Beavers</title>
    <description>The latest articles on Forem by Erica Beavers (@erica_beavers_3cbeab30b6f).</description>
    <link>https://forem.com/erica_beavers_3cbeab30b6f</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3284640%2Fdc7f95ec-d3e1-42b1-b181-0e482ac0cbdf.jpg</url>
      <title>Forem: Erica Beavers</title>
      <link>https://forem.com/erica_beavers_3cbeab30b6f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/erica_beavers_3cbeab30b6f"/>
    <language>en</language>
    <item>
      <title>[Template] ChatGPT Apps starter kit (Vite + React + HMR)</title>
      <dc:creator>Erica Beavers</dc:creator>
      <pubDate>Tue, 28 Oct 2025 13:02:24 +0000</pubDate>
      <link>https://forem.com/alpic/template-chatgpt-apps-starter-kit-vite-react-hmr-3lpj</link>
      <guid>https://forem.com/alpic/template-chatgpt-apps-starter-kit-vite-react-hmr-3lpj</guid>
      <description>&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/alpic-ai/apps-sdk-template" rel="noopener noreferrer"&gt;https://github.com/alpic-ai/apps-sdk-template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenAI's ChatGPT Apps SDK lets you build interactive widgets that render inside ChatGPT using MCP. The initial template released a few weeks ago worked more or less, but the dev experience was rough. Every widget change required rebuilding the entire pipeline to get fresh assets.&lt;/p&gt;

&lt;p&gt;That’s why built a starter template with HMR and a Skybridge framework to simplify the entire workflow:&lt;/p&gt;

&lt;p&gt;What it includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vite dev server&lt;/strong&gt; with HMR running alongside your MCP Express server (one process, instant widget reload in ChatGPT)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skybridge framework&lt;/strong&gt; with file-based conventions that automatically map MCP widget endpoints to React components (name your endpoint &lt;code&gt;pokemon-card&lt;/code&gt;, create &lt;code&gt;web/src/widgets/pokemon-card.tsx&lt;/code&gt;, done)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-click deploy to &lt;a href="//www.alpic.ai"&gt;Alpic&lt;/a&gt;&lt;/strong&gt; with bundling, hosting, and MCP analytics included, or to the platform of your choice
No lock-in - built on the official @modelcontextprotocol/sdk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quick start:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash
git clone https://github.com/alpic-ai/apps-sdk-template
cd apps-sdk-template
pnpm install &amp;amp;&amp;amp; pnpm dev
ngrok http 3000

Add https://your-url.ngrok-free.app/mcp to ChatGPT Settings → Connectors

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit React components in &lt;code&gt;web/src/widgets/&lt;/code&gt; and see changes instantly in ChatGPT. No reconnecting, no rebuilding as the naming convention handles all the wiring automatically.&lt;/p&gt;

&lt;p&gt;A few more details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skybridge's file-based convention: endpoint name must match widget filename (&lt;code&gt;pokemon-card&lt;/code&gt; endpoint → &lt;code&gt;pokemon-card.tsx&lt;/code&gt; component)&lt;/li&gt;
&lt;li&gt;HMR updates widgets in real-time while MCP server keeps running&lt;/li&gt;
&lt;li&gt;Production build compiles everything and deploys to Alpic in ~30 seconds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus, the sample app is Pokemon for a little nostalgia while you’re developing (you can thank us for that by starring in the repo!)&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the implementation or MCP integration patterns! And stay tuned for our next article that will offer insight on how we built the framework ;) &lt;/p&gt;

&lt;p&gt;And a quick demo for the road: &lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fgwvu2502qzw80a3yyxcq.gif" 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.amazonaws.com%2Fuploads%2Farticles%2Fgwvu2502qzw80a3yyxcq.gif" alt="Demo of developing with chatGPT app starter kit" width="760" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>chatgpt</category>
      <category>react</category>
    </item>
    <item>
      <title>Behind the Kiwi.com MCP server: building an agentic flight booking service</title>
      <dc:creator>Erica Beavers</dc:creator>
      <pubDate>Wed, 27 Aug 2025 14:11:19 +0000</pubDate>
      <link>https://forem.com/alpic/behind-the-kiwicom-mcp-server-building-an-agentic-flight-booking-service-2pdd</link>
      <guid>https://forem.com/alpic/behind-the-kiwicom-mcp-server-building-an-agentic-flight-booking-service-2pdd</guid>
      <description>&lt;p&gt;When Kiwi.com released their MCP server earlier this month, it became one of the first examples of agentic travel booking. This post covers how we helped them build it, what we optimized, and where we think there’s still room to improve.&lt;/p&gt;

&lt;p&gt;If you'd like to try it out, the install guide is here: &lt;a href="https://mcp-install-instructions.alpic.cloud/servers/kiwi-com-flight-search" rel="noopener noreferrer"&gt;https://mcp-install-instructions.alpic.cloud/servers/kiwi-com-flight-search&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MCP instead of APIs or scraping?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scraping the UI&lt;/strong&gt;: brittle, slow, and expensive (cookie banners, custom date pickers, JavaScript quirks).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct APIs&lt;/strong&gt;: better, but not designed for LLMs. Hundreds of endpoints return too much irrelevant data, flooding context windows.&lt;/p&gt;

&lt;p&gt;MCP provides a middle ground. It lets developers expose exactly the right tools, with guardrails, so the model can handle the task effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiwi.com’s MCP server: first version
&lt;/h2&gt;

&lt;p&gt;The current server exposes a single search-flight tool with the following parameters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trip type (one-way, round-trip)&lt;/li&gt;
&lt;li&gt;Origin and destination (city or airport)&lt;/li&gt;
&lt;li&gt;Dates with ±3 day flexibility&lt;/li&gt;
&lt;li&gt;Passenger mix (adult, child, infant)&lt;/li&gt;
&lt;li&gt;Cabin class&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each result comes with a direct booking link.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we optimized with Alpic
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. One-click deployment &amp;amp; hosting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The server is deployed from a Git repo with standard build commands. Once pushed, it’s live on a secure HTTPS endpoint with a custom domain. Behind the scenes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TLS termination and request parsing handled automatically&lt;/li&gt;
&lt;li&gt;Tool execution in stateless, isolated environments&lt;/li&gt;
&lt;li&gt;Built-in DDoS protection and rate limiting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduced Kiwi.com’s operational overhead so they could iterate quickly and expose the service to real users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Server design choices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shortened booking links: Long URLs eat context and risk breaking. We introduced shortened booking links to keep token usage small.&lt;/p&gt;

&lt;p&gt;Structured responses: Instead of a free blob of text, the MCP instructs the LLM to return results in a table format, making comparison easier for users. &lt;/p&gt;

&lt;p&gt;Fewer, curated results: Kiwi.com’s API can return thousands of flights, but the MCP server only sends a few dozen “best” options. This leverages Kiwi’s business logic while avoiding models making poor tradeoffs (like suggesting 15-hour layovers for €30 savings).&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s missing and what’s next
&lt;/h2&gt;

&lt;p&gt;Right now, the server only handles simple round-trip and one-way searches. Features not yet handled include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-destination itineraries&lt;/li&gt;
&lt;li&gt;Checked bags&lt;/li&gt;
&lt;li&gt;Max duration filtering&lt;/li&gt;
&lt;li&gt;Account login and loyalty integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the protocol side, new MCP features could open up more options:&lt;/p&gt;

&lt;p&gt;Elicitations: proactively asking the user to clarify (e.g. “Do you prefer Orly or CDG?” when searching Paris flights).&lt;/p&gt;

&lt;p&gt;User preferences: storing seat choices, airlines, or price vs. comfort tradeoffs in reusable context.&lt;/p&gt;

&lt;p&gt;Finally, better client-side capabilities will make adoption smoother: server registries (e.g. Claude Directory), less installation friction, and eventually end-to-end booking inside assistants without link redirects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;p&gt;MCP servers are not just API wrappers, they require deliberate design for LLM usability.&lt;/p&gt;

&lt;p&gt;Optimizing context usage (short links, curated data, structured responses) is critical.&lt;/p&gt;

&lt;p&gt;Kiwi.com’s MCP server is an early step, but it shows how travel booking could work in an agent-native world. We'd love to have your feedback and ideas for future iterations.&lt;/p&gt;

&lt;p&gt;Also, if you’re building with MCP and want one-step deployment, hosting, and AI-specific analytics, check out &lt;a href="https://alpic.ai/" rel="noopener noreferrer"&gt;Alpic.ai&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>aiops</category>
    </item>
  </channel>
</rss>
