Inspiration

Small farmers often need quick answers: Is this leaf disease serious? Should I water today? What's the market price? Reading or typing on a phone in the field isn't practical. A voice assistant like Alexa+ is a natural fit, so I built Farm Helper, a voice-first farming assistant exposed as an MCP server.

What it does

Farm Helper lets users ask farming questions by voice or text and hear the answer spoken back. Behind it, an MCP server exposes tools for:

  • Crop disease advice from described symptoms (e.g. "yellow leaves with brown spots")
  • Irrigation guidance using live weather data (water, or skip because rain is coming)
  • Market (mandi) prices per quintal (demo data for now)
  • Crop calendars for sowing, harvest, watering and soil

A simulated Alexa+ web app shows the full experience: speak a question, see which MCP tool was called, and hear the reply.

How I built it

  • Python MCP server using the official MCP SDK (FastMCP) with the Streamable HTTP transport
  • Open-Meteo API for live weather and geocoding
  • Starlette routes for the demo API, plus a single-page web app using the browser's Web Speech API for voice input and spoken replies
  • A standalone MCP test client that connects to the server, lists the tools and calls them
  • Everything is open source under the MIT license

Challenges

  • The MCP SDK's 2.x release renamed FastMCP, which broke starter code, so I pinned mcp>=1.9,<2.
  • Making the server work both as a real MCP endpoint and as a simple demo page for voice interaction.
  • I didn't have AWS Bedrock access, so the optional photo-based leaf analysis tool isn't part of the demo. The disease tool uses a rule-based fallback.

What I learned

How MCP tools are defined and exposed over Streamable HTTP, and how to turn plain functions into voice-friendly answers.

What's next

  • Kannada and Hindi voice support
  • Real mandi price data (Agmarknet)
  • Photo-based leaf diagnosis using a vision model
  • Connecting to a real Alexa+ environment

Built With

Share this project:

Updates

Submission history