2026-05-29 16:30:23 +01:00
---
layout: default
title: AI Integration
---
# AI Integration
Go Micro is an AI-native microservices framework. Every service you build is automatically accessible to AI agents, and every service can call AI models. This page explains how the pieces fit together.
2026-06-10 08:24:49 +01:00
<img src="/images/generated/mcp-agent.jpg" alt="AI integration architecture" style="width: 100%; border-radius: 8px; margin: 1rem 0 1.5rem;" />
2026-05-29 16:30:23 +01:00
## The Stack
```
2026-05-29 22:49:37 +01:00
Your Services → write Go handlers, register with the framework
2026-05-29 16:30:23 +01:00
↓
2026-05-29 22:49:37 +01:00
Registry → automatic service discovery (mDNS, Consul, etcd)
2026-05-29 16:30:23 +01:00
↓
2026-05-29 22:49:37 +01:00
Gateways → micro api (HTTP→RPC) / micro mcp (MCP tools)
2026-05-29 16:30:23 +01:00
↓
2026-05-30 14:21:35 +01:00
ai.Tools → discovers services + executes RPCs programmatically
2026-05-29 16:30:23 +01:00
↓
2026-05-29 22:49:37 +01:00
ai.Model → calls LLMs (Anthropic, OpenAI, Gemini, Atlas Cloud, ...)
2026-05-29 16:30:23 +01:00
↓
2026-06-05 10:25:14 +01:00
agent / flow / micro chat → agent-managed, event-driven, or interactive orchestration
2026-05-29 16:30:23 +01:00
```
Every layer is optional. You can use go-micro without AI. You can use the `ai` package without MCP. But when you stack them, you get services that AI agents can discover and orchestrate automatically.
## Layer by Layer
### 1. Services (your code)
Write normal Go handlers. Add doc comments for AI tool descriptions:
```go
// CreateUser creates a new user account.
// @example {"name": "Alice", "email": "alice@example.com"}
func ( h * Users ) CreateUser ( ctx context . Context , req * pb . CreateRequest , rsp * pb . CreateResponse ) error {
// your business logic
}
```
The doc comment becomes the tool description. The `@example` tag gives the LLM a usage hint. No AI-specific code in your handler.
### 2. Registry (service discovery)
Services register automatically. The registry is the source of truth for what's running:
```go
2026-06-18 11:55:35 +01:00
service := micro . NewService ( "users" )
2026-05-29 16:30:23 +01:00
service . Handle ( handler . New ())
service . Run () // registers with the registry
```
Pluggable: mDNS (default, zero config), Consul, etcd, NATS.
### 3. MCP Gateway (services → tools)
The MCP gateway walks the registry and exposes every endpoint as a tool via the [Model Context Protocol ](https://modelcontextprotocol.io/ ):
```go
// One line to expose all services as AI tools
2026-06-18 11:55:35 +01:00
service := micro . NewService ( "myservice" , mcp . WithMCP ( ":3001" ))
2026-05-29 16:30:23 +01:00
```
Or run it standalone:
```bash
micro mcp serve # stdio for Claude Code
micro mcp serve --address :3000 # HTTP for web agents
```
Any MCP-compatible agent (Claude Code, ChatGPT, custom agents) can discover and call your services.
2026-05-30 14:21:35 +01:00
### 4. ai.Tools (discover + execute)
2026-05-29 16:30:23 +01:00
2026-05-30 14:21:35 +01:00
`ai.Tools` turns registered services into LLM-callable tools — discovery plus RPC execution in one type:
2026-05-29 16:30:23 +01:00
```go
2026-05-30 14:21:35 +01:00
tools := ai . NewTools ( service . Registry ())
discovered , _ := tools . Discover () // []ai.Tool from all registered services
2026-05-29 16:30:23 +01:00
2026-05-30 14:21:35 +01:00
// Wire execution into a model with one option:
m := ai . New ( "anthropic" , ai . WithAPIKey ( key ), ai . WithTools ( tools ))
2026-05-29 16:30:23 +01:00
```
This is what powers `micro chat` and the agent playground. You can use it directly in your own services to build agentic workflows.
### 5. ai.Model (LLM providers)
The `ai` package provides a pluggable interface for calling LLMs:
```go
import (
2026-06-18 11:55:35 +01:00
"go-micro.dev/v6/ai"
_ "go-micro.dev/v6/ai/anthropic"
2026-05-29 16:30:23 +01:00
)
m := ai . New ( "anthropic" , ai . WithAPIKey ( key ))
resp , _ := m . Generate ( ctx , & ai . Request {
Prompt : "What users are in the system?" ,
2026-05-30 14:21:35 +01:00
Tools : discovered , // from ai.Tools
2026-05-29 16:30:23 +01:00
})
```
Seven text providers, two image providers, one video provider. Same interface, swap with an import.
| Provider | Text | Image | Video |
|----------|------|-------|-------|
| Anthropic | yes | | |
| OpenAI | yes | yes | |
| Google Gemini | yes | | |
| Atlas Cloud | yes | yes | yes |
| Groq | yes | | |
| Mistral | yes | | |
| Together AI | yes | | |
### 6. micro chat (orchestration)
The CLI ties it all together — discovers services, builds the tool list, and lets you talk to your services:
```bash
ANTHROPIC_API_KEY = sk-ant-... micro chat --provider anthropic
> list all users
> send a welcome email to alice@example.com
> create an order for product-42
```
Multi-turn conversation with `ai.History` — the model remembers context across turns. Type `reset` to clear history.
2026-05-29 22:49:37 +01:00
### 7. micro flow (event-driven orchestration)
2026-05-29 16:30:23 +01:00
2026-05-29 22:49:37 +01:00
Subscribe to broker events and let an LLM orchestrate the response:
2026-05-29 16:30:23 +01:00
```go
2026-06-18 11:55:35 +01:00
import "go-micro.dev/v6/flow"
2026-05-29 22:49:37 +01:00
f := flow . New ( "onboard" ,
flow . Trigger ( "events.user.created" ),
flow . Prompt ( "New user: {{.Data}}. Send welcome email and create workspace." ),
flow . Provider ( "anthropic" ),
flow . APIKey ( key ),
)
f . Register ( service . Registry (), service . Options (). Broker , service . Client ())
```
Or from the CLI:
```bash
micro flow run --trigger events.user.created \
--prompt "New user: {{.Data}}. Send welcome email." \
--provider anthropic
micro flow exec --prompt "List all users" --provider anthropic
```
### 8. micro api (HTTP gateway)
A standalone HTTP-to-RPC gateway for exposing services over HTTP without the full dashboard:
```bash
micro api # listen on :8080
micro api --address :3000 # custom port
# Call services through the gateway
curl -XPOST -d '{"name":"Alice"}' http://localhost:8080/greeter/Greeter.Hello
2026-05-29 16:30:23 +01:00
```
## What You Don't Need
- **No agent framework** — the building blocks compose; you don't need a LangChain or CrewAI equivalent
- **No special handler code** — your services are normal Go handlers with doc comments
- **No API key to use MCP** — external agents bring their own models; your services just expose tools
- **No vendor lock-in** — every provider implements the same interface; swap with one import
## Getting Started
The fastest path:
```bash
# Create a service with MCP enabled
micro new myservice --template crud
cd myservice
# Run it
micro run
# Chat with it
ANTHROPIC_API_KEY = sk-ant-... micro chat --provider anthropic
> list all records
```
See also:
- [MCP Documentation ](/docs/mcp.html ) — detailed MCP gateway guide
- [Atlas Cloud Integration ](/docs/guides/atlascloud-integration.html ) — using Atlas Cloud as a provider
- [AI Provider Guide ](/docs/guides/ai-provider-guide.html ) — adding new providers
- [gRPC Interop Example ](https://github.com/micro/go-micro/tree/master/examples/grpc-interop ) — calling go-micro from standard gRPC clients