Skip to main content
Glama
README.md
# Grok MCP Plugin

<!-- Add badges here -->
[![npm version](https://img.shields.io/npm/v/grok-mcp.svg?style=flat-square)](https://www.npmjs.com/package/grok-mcp) <!-- Replace with your actual package name if different -->
[![Smithery Build Status](https://api.smithery.ai/badges/github.com/Bob-lance/grok-mcp/build-status.svg)](https://smithery.ai/Bob-lance/grok-mcp) <!-- Replace with your actual repo path -->

A Model Context Protocol (MCP) plugin that provides seamless access to Grok AI's powerful capabilities directly from Cline.

## Features

This plugin exposes three powerful tools through the MCP interface:

1. **Chat Completion** - Generate text responses using Grok's language models
2. **Image Understanding** - Analyze images with Grok's vision capabilities
3. **Function Calling** - Use Grok to call functions based on user input

## Prerequisites

- Node.js (v16 or higher)
- A Grok AI API key (obtain from [console.x.ai](https://console.x.ai/))
- Cline with MCP support

## Installation

1. Clone this repository:
   ```bash
   git clone https://github.com/Bob-lance/grok-mcp.git
   cd grok-mcp
   ```

2. Install dependencies:
   ```bash
   npm install
   ```

3. Build the project:
   ```bash
   npm run build
   ```

4. Add the MCP server to your Cline MCP settings:

   For VSCode Cline extension, edit the file at:
   ```
   ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
   ```

   Add the following configuration:
   ```json
   {
     "mcpServers": {
       "grok-mcp": {
         "command": "node",
         "args": ["/path/to/grok-mcp/build/index.js"],
         "env": {
           "XAI_API_KEY": "your-grok-api-key"
         },
         "disabled": false,
         "autoApprove": []
       }
     }
   }
   ```

   Replace `/path/to/grok-mcp` with the actual path to your installation and `your-grok-api-key` with your Grok AI API key.

## Usage

Once installed and configured, the Grok MCP plugin provides three tools that can be used in Cline:

### Chat Completion

Generate text responses using Grok's language models:

```javascript
<use_mcp_tool>
<server_name>grok-mcp</server_name>
<tool_name>chat_completion</tool_name>
<arguments>
{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "Hello, what can you tell me about Grok AI?"
    }
  ],
  "temperature": 0.7
}
</arguments>
</use_mcp_tool>
```

### Image Understanding

Analyze images with Grok's vision capabilities:

```javascript
<use_mcp_tool>
<server_name>grok-mcp</server_name>
<tool_name>image_understanding</tool_name>
<arguments>
{
  "image_url": "https://example.com/image.jpg",
  "prompt": "What is shown in this image?"
}
</arguments>
</use_mcp_tool>
```

You can also use base64-encoded images:

```javascript
<use_mcp_tool>
<server_name>grok-mcp</server_name>
<tool_name>image_understanding</tool_name>
<arguments>
{
  "base64_image": "base64-encoded-image-data",
  "prompt": "What is shown in this image?"
}
</arguments>
</use_mcp_tool>
```

### Function Calling

Use Grok to call functions based on user input:

```javascript
<use_mcp_tool>
<server_name>grok-mcp</server_name>
<tool_name>function_calling</tool_name>
<arguments>
{
  "messages": [
    {
      "role": "user",
      "content": "What's the weather like in San Francisco?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get the current weather in a given location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"],
              "description": "The unit of temperature to use"
            }
          },
          "required": ["location"]
        }
      }
    }
  ]
}
</arguments>
</use_mcp_tool>
```

## API Reference

### Chat Completion

Generate a response using Grok AI chat completion.

**Parameters:**

- `messages` (required): Array of message objects with role and content
- `model` (optional): Grok model to use (defaults to grok-3-mini-beta)
- `temperature` (optional): Sampling temperature (0-2, defaults to 1)
- `max_tokens` (optional): Maximum number of tokens to generate (defaults to 16384)

### Image Understanding

Analyze images using Grok AI vision capabilities.

**Parameters:**

- `prompt` (required): Text prompt to accompany the image
- `image_url` (optional): URL of the image to analyze
- `base64_image` (optional): Base64-encoded image data (without the data:image prefix)
- `model` (optional): Grok vision model to use (defaults to grok-2-vision-latest)

Note: Either `image_url` or `base64_image` must be provided.

### Function Calling

Use Grok AI to call functions based on user input.

**Parameters:**

- `messages` (required): Array of message objects with role and content
- `tools` (required): Array of tool objects with type, function name, description, and parameters
- `tool_choice` (optional): Tool choice mode (auto, required, none, defaults to auto)
- `model` (optional): Grok model to use (defaults to grok-3-mini-beta)

## Development

### Project Structure

- `src/index.ts` - Main server implementation
- `src/grok-api-client.ts` - Grok API client implementation

### Building

```bash
npm run build
```

### Running

```bash
XAI_API_KEY="your-grok-api-key" node build/index.js
```

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgements

- [Model Context Protocol](https://github.com/modelcontextprotocol/mcp)
- [Grok AI](https://x.ai/)

TDQS

B3.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: chat_completion handles text generation, function_calling manages function execution, and image_understanding focuses on visual analysis. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency4/5

The tools follow a consistent snake_case naming convention, but the pattern is not strictly verb_noun (e.g., chat_completion, function_calling, image_understanding). The naming is readable and logical, with only minor deviations from a perfect pattern.

Tool Count3/5

With only 3 tools, the set feels thin for a general-purpose AI plugin, potentially lacking operations like text summarization, translation, or audio processing. However, it covers core AI functionalities adequately for basic use cases.

Completeness3/5

The tools cover key AI areas (text, functions, images), but there are notable gaps such as missing text analysis tools (e.g., sentiment analysis, summarization) and no explicit support for audio or video processing. The surface is functional but not comprehensive for a full AI suite.

Maintenance

ActivityInactive
ResponsivenessNo issues