Grok Chat MCP

MCP server for xAI Grok API — chat, vision, search, and embeddings (Rust, stdio)

Documentation

mcp-server-grok-chat

An MCP (Model Context Protocol) server for the xAI Grok API. Built in Rust, exposes chat completions, vision, web/X search, embeddings, and model listing as MCP tools.

Communicates via stdio using JSON-RPC 2.0, like all MCP servers.

Tools

ToolDescription
chatSend a chat completion request to Grok with optional multi-turn history, system prompt, structured output (JSON schema), model selection, and multi-agent research
chat_with_visionAnalyse an image with Grok's vision capabilities given an image URL and text prompt
chat_with_searchChat with Grok using live web search and/or X (Twitter) search to ground responses
embeddingGenerate text embeddings using Grok's embedding model
list_modelsList all available Grok models and their IDs (cached for 5 minutes)

chat

Send a chat completion request. Supports multi-turn conversations via a JSON message history array, system prompts, structured output via JSON schema, temperature control, model selection, and multi-agent research.

When using a multi-agent model (any model ID containing multi-agent), the request is automatically routed through the Responses API. The multi-agent model dispatches your query to multiple agents that research in parallel, then synthesizes their findings. Use reasoning_effort to control agent count. Call the list_models tool to see which multi-agent models are currently available.

Parameters:

NameTypeRequiredDescription
promptstringyesThe user message to send
modelstringnoModel ID (default: grok-4.3). Call list_models for the current set.
system_promptstringnoSystem prompt to set context
messagesstringnoFull conversation history as JSON array of {role, content} objects
temperaturefloatnoSampling temperature (0.0 - 2.0)
max_tokensintegernoMaximum tokens to generate
response_schemastringnoJSON schema string to enforce structured output
reasoning_effortstringnoOn grok-4.3: low/medium/high controls native reasoning depth. On multi-agent models: low/medium = 4 agents, high/xhigh = 16 agents (xhigh is multi-agent-only).

chat_with_vision

Analyse an image using Grok's vision capabilities.

Parameters:

NameTypeRequiredDescription
promptstringyesText prompt describing what to analyse
image_urlstringyesURL of the image (must be http:// or https://)
modelstringnoModel ID (default: grok-4.3). Must be a vision-capable model. Call list_models for the current set.
detailstringnoImage detail level: low or high (default: high)
temperaturefloatnoSampling temperature (0.0 - 2.0)
max_tokensintegernoMaximum tokens to generate

chat_with_search

Chat with Grok using live web search and/or X (Twitter) search. The model automatically searches the internet to ground its response.

Parameters:

NameTypeRequiredDescription
promptstringyesThe user message to send
search_typestringnoSearch type: web, x, or both (default: both)
modelstringnoModel ID (default: grok-4.3). Call list_models for the current set.
system_promptstringnoSystem prompt to set context
temperaturefloatnoSampling temperature (0.0 - 2.0)
max_tokensintegernoMaximum tokens to generate
reasoning_effortstringnoOn grok-4.3: low/medium/high controls native reasoning depth. On multi-agent models: low/medium = 4 agents, high/xhigh = 16 agents (xhigh is multi-agent-only).

embedding

Generate text embeddings.

Parameters:

NameTypeRequiredDescription
inputstringyesText to embed as JSON: a single string or array of strings
modelstringnoEmbedding model to use (default: grok-2-text-embedding)

list_models

List all available Grok models. No parameters. Results are cached for 5 minutes.

Prerequisites

Setup

Create the config file:

mkdir -p ~/.config/mcp-server-grok-chat

Create ~/.config/mcp-server-grok-chat/config.toml:

api_key = "xai-..."

Build

cargo build --release

This produces target/release/grok-chat.

For development:

cargo build              # debug build
cargo run                # run in dev mode
RUST_LOG=debug cargo run # run with debug logging

MCP Configuration

Add to your Claude Desktop config (~/.config/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "grok-chat": {
      "command": "/path/to/grok-chat"
    }
  }
}

Project Structure

src/
  main.rs    - entry point, config loading, stdio transport setup
  server.rs  - MCP tool definitions (chat, chat_with_vision, chat_with_search, embedding, list_models)
  api.rs     - xAI HTTP client, request/response types, response formatters
  params.rs  - tool parameter types with serde and JSON Schema derives
  config.rs  - TOML config loading

License

MIT