e071084ebe
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
454 lines
9.1 KiB
Markdown
454 lines
9.1 KiB
Markdown
# MCP CLI Command Examples
|
|
|
|
This document provides examples of using the `micro mcp` commands for AI agent integration.
|
|
|
|
## Table of Contents
|
|
|
|
- [List Available Tools](#list-available-tools)
|
|
- [Test a Tool](#test-a-tool)
|
|
- [Generate Documentation](#generate-documentation)
|
|
- [Export to Different Formats](#export-to-different-formats)
|
|
|
|
## Prerequisites
|
|
|
|
You need at least one microservice running with the go-micro framework. The service will automatically be discovered via the registry (mdns by default).
|
|
|
|
Example service:
|
|
```bash
|
|
cd examples/mcp/hello
|
|
go run main.go
|
|
```
|
|
|
|
## List Available Tools
|
|
|
|
### Human-readable list
|
|
```bash
|
|
micro mcp list
|
|
```
|
|
|
|
Output:
|
|
```
|
|
Available MCP Tools:
|
|
|
|
Service: greeter
|
|
• greeter.Greeter.SayHello
|
|
|
|
Total: 1 tools
|
|
```
|
|
|
|
### JSON output
|
|
```bash
|
|
micro mcp list --json
|
|
```
|
|
|
|
Output:
|
|
```json
|
|
{
|
|
"count": 1,
|
|
"tools": [
|
|
{
|
|
"description": "Call SayHello on greeter service",
|
|
"endpoint": "Greeter.SayHello",
|
|
"name": "greeter.Greeter.SayHello",
|
|
"service": "greeter"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Test a Tool
|
|
|
|
### Basic test
|
|
```bash
|
|
micro mcp test greeter.Greeter.SayHello '{"name": "Alice"}'
|
|
```
|
|
|
|
Output:
|
|
```
|
|
Testing tool: greeter.Greeter.SayHello
|
|
Service: greeter
|
|
Endpoint: Greeter.SayHello
|
|
Input: {"name": "Alice"}
|
|
|
|
✅ Call successful!
|
|
|
|
Response:
|
|
{
|
|
"message": "Hello Alice!"
|
|
}
|
|
```
|
|
|
|
### Test with default empty input
|
|
```bash
|
|
micro mcp test greeter.Greeter.SayHello
|
|
```
|
|
|
|
This will call the tool with an empty JSON object `{}`.
|
|
|
|
## Generate Documentation
|
|
|
|
### Markdown documentation (stdout)
|
|
```bash
|
|
micro mcp docs
|
|
```
|
|
|
|
Output:
|
|
```markdown
|
|
# MCP Tools Documentation
|
|
|
|
Generated: 2026-02-13 14:30:00
|
|
|
|
Total Tools: 1
|
|
|
|
## Service: greeter
|
|
|
|
### greeter.Greeter.SayHello
|
|
|
|
**Description:** Greets a person by name. Returns a friendly greeting message.
|
|
|
|
**Example Input:**
|
|
\`\`\`json
|
|
{"name": "Alice"}
|
|
\`\`\`
|
|
```
|
|
|
|
### Markdown documentation (save to file)
|
|
```bash
|
|
micro mcp docs --output mcp-tools.md
|
|
```
|
|
|
|
This creates a `mcp-tools.md` file with the documentation.
|
|
|
|
### JSON documentation
|
|
```bash
|
|
micro mcp docs --format json
|
|
```
|
|
|
|
Output:
|
|
```json
|
|
{
|
|
"count": 1,
|
|
"tools": [
|
|
{
|
|
"description": "Greets a person by name. Returns a friendly greeting message.",
|
|
"endpoint": "Greeter.SayHello",
|
|
"example": "{\"name\": \"Alice\"}",
|
|
"metadata": {
|
|
"description": "Greets a person by name. Returns a friendly greeting message.",
|
|
"example": "{\"name\": \"Alice\"}"
|
|
},
|
|
"name": "greeter.Greeter.SayHello",
|
|
"scopes": null,
|
|
"service": "greeter"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### JSON documentation (save to file)
|
|
```bash
|
|
micro mcp docs --format json --output tools.json
|
|
```
|
|
|
|
## Export to Different Formats
|
|
|
|
### Export to LangChain (Python)
|
|
|
|
Generate Python code with LangChain tool definitions:
|
|
|
|
```bash
|
|
micro mcp export langchain
|
|
```
|
|
|
|
Output:
|
|
```python
|
|
# LangChain Tools for Go Micro Services
|
|
# Auto-generated from MCP service discovery
|
|
|
|
from langchain.tools import Tool
|
|
import requests
|
|
import json
|
|
|
|
# Configure your MCP gateway endpoint
|
|
MCP_GATEWAY_URL = 'http://localhost:3000/mcp'
|
|
|
|
def call_mcp_tool(tool_name, arguments):
|
|
"""Call an MCP tool via HTTP gateway"""
|
|
response = requests.post(
|
|
f'{MCP_GATEWAY_URL}/call',
|
|
json={'name': tool_name, 'arguments': arguments}
|
|
)
|
|
response.raise_for_status()
|
|
return response.json()
|
|
|
|
# Define tools
|
|
tools = []
|
|
|
|
def greeter_Greeter_SayHello(arguments: str) -> str:
|
|
"""Greets a person by name. Returns a friendly greeting message."""
|
|
args = json.loads(arguments) if isinstance(arguments, str) else arguments
|
|
return json.dumps(call_mcp_tool('greeter.Greeter.SayHello', args))
|
|
|
|
tools.append(Tool(
|
|
name='greeter.Greeter.SayHello',
|
|
func=greeter_Greeter_SayHello,
|
|
description='Greets a person by name. Returns a friendly greeting message.'
|
|
))
|
|
|
|
# Example usage:
|
|
# from langchain.agents import initialize_agent, AgentType
|
|
# from langchain.llms import OpenAI
|
|
#
|
|
# llm = OpenAI(temperature=0)
|
|
# agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)
|
|
# agent.run('Your query here')
|
|
```
|
|
|
|
Save to file:
|
|
```bash
|
|
micro mcp export langchain --output langchain_tools.py
|
|
```
|
|
|
|
### Export to OpenAPI 3.0
|
|
|
|
Generate an OpenAPI specification:
|
|
|
|
```bash
|
|
micro mcp export openapi
|
|
```
|
|
|
|
Output:
|
|
```json
|
|
{
|
|
"components": {
|
|
"securitySchemes": {
|
|
"bearerAuth": {
|
|
"scheme": "bearer",
|
|
"type": "http"
|
|
}
|
|
}
|
|
},
|
|
"info": {
|
|
"description": "Auto-generated OpenAPI spec from MCP service discovery",
|
|
"title": "Go Micro MCP Services",
|
|
"version": "1.0.0"
|
|
},
|
|
"openapi": "3.0.0",
|
|
"paths": {
|
|
"/mcp/call/greeter/Greeter/SayHello": {
|
|
"post": {
|
|
"description": "Greets a person by name. Returns a friendly greeting message.",
|
|
"operationId": "greeter_Greeter_SayHello",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"description": "Successful response"
|
|
}
|
|
},
|
|
"summary": "greeter.Greeter.SayHello"
|
|
}
|
|
}
|
|
},
|
|
"servers": [
|
|
{
|
|
"description": "MCP Gateway",
|
|
"url": "http://localhost:3000"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
Save to file:
|
|
```bash
|
|
micro mcp export openapi --output openapi.json
|
|
```
|
|
|
|
### Export to raw JSON
|
|
|
|
Export raw tool definitions:
|
|
|
|
```bash
|
|
micro mcp export json
|
|
```
|
|
|
|
This is similar to `micro mcp docs --format json` but specifically for export purposes.
|
|
|
|
Save to file:
|
|
```bash
|
|
micro mcp export json --output tools.json
|
|
```
|
|
|
|
## Using with Different Registries
|
|
|
|
By default, the commands use mdns registry. You can specify a different registry:
|
|
|
|
```bash
|
|
# Using consul
|
|
micro mcp list --registry consul --registry_address consul:8500
|
|
|
|
# Using etcd
|
|
micro mcp list --registry etcd --registry_address etcd:2379
|
|
```
|
|
|
|
## Integration Examples
|
|
|
|
### Using LangChain Export with Claude
|
|
|
|
1. Export your tools to LangChain format:
|
|
```bash
|
|
micro mcp export langchain --output my_tools.py
|
|
```
|
|
|
|
2. Use in your Python agent:
|
|
```python
|
|
from my_tools import tools
|
|
from langchain.agents import initialize_agent, AgentType
|
|
from langchain.chat_models import ChatAnthropic
|
|
|
|
llm = ChatAnthropic(model="claude-3-sonnet-20240229")
|
|
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)
|
|
|
|
result = agent.run("Greet Alice")
|
|
print(result)
|
|
```
|
|
|
|
### Using OpenAPI Export with GPT
|
|
|
|
1. Export to OpenAPI:
|
|
```bash
|
|
micro mcp export openapi --output openapi.json
|
|
```
|
|
|
|
2. Upload to ChatGPT as a custom GPT action or use with OpenAI Assistants API.
|
|
|
|
### Documentation for AI Agents
|
|
|
|
Generate documentation that AI agents can read to understand your services:
|
|
|
|
```bash
|
|
micro mcp docs --format json --output service-catalog.json
|
|
```
|
|
|
|
This JSON file can be fed to AI agents for service discovery and understanding.
|
|
|
|
## Advanced Usage
|
|
|
|
### Piping and Processing
|
|
|
|
You can pipe the output to other tools:
|
|
|
|
```bash
|
|
# Count tools per service
|
|
micro mcp list --json | jq '.tools | group_by(.service) | map({service: .[0].service, count: length})'
|
|
|
|
# Extract all tool names
|
|
micro mcp list --json | jq -r '.tools[].name'
|
|
|
|
# Filter tools by service
|
|
micro mcp list --json | jq '.tools[] | select(.service == "greeter")'
|
|
```
|
|
|
|
### Monitoring and CI/CD
|
|
|
|
Use these commands in your CI/CD pipeline:
|
|
|
|
```bash
|
|
# Validate all services are discoverable
|
|
SERVICE_COUNT=$(micro mcp list --json | jq '.count')
|
|
if [ "$SERVICE_COUNT" -lt 5 ]; then
|
|
echo "Error: Expected at least 5 services, found $SERVICE_COUNT"
|
|
exit 1
|
|
fi
|
|
|
|
# Generate documentation on each deployment
|
|
micro mcp docs --output docs/mcp-services.md
|
|
git add docs/mcp-services.md
|
|
git commit -m "Update MCP service documentation"
|
|
```
|
|
|
|
### Testing in Development
|
|
|
|
Create a script to test all your tools:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# test-all-tools.sh
|
|
|
|
TOOLS=$(micro mcp list --json | jq -r '.tools[].name')
|
|
|
|
for tool in $TOOLS; do
|
|
echo "Testing $tool..."
|
|
micro mcp test "$tool" "{}" || echo "Failed: $tool"
|
|
done
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### No tools found
|
|
|
|
If `micro mcp list` shows 0 tools:
|
|
|
|
1. Verify services are running:
|
|
```bash
|
|
ps aux | grep "your-service"
|
|
```
|
|
|
|
2. Check registry (mdns might need time to discover):
|
|
```bash
|
|
# Wait a few seconds and try again
|
|
sleep 3
|
|
micro mcp list
|
|
```
|
|
|
|
3. Use a different registry if mdns is unreliable:
|
|
```bash
|
|
# Start services with consul
|
|
micro --registry consul server
|
|
|
|
# List with consul
|
|
micro mcp list --registry consul
|
|
```
|
|
|
|
### Service not responding in tests
|
|
|
|
If `micro mcp test` fails:
|
|
|
|
1. Verify the tool name is correct:
|
|
```bash
|
|
micro mcp list
|
|
```
|
|
|
|
2. Check the JSON input format:
|
|
```bash
|
|
# Invalid
|
|
micro mcp test service.Handler.Method '{invalid}'
|
|
|
|
# Valid
|
|
micro mcp test service.Handler.Method '{"key": "value"}'
|
|
```
|
|
|
|
3. Check service logs for errors.
|
|
|
|
## Next Steps
|
|
|
|
- Read the [MCP Documentation](../../gateway/mcp/DOCUMENTATION.md)
|
|
- Try the [MCP Examples](../../examples/mcp/README.md)
|
|
- Learn about [Tool Scopes and Security](../../gateway/mcp/DOCUMENTATION.md#authentication-and-scopes)
|
|
- Explore [Agent SDKs](#) (coming soon)
|