Stata MCP

Run Stata commands and execute .do files directly from VS Code and Cursor, with AI assistant integration.

Stata MCP Extension for VS Code, Cursor, and Antigravity

en cn VS Code Marketplace VS Code Installs Open VSX Open VSX Downloads GitHub Downloads GitHub License

This extension provides Stata integration for Visual Studio Code, Cursor, and Antigravity IDE using the Model Context Protocol (MCP). It enables AI-powered Stata development with GitHub Copilot, Cursor, Antigravity, Cline, Claude Code, or Codex.

Features

  • Run Stata Commands: Execute selections or entire .do files directly from your editor
  • Real-time Output: See Stata results instantly in your editor
  • Syntax Highlighting: Full syntax support for Stata .do, .ado, .mata, and .doh files
  • AI Assistant Integration: Contextual help and code suggestions via MCP
  • Cross-platform: Works on Windows, macOS, and Linux
  • Multi-Session Parallel Execution: Run multiple Stata sessions simultaneously with AI coding tools

Demo

Watch how this extension enhances your Stata workflow with Cursor (or VS Code/Antigravity) and AI assistance:

Stata MCP Extension Demo

🎬 Full Video Version Β Β |Β Β  πŸ“„ View Generated PDF Report

Demo prompt: "Write and execute Stata do-files, ensuring that full absolute file paths are used in all cases. Load the auto dataset (webuse auto) and generate summary statistics for each variable. Identify and extract key features from the dataset, produce relevant plots, and save them in a folder named plots. Conduct a regression analysis to examine the main determinants of car prices. Export all outputs to a LaTeX file and compile it. Address any compilation errors automatically, and ensure that LaTeX compilation does not exceed 10 seconds. All code errors should be identified and resolved as part of the workflow."

Requirements

  • Stata 17 or higher installed on your machine
  • UV package manager (automatically installed or can be installed manually if needed)

Installation

Note: Initial installation requires setting up dependencies which may take up to 2 minutes to complete. Please be patient during this one-time setup process. All subsequent runs will start instantly.

  1. Open VS Code, Cursor, or Antigravity
  2. Open the Extensions view (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for "Stata MCP"
  4. Click Install

That's it β€” the extension auto-starts the MCP server and appears in the status bar as "Stata".

Other installation methods β€” CLI, .vsix file, Open VSX

From the command line

# VS Code
code --install-extension DeepEcon.stata-mcp

# Cursor
cursor --install-extension DeepEcon.stata-mcp

# Antigravity (installs from Open VSX Registry)
antigravity --install-extension DeepEcon.stata-mcp

From a local .vsix file

Download stata-mcp-<version>.vsix from the releases page, then either:

code        --install-extension path/to/stata-mcp-0.5.2.vsix
cursor      --install-extension path/to/stata-mcp-0.5.2.vsix
antigravity --install-extension path/to/stata-mcp-0.5.2.vsix

…or in the UI: Extensions view β†’ … menu β†’ Install from VSIX… β†’ pick the downloaded file.

Registries

Starting with version 0.1.8, the extension integrates a fast Python package installer called uv to set up the environment. If uv is not found on your system, the extension will attempt to install it automatically.

⚑ Connect Your AI Assistant

Once the extension is running (status bar shows "Stata"), the local MCP server is listening on:

  • http://localhost:4000/mcp-streamable β€” Streamable HTTP (preferred for modern clients)
  • http://localhost:4000/mcp β€” SSE (legacy fallback)

Quick health check: curl -s http://localhost:4000/health should print {"status":"ok",...}.

πŸ“‹ One-prompt setup

Paste the block below into any MCP-aware assistant β€” Claude Code, OpenAI Codex, Cursor AI, Copilot Chat, etc. Hover the box on GitHub and click the copy icon in the top-right corner.

Set up the Stata MCP server for me. Endpoint: http://localhost:4000/mcp-streamable β€” setup guide: https://github.com/hanlulong/stata-mcp#detailed-configurations β€” if I already have a stata-mcp entry in my MCP config (e.g. using mcp-proxy), replace it rather than appending. When registration succeeds, tell me to restart the client so the stata_run_selection tool becomes available.

The assistant reads the guide, detects which client it is, writes the right config (or runs the right CLI command), and tells you to restart. The stata_run_selection tool becomes visible after the restart β€” MCP tool lists do not refresh mid-session.

Prefer manual setup? Expand Detailed Configurations below for per-client instructions.

Usage

Running Stata Code

  1. Open a Stata .do file
  2. Run commands using:
    • Run Selection: Select Stata code and press Ctrl+Shift+Enter (or Cmd+Shift+Enter on Mac), or click the play button in the editor toolbar
    • Run File: Press Ctrl+Shift+D (or Cmd+Shift+D on Mac) to run the entire .do file, or click the run-all button in the toolbar
    • Stop Execution: Press Ctrl+Shift+C (or Cmd+Shift+C on Mac) to stop a running command
    • Restart Session: Click the restart button in the editor toolbar or use the Command Palette ("Stata: Restart Session") to reset the Stata session. This clears all in-memory data, globals, and programs β€” equivalent to closing and reopening Stata
    • Interactive Mode: Click the graph button in the editor toolbar to run code in an interactive browser window
  3. View output in the Stata Output panel

Note for Cursor/Antigravity Users: Toolbar buttons may be hidden by default. To show them:

  1. Click the ... (three dots) menu in the editor title bar
  2. Select "Configure Icon Visibility"
  3. Enable the Stata buttons you want to see (Run Selection, Run File, Stop, View Data, Restart Session, Interactive)

Data Viewer

Access the data viewer to inspect your Stata dataset:

  1. Click the View Data button (fourth button, table icon) in the editor toolbar
  2. View your current dataset in a table format
  3. Filter data: Use Stata if conditions to view subsets of your data
    • Example: price > 5000 & mpg < 30
    • Type your condition in the filter box and click "Apply"
    • Click "Clear" to remove the filter and view all data

Graph Display Options

Control how graphs are displayed:

  1. Auto-display graphs: Graphs are automatically shown when generated (default: enabled)
    • Disable in Extension Settings: stata-vscode.autoDisplayGraphs
  2. Choose display method:
    • VS Code webview (default): Graphs appear in a panel within VS Code
    • External browser: Graphs open in your default web browser
    • Change in Extension Settings: stata-vscode.graphDisplayMethod

Detailed Configurations

Extension Settings

Customize the extension behavior through VS Code settings. Access these settings via:

  • VS Code/Cursor/Antigravity: File > Preferences > Settings (or Ctrl+, / Cmd+,)
  • Search for "Stata MCP" to find all extension settings

Core Settings

SettingDescriptionDefault
stata-vscode.stataPathPath to Stata installation directoryAuto-detected
stata-vscode.stataEditionStata edition to use (MP, SE, BE)mp
stata-vscode.autoStartServerAutomatically start MCP server when extension activatestrue

Server Settings

SettingDescriptionDefault
stata-vscode.mcpServerHostHost for MCP serverlocalhost
stata-vscode.mcpServerPortPort for the MCP server4000
stata-vscode.forcePortForce the specified port even if it's already in usefalse

Graph Settings

SettingDescriptionDefault
stata-vscode.autoDisplayGraphsAutomatically display graphs when generated by Stata commandstrue
stata-vscode.graphDisplayMethodChoose how to display graphs: vscode (webview panel) or browser (external browser)vscode

Log File Settings

SettingDescriptionDefault
stata-vscode.logFileLocationLocation for Stata log files: dofile (same directory as .do file), parent (parent directory of .do file), workspace (VS Code workspace root), extension (logs folder in extension directory), or custom (user-specified directory)extension
stata-vscode.customLogDirectoryCustom directory for Stata log files (only used when logFileLocation is set to custom)Empty

Advanced Settings

SettingDescriptionDefault
stata-vscode.runFileTimeoutTimeout in seconds for 'Run File' operations600 (10 minutes)
stata-vscode.runSelectionTimeoutTimeout in seconds for 'Run Selection' and interactive window commands600 (10 minutes)
stata-vscode.debugModeShow detailed debug information in output panelfalse

Working Directory Settings

Control which directory Stata uses when running .do files:

SettingDescriptionDefault
stata-vscode.workingDirectoryWorking directory when running .do files: dofile (same as .do file), parent (parent directory of .do file), workspace (VS Code workspace root), extension (logs folder in extension directory), custom (user-specified), or none (don't change directory)dofile
stata-vscode.customWorkingDirectoryCustom working directory path (only used when workingDirectory is set to custom)Empty

Example: If your project structure is project/code/analysis.do and your do-file expects to run from project/, set workingDirectory to parent.

MCP Output Settings

These settings control how Stata output is returned to AI assistants (LLMs) via the MCP protocol, helping to reduce token usage:

SettingDescriptionDefault
stata-vscode.resultDisplayModeOutput mode for MCP returns: compact (filters redundant output to save tokens) or full (returns complete output)compact
stata-vscode.maxOutputTokensMaximum tokens for MCP output (0 = unlimited). Large outputs are saved to file with a path returned instead10000

Compact mode filters:

  • Loop code echoes (foreach/forvalues/while blocks) - keeps actual output only
  • Program definitions and Mata blocks
  • Command echoes and line continuations (for run_file only)
  • Verbose messages like "(N real changes made)" and "(N missing values generated)"

Multi-Session Settings

Enable parallel Stata execution with isolated sessions. Each session has its own data, variables, and macros.

SettingDescriptionDefault
stata-vscode.multiSessionEnable multi-session mode for parallel Stata executiontrue
stata-vscode.maxSessionsMaximum number of concurrent sessions (1-100)100
stata-vscode.sessionTimeoutSession idle timeout in seconds. Sessions are automatically destroyed after this period of inactivity3600

Note: Each session requires ~200-300 MB RAM for Stata. Check your Stata license for concurrent instance limits.


GitHub Copilot

GitHub Copilot supports MCP (Model Context Protocol) starting from VS Code 1.102. You can connect the Stata MCP server to Copilot for AI-powered Stata development.

Configuration

  1. Install the Stata MCP extension in VS Code (see Installation section above)

  2. Start the Stata MCP server: The server should start automatically when you open VS Code with the extension installed. Verify it's running by checking the status bar (should show "Stata").

  3. Add the Stata MCP server to Copilot: You can configure MCP servers either per-workspace or globally.

    Option A: Per-Workspace Configuration

    Create a .vscode/mcp.json file in your workspace root:

    {
      "servers": {
        "stata-mcp": {
          "type": "http",
          "url": "http://localhost:4000/mcp-streamable"
        }
      }
    }
    

    Option B: Global Configuration (All Workspaces)

    1. Open Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
    2. Type "MCP: Open User Configuration" and select it
    3. Add the Stata MCP server to the mcp.json file:
      {
        "servers": {
          "stata-mcp": {
            "type": "http",
            "url": "http://localhost:4000/mcp-streamable"
          }
        }
      }
      

    On older VS Code versions without Streamable HTTP support, use "type": "sse" with http://localhost:4000/mcp instead.

    The user-level mcp.json file is located at:

    • Windows: %APPDATA%\Code\User\mcp.json
    • macOS: ~/Library/Application Support/Code/User/mcp.json
    • Linux: ~/.config/Code/User/mcp.json
  4. Reload VS Code to apply the configuration.

  5. GitHub Copilot will now have access to Stata tools and can help you:

    • Write and execute Stata commands
    • Analyze your data
    • Generate visualizations
    • Debug Stata code
    • Create statistical reports

Verifying the Connection

  1. Open GitHub Copilot Chat (Ctrl+Shift+I / Cmd+Shift+I)
  2. Type @mcp to see available MCP tools
  3. The Stata tools (stata_run_selection, stata_run_file) should appear

Troubleshooting

If Copilot is not recognizing the Stata MCP server:

  1. Verify VS Code version 1.102 or later
  2. Verify the MCP server is running (Status bar should show "Stata")
  3. Check that .vscode/mcp.json exists with the correct content
  4. Try restarting VS Code
  5. Check the extension output panel (View > Output > Stata MCP) for any errors
  6. Ensure MCP is enabled in your organization's Copilot policy (if applicable)

Claude Code

Claude Code is Anthropic's official AI coding assistant available in VS Code, Cursor, and Antigravity. Follow these steps to configure the Stata MCP server:

Installation

  1. Install the Stata MCP extension in VS Code, Cursor, or Antigravity (see Installation section above)

  2. Start the Stata MCP server: The server should start automatically when you open your IDE with the extension installed. Verify it's running by checking the status bar (should show "Stata").

Configuration

Once the Stata MCP server is running, configure Claude Code to connect to it:

  1. Open your terminal or command palette

  2. Run the following command to add the Stata MCP server:

    claude mcp add --transport http stata-mcp http://localhost:4000/mcp-streamable --scope user
    

    Older Claude Code versions (pre-2026) may not recognize --transport http. On those, use --transport sse with http://localhost:4000/mcp instead. Claude Code now treats SSE as legacy β€” prefer http whenever it is supported.

  3. Restart your IDE

  4. Claude Code will now have access to Stata tools and can help you:

    • Write and execute Stata commands
    • Analyze your data
    • Generate visualizations
    • Debug Stata code
    • Create statistical reports

Verifying the Connection

To verify Claude Code is properly connected to the Stata MCP server:

  1. Open a Stata .do file or create a new one
  2. Ask Claude Code to help with a Stata task (e.g., "Load the auto dataset and show summary statistics")
  3. Claude Code should be able to execute Stata commands and show results

Troubleshooting

If Claude Code is not recognizing the Stata MCP server:

  1. Verify the MCP server is running (Status bar should show "Stata")
  2. Check that you ran the claude mcp add command with the correct URL
  3. Try restarting your IDE
  4. Check the extension output panel (View > Output > Stata MCP) for any errors
  5. Ensure there are no port conflicts (default port is 4000)

Claude Desktop

Claude Desktop connects to remote MCP servers like the one this extension exposes. Make sure the Stata MCP extension is installed and its status bar shows "Stata" before configuring Claude Desktop.

Option A (recommended): add as a Custom Connector

  1. Open Claude Desktop β†’ Settings β†’ Connectors β†’ Add custom connector
  2. Name: Stata MCP
  3. URL: http://localhost:4000/mcp-streamable
  4. Save and restart Claude Desktop

No wrapper, no config file editing, no Python/Node install required. This is Anthropic's current recommended way to add remote MCP servers to Claude Desktop.

Option B: JSON config with a stdio wrapper (if you prefer editing claude_desktop_config.json)

Anthropic's JSON config doesn't yet accept remote URLs directly β€” you still need a local stdio wrapper. The easiest is mcp-remote, which is zero-install if you have Node:

  1. Open the config file:

    • macOS: ~/Library/Application Support/Claude Desktop/claude_desktop_config.json
    • Windows: %APPDATA%\Claude Desktop\claude_desktop_config.json
  2. Add this block (merge with any existing mcpServers object):

    {
      "mcpServers": {
        "stata-mcp": {
          "command": "npx",
          "args": ["-y", "mcp-remote", "http://localhost:4000/mcp-streamable"]
        }
      }
    }
    
  3. Restart Claude Desktop. The Stata tools will appear in the available-tools list.


OpenAI Codex

You can use this extension with OpenAI Codex β€” the CLI and every IDE extension share the same ~/.codex/config.toml. Codex CLI 0.46.0+ (October 2025) supports MCP servers over HTTP natively, so no wrapper is needed. Either drive it from the command line:

codex mcp add stata-mcp --url http://localhost:4000/mcp-streamable

Or append this block manually to ~/.codex/config.toml (or %USERPROFILE%\.codex\config.toml on Windows):

[mcp_servers.stata-mcp]
url = "http://localhost:4000/mcp-streamable"

Upgrading from an older setup? If an existing [mcp_servers.stata-mcp] block uses command = "mcp-proxy" (or command = "uvx" + mcp-proxy in args), delete that block before adding the one above β€” TOML forbids duplicate keys, and Codex will silently skip the server if both are present.

Then restart Codex β€” the stata_run_selection and stata_run_file tools will appear. Run codex mcp list to confirm the server is registered.

Note on transports. Codex only speaks MCP's Streamable HTTP transport (single endpoint at /mcp-streamable). The extension's legacy SSE endpoint (/mcp) is for older clients like GitHub Copilot β€” don't point Codex at it.

Troubleshooting Codex Configuration

If Codex doesn't see the Stata tools:

  1. Verify the MCP server is running (status bar shows "Stata") β€” try curl -s http://localhost:4000/health
  2. Check codex --version β€” make sure you're on 0.46.0 or newer. Older Codex versions need the mcp-proxy wrapper (see note below).
  3. Verify the config file exists at ~/.codex/config.toml and contains the exact [mcp_servers.stata-mcp] block above
  4. Run codex mcp list β€” stata-mcp should appear as registered
  5. Restart Codex (CLI or IDE) after config changes
  6. Check the extension output panel (View β†’ Output β†’ Stata) for any server-side errors
  7. Ensure no port conflict (default is 4000 β€” change via stata-vscode.mcpServerPort if needed)
Stuck on Codex < 0.46.0?

If you cannot upgrade, use mcp-proxy as a stdio wrapper around the SSE endpoint:

# Install uv first if needed:
curl -LsSf https://astral.sh/uv/install.sh | sh   # macOS/Linux
# Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
[mcp_servers.stata-mcp]
command = "uvx"
args = ["mcp-proxy", "http://localhost:4000/mcp"]

Cline
  1. Open your Cline MCP settings file:

    • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    • Windows: %APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    • Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  2. Add the Stata MCP server configuration:

    {
      "mcpServers": {
        "stata-mcp": {
          "url": "http://localhost:4000/mcp-streamable"
        }
      }
    }
    

    Cline auto-detects the transport from the URL β€” no transport key needed. Point it at http://localhost:4000/mcp if you need SSE for any reason.

  3. If the file already contains other MCP servers, just add the "stata-mcp" entry to the existing "mcpServers" object.

  4. Save the file and restart VS Code.

You can also configure Cline through VS Code settings:

"cline.mcpSettings": {
  "stata-mcp": {
    "url": "http://localhost:4000/mcp-streamable"
  }
}

Troubleshooting Cline Configuration

If Cline is not recognizing the Stata MCP server:

  1. Verify the MCP server is running (Status bar should show "Stata")
  2. Check that the configuration file exists with the correct content
  3. Try restarting VS Code
  4. Check the extension output panel (View > Output > Stata MCP) for any errors

Cursor

The extension automatically configures Cursor MCP integration. To verify it's working:

  1. Open Cursor
  2. Press Ctrl+Shift+P (or Cmd+Shift+P on Mac) to open the Command Palette
  3. Type "Stata: Test MCP Server Connection" and press Enter
  4. You should see a success message if the server is properly connected

Cursor Configuration File Paths

Cursor reads user-level MCP config from:

  • macOS / Linux: ~/.cursor/mcp.json
  • Windows: %USERPROFILE%\.cursor\mcp.json

Workspace-level config (overrides user-level for that project) goes in .cursor/mcp.json at the workspace root.

Manual Cursor Configuration

If you need to manually configure Cursor MCP:

  1. Create or edit the MCP configuration file:

    • macOS/Linux: ~/.cursor/mcp.json
    • Windows: %USERPROFILE%\.cursor\mcp.json
  2. Add the Stata MCP server configuration:

    {
      "mcpServers": {
        "stata-mcp": {
          "url": "http://localhost:4000/mcp-streamable"
        }
      }
    }
    

    Cursor auto-detects the transport from the URL β€” no transport key needed. It tries Streamable HTTP first and falls back to SSE if the server advertises it.

  3. If the file already contains other MCP servers, just add the "stata-mcp" entry to the existing "mcpServers" object.

  4. Save the file and restart Cursor.

Troubleshooting Cursor Configuration

If Cursor is not recognizing the Stata MCP server:

  1. Verify the MCP server is running
  2. Check that the configuration file exists with the correct content
  3. Try restarting Cursor
  4. Ensure there are no port conflicts with other running applications

Python Environment Management

This extension uses uv, a fast Python package installer built in Rust, to manage Python dependencies. Key features:

  • Automatic Python setup and dependency management
  • Creates isolated environments that won't conflict with your system
  • Works across Windows, macOS, and Linux
  • 10-100x faster than traditional pip installations

If you encounter any UV-related errors during installation:

  1. Install UV manually:
    # Windows (PowerShell as Administrator)
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
    # macOS/Linux
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Follow the clean-reinstall steps in the troubleshooting guide to reinstall the extension.

Troubleshooting

Running into trouble? The full troubleshooting guide β€” clean reinstall steps for Windows / macOS / Linux, common Python and UV issues, Stata-edition mismatches, and what to include when opening a GitHub issue β€” lives in docs/troubleshooting.md.

Star History

Star History Chart

License

MIT

Credits

Created by Lu Han, Published by OpenEcon.ai

Related Servers

NotebookLM Web Importer

Import web pages and YouTube videos to NotebookLM with one click. Trusted by 200,000+ users.

Install Chrome Extension