chore: import upstream snapshot with attribution
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
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
This commit is contained in:
@@ -0,0 +1,453 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user