← Back to the blog

AI automation · 1 September 2026

First MCP Server, First ADK Agent: A Guided Tour with a Live Crypto Example

A practical look at a read-only MCP server, a guided Google ADK agent, five model integrations, and a live crypto-market demo designed with clear boundaries.

By Michał Felicjańczuk · Independent Consultant · 1 September 2026

Building an AI agent is often presented as a simple formula: choose a model, give it tools, and let it work. The more useful question is different: how do we give an AI application access to live information without giving it uncontrolled access, unclear responsibilities, or permission to make things up?

This project is a small answer to that question. I built a public, read-only Crypto Market MCP server and a guided agent for the Emz Systems Demo Apps Portal. Together, they retrieve current crypto-market data, compare a small set of supported markets, and explain the result in short factual language.

Open Demo Apps Portal

The deliberate narrowness is the point. A small, well-defined workflow is easier to understand, test, secure, and improve than an unrestricted chatbot.

Start with a boundary

Not a chatbot

The first decision was not which model to use. It was what the system should be allowed to do.

Crypto markets make that boundary easy to see. A general-purpose agent could be asked anything: whether to buy an asset, which coin will rise tomorrow, how to transfer funds, or how to execute a trade. Those are not capabilities this demo should provide.

Instead, the experience is guided around a small set of factual questions: current price, seven-day performance, recent movement, order-book summary, and a curated market overview. The user selects a supported cryptocurrency and an approved model, but cannot submit arbitrary instructions.

Crypto Market Agent showing five approved model options and a selector for supported cryptocurrencies including BTC, ETH, SOL, BNB, XRP, ADA, DOGE, AVAX, and LINK
The user chooses an approved model, then selects the cryptocurrency and guided market question to explore.

That reduces ambiguity for the agent, narrows the data it needs, and makes the outcome easier to evaluate. A guided agent is not less capable because it has limits. It is more dependable because its purpose is clear.

MCP in practice

What the MCP server adds

Model Context Protocol, or MCP, is a standard for exposing tools, resources, and prompts to AI clients. In practical terms, it lets an application say: “Here are the specific things an AI client is allowed to ask this service to do.”

The Crypto Market MCP server exposes a remote /mcp endpoint using Streamable HTTP. It provides read-only public spot-market data from Binance’s documented REST API, without API keys, account access, or trading capability.

NeedMCP tool
Current price and 24-hour snapshotget_market_snapshot
Recent OHLCV candle dataget_candles
Compare two to five supported marketscompare_markets
Market overview, movers, and volume leadersget_market_overview, get_market_movers, get_volume_leaders
Calculated 24-hour to 90-day performanceget_price_performance
Best bid, ask, and spreadget_order_book_summary

The server also provides MCP resources for its policy and tool guide. These help a compatible client understand the service’s purpose, limitations, and available capabilities.

The important design choice is not the number of tools. It is that each tool has a narrow, understandable responsibility. The agent does not receive a generic web browser or an unrestricted exchange API. It receives a small, validated set of market-data operations.

Architecture at a glance

How a guided market answer travels

A clear hand-off from a visitor’s choice to controlled, read-only market evidence.

Visitor

Demo Apps Portal

Chooses a cryptocurrency, guided question, and approved answer model.

Orchestration · Cloud Run

Guided ADK agent

Validates the request, calls only approved tools, and explains the returned evidence.

Read-only evidence

MCP market service

Retrieves validated public market data through the protected MCP path.

Approved answer models

Gemini · GPT · DeepSeek · GLM · Claude

Scoped history

MongoDB · 30-day guided interactions

Public, read-only market dataAuthenticated portal requestServer-side model and history controls
The portal orchestrates the request; the agent explains approved MCP evidence.

Why agents?

From data to a useful explanation

Software often has the data, but not the explanation.

The Crypto Market Explorer can retrieve live prices, recent movement, and order-book data. The agent’s job is to turn those separate facts into one short, readable answer for the chosen cryptocurrency.

It does not replace the data source or make decisions for the user. It helps bridge the gap between “here are the numbers” and “here is what they mean.”

Guided tool use

The agent is guided, not autonomous

The agent is built with Google’s Agent Development Kit, but it is intentionally not a general-purpose chat assistant.

A user can select any supported cryptocurrency—BTC, ETH, SOL, BNB, XRP, ADA, DOGE, AVAX, LINK, or TRX—then choose a guided question such as current price, seven-day performance, recent movement, or order-book summary.

Crypto Market Explorer showing a guided market-overview response with a market table, quote volume, model metadata, and financial-advice disclaimer
A guided market-overview response: one approved question, read-only evidence, and a traceable model-generated explanation.

The agent receives only the selected market and the tool calls needed for that question. A recent-movement question retrieves a snapshot and 24 hourly candles for the chosen asset; a price or order-book question uses one read-only tool. It has enough information to answer accurately, but no unnecessary capabilities.

That gives the application several useful properties: tool selection is easier to evaluate, live-data calls remain efficient, and provider failures can return an explicit unavailable state rather than a plausible-sounding guess. The live MCP result is the evidence; the model’s role is to explain it, not replace it.

Model choice

One MCP server, five model options

The same MCP tools can be used with different models. In the Demo Apps Portal, the user can choose Gemini 2.5 Flash through Google Vertex AI; GPT-5.6 Luna through Google ADK’s LiteLLM connector; DeepSeek V4 Flash and GLM 5.3 Flash through OpenRouter; or Claude Haiku 4.5 through ADK’s LiteLLM connector and the Anthropic API.

Available answer models and their integrations
Available modelIntegrationRole in the demo
Gemini 2.5 FlashGoogle Vertex AIFast Google model
GPT-5.6 LunaGoogle ADK via LiteLLMFast OpenAI model
DeepSeek V4 FlashOpenRouterFast OpenRouter model
GLM 5.3 FlashOpenRouterFast OpenRouter model
Claude Haiku 4.5Google ADK via LiteLLM and Anthropic APIFast Anthropic model

The client cannot select an arbitrary model name or provider. It sends only an allowlisted model ID to the service. This keeps the market data and permitted tool calls consistent while allowing a practical comparison of clarity, speed, and cost for the same bounded task.

For short guided tool use, a lower-cost, faster model can be a sensible default. More capable models may still be useful where reasoning complexity, response quality, or evaluation results justify them. The right choice should be measured against the actual workflow, not assumed from a tier name.

Security and traceability

Keeping the browser away from the sensitive parts

The browser does not call the MCP server directly. The portal authenticates users with Firebase. The agent service verifies the Firebase token, applies a per-account rate limit, and scopes each saved interaction to that user.

Model-provider keys and the MongoDB connection string are stored as server-side secrets. Completed guided interactions are retained for a limited period—currently 30 days—and include token-accounting information, not conversation memory fed back into later model calls.

Saved guided interactions showing selected market questions, approved models, timestamps, token counts, and successful completion status
Saved guided interactions make usage visible without turning the experience into an unrestricted, persistent chat history.

Saving a record of what happened can support a user-facing history and operational review. It does not mean the agent should silently build long-term memory of prior conversations.

Low-cost operation

Where it runs

The MCP server and agent service run as separate Python services on Google Cloud Run. They can scale down when not in use, which makes them a practical fit for a low-volume public demo.

The public MCP endpoint is exposed through a Cloudflare Worker proxy at crypto-markets.emz-systems.com/mcp. Cloudflare provides the public TLS endpoint and adds a rate-limit boundary. The Cloud Run origin is protected so that direct traffic cannot bypass the proxy.

The agent service uses Cloud Run, Vertex AI for the Gemini option, server-side secrets, Firebase authentication, and MongoDB for guided-interaction history. GitHub Actions runs checks and deploys changes from the main branch through workload identity federation, avoiding a long-lived Google Cloud key in the repository.

The infrastructure can begin within managed-service free allowances or low variable usage, but “free” is not the design goal. The goal is a small, observable system with clear upgrade points: Cloud Run usage, model API consumption, market-data provider limits, MongoDB storage, rate-limit constraints, and real user demand.

The transferable lesson

A small first project, with the right lessons

Crypto market data is simply an understandable live-data example. The same design pattern can support more valuable AI automation workflows: retrieving approved information from a CRM, issue tracker, product catalogue, quality dashboard, monitoring platform, or internal API.

The key questions remain the same: what information should the agent access; which actions should remain impossible; what evidence does a human need before acting; and where are credentials, retention, rate limits, and audit boundaries enforced?

This is my first MCP server and first Google ADK agent, but it is not an experiment in handing control to a model. It is an experiment in designing the right constraints around one.

Let’s talk

Build an AI workflow with useful boundaries from the start.

If you have an API, data source, or review-heavy process, we can explore a focused AI workflow designed around your people, systems, and controls.