mcp-server-grok-chat
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
Tool | Description |
| Send a chat completion request to Grok with optional multi-turn history, system prompt, structured output (JSON schema), model selection, and multi-agent research |
| Analyse an image with Grok's vision capabilities given an image URL and text prompt |
| Chat with Grok using live web search and/or X (Twitter) search to ground responses |
| Generate text embeddings using Grok's embedding model |
| List 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:
Name | Type | Required | Description |
| string | yes | The user message to send |
| string | no | Model ID (default: |
| string | no | System prompt to set context |
| string | no | Full conversation history as JSON array of |
| float | no | Sampling temperature (0.0 - 2.0) |
| integer | no | Maximum tokens to generate |
| string | no | JSON schema string to enforce structured output |
| string | no | On |
chat_with_vision
Analyse an image using Grok's vision capabilities.
Parameters:
Name | Type | Required | Description |
| string | yes | Text prompt describing what to analyse |
| string | yes | URL of the image (must be http:// or https://) |
| string | no | Model ID (default: |
| string | no | Image detail level: |
| float | no | Sampling temperature (0.0 - 2.0) |
| integer | no | Maximum 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:
Name | Type | Required | Description |
| string | yes | The user message to send |
| string | no | Search type: |
| string | no | Model ID (default: |
| string | no | System prompt to set context |
| float | no | Sampling temperature (0.0 - 2.0) |
| integer | no | Maximum tokens to generate |
| string | no | On |
embedding
Generate text embeddings.
Parameters:
Name | Type | Required | Description |
| string | yes | Text to embed as JSON: a single string or array of strings |
| string | no | Embedding model to use (default: |
list_models
List all available Grok models. No parameters. Results are cached for 5 minutes.
Prerequisites
Rust (edition 2024)
An xAI API key from console.x.ai
Setup
Create the config file:
mkdir -p ~/.config/mcp-server-grok-chatCreate ~/.config/mcp-server-grok-chat/config.toml:
api_key = "xai-..."Build
cargo build --releaseThis 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 loggingMCP 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 loadingLicense
MIT