goodmorning-mcp
goodmorning-mcp
An MCP (Model Context Protocol) server that exposes models available on the gm inference gateway — a Bittensor subnet product — as callable tools, so a coding agent (Codex, Claude Code) can call gm models by name and list what's available.
Install
npx -y goodmorning-mcpRequirements
Node >= 22.
Getting an API key
Sign up at saygm.com to get a GM_API_KEY.
Environment variables
Variable | Required | Default | Notes |
| yes | — | gm API key used as the bearer token for all requests |
| no |
| gm gateway base URL |
Codex
Add to ~/.codex/config.toml:
[mcp_servers.gm]
command = "npx"
args = ["-y", "goodmorning-mcp"]
env = { "GM_API_KEY" = "sk-...", "GM_BASE_URL" = "https://api.saygm.com/v1" }Claude Code
Add to .mcp.json:
{
"mcpServers": {
"gm": {
"command": "npx",
"args": ["-y", "goodmorning-mcp"],
"env": {
"GM_API_KEY": "sk-...",
"GM_BASE_URL": "https://api.saygm.com/v1"
}
}
}
}Tools
gm_ask
Ask a specific gm model a prompt and get back its full response text.
Param | Type | Required | Notes |
| string | yes | A gm catalog model id (see |
| string | yes | The user prompt |
| string | no | Optional system prompt |
| integer | no | Max output tokens (default 16384). Raising it increases gm's upfront credit hold; OpenAI-surface models are uncapped when it's unset. |
gm_ask auto-routes across the gm gateway's three API surfaces based on
the model's api_shapes in the gm catalog, so claude-fable-5, gpt-*,
kimi-k3, and gemini-* all work through the same tool:
Surface | Models | Endpoint |
OpenAI ( | e.g. |
|
Anthropic ( | e.g. |
|
Gemini ( | e.g. |
|
Models whose only surface is unsupported (e.g. responses-only) throw a
clear error naming the model and its api_shapes.
Non-streaming: the call blocks until the model finishes, then returns the full text in one shot. If the model returns empty content, the tool throws a clear error naming the model. The client applies a 5-minute timeout to accommodate long-reasoning models.
gm_list_models
No params. Returns the ids of models that are currently available and
served through a supported surface, as a newline-separated, sorted string,
for use as the model argument to gm_ask.
Usage
Once the server is configured, prompt your agent in natural language. It
will call gm_list_models to discover valid model ids, then gm_ask to
query one. For example:
Use gm to check the last response with kimi-k3.
Ask gm_list_models what's available, then get a second opinion from claude-fable-5, gpt-5.6, and gemini-3.1-pro-preview.
Model ids come and go with the gm catalog, so call gm_list_models rather
than hardcoding one.