Skip to main content

StackOverflow MCP server for querying programming Q&A using FastMCP framework

Project description

StackOverflow MCP Server

npm version License: MIT

A Model Context Protocol (MCP) server that provides seamless access to StackOverflow's programming Q&A database using the FastMCP framework.

Quick Start

Using with Cursor (Recommended)

Add this configuration to your Cursor MCP settings:

{
  "mcp_servers": {
    "stackoverflow": {
      "command": "npx",
      "args": [
        "-y",
        "@notalk-tech/stackoverflow-mcp",
        "--api-key", "your_stackoverflow_api_key"
      ]
    }
  }
}

Using NPX

# Run directly (no installation required)
npx @notalk-tech/stackoverflow-mcp

# With API key
npx @notalk-tech/stackoverflow-mcp --api-key your_key

# Skip installation prompts
npx -y @notalk-tech/stackoverflow-mcp

Using Python Module

# Direct execution
python -m stackoverflow_mcp

# With uv (recommended)
uv run python -m stackoverflow_mcp --api-key your_key

๐ŸŽฏ Features

  • ๐Ÿ” Advanced Search: Search by keywords, tags, accepted status, score threshold, and date ranges
  • ๐Ÿ“– Question Details: Get detailed content with automatic HTML-to-Markdown conversion
  • ๐Ÿท๏ธ Tag-based Search: Convenient tag-only search (proxies to main search)
  • ๐Ÿ’ก Related Questions: Discover related and linked questions for deeper exploration
  • โšก Rate Limit Management: Intelligent retry, backoff, and auto-switching between authenticated/unauthenticated access
  • ๐Ÿ” API Authentication: Full support for StackOverflow API keys with automatic quota tracking
  • ๐Ÿ“ฆ Unified Response Format: All tools return consistent {success, data, meta} structure
  • ๐Ÿš€ Auto-deployment: NPX-compatible with automatic Python environment setup

๐Ÿ”‘ Getting Your API Key

To use this MCP server with higher rate limits, you'll need a StackOverflow API key:

Steps

  1. Register Your Application

  2. Generate Your API Key

    • Go to your application management page
    • Click "Generate a new API key"
    • Copy and save the generated key securely

Rate Limits

  • Without API key: 300 requests/day per IP
  • With API key: 10,000 requests/day

For read-only operations (searching and retrieving Q&A), a simple API key is sufficient. OAuth is only needed for write operations.

Learn more: https://api.stackexchange.com/docs/authentication

โš™๏ธ Configuration

Create a .stackoverflow-mcp.json file in your working directory:

{
  "stackoverflow_api_key": "your_api_key_here",
  "log_level": "CRITICAL"
}

The server auto-discovers config files in this order:

  1. .stackoverflow-mcp.json
  2. stackoverflow-mcp.config.json
  3. config/stackoverflow-mcp.json
  4. .config/stackoverflow-mcp.json

Command Line Options

--working-dir DIRECTORY    Working directory (auto-detect if not specified)
--api-key TEXT             StackOverflow API key
--version                  Show version and exit
--help                     Show help message

๐ŸŒ Available Tools

Once running, the MCP server provides these tools:

  • search_questions: Search StackOverflow questions by keywords with optional filters โ€” tags, accepted_only, min_score, from_date, to_date
  • search_by_tags: Convenience wrapper for tag-only search (proxies to search_questions)
  • get_question: Get detailed question content with optional answer limiting (max_answers) and automatic HTML-to-Markdown conversion
  • get_answers: Fetch answers independently without re-fetching the question body
  • get_related: Discover related and linked questions for further exploration

Resource

  • stackoverflow://status: Server status including version, authentication state, rate limit status, and queue statistics

๐Ÿ“‹ Prerequisites

  • Node.js 14.0.0 or higher
  • Python 3.12 or higher
  • uv (recommended) or pip

The NPX wrapper automatically handles Python package installation and environment setup.

๐Ÿš€ Development

Local Setup

git clone https://github.com/NoTalkTech/stackoverflow-mcp.git
cd stackoverflow-mcp

# Install dependencies
npm install
pip install -e .

# Run in development mode
npm start

Project Structure

stackoverflow-mcp/
โ”œโ”€โ”€ cli.js                          # NPX wrapper (Node.js)
โ”œโ”€โ”€ package.json                    # NPM package configuration
โ”œโ”€โ”€ pyproject.toml                  # Python package configuration
โ”œโ”€โ”€ src/stackoverflow_mcp/          # Python MCP server
โ”‚   โ”œโ”€โ”€ __main__.py                 # Python module entry point
โ”‚   โ”œโ”€โ”€ main.py                     # CLI and server management
โ”‚   โ”œโ”€โ”€ server.py                   # MCP server implementation (5 tools + resource)
โ”‚   โ”œโ”€โ”€ config.py                   # Server configuration management
โ”‚   โ”œโ”€โ”€ logging.py                  # Logging configuration
โ”‚   โ””โ”€โ”€ stackoverflow_client.py     # StackOverflow API client (rate limiting, caching, content formatting)
โ””โ”€โ”€ tests/                          # Test files

Testing

# Run all tests
.venv/bin/python -m pytest tests/ -v

# Test npm package
npm test

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ†˜ Support

๐Ÿ™ Acknowledgments


Made for the developer community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stackoverflow_fastmcp-1.3.0.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stackoverflow_fastmcp-1.3.0-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

Details for the file stackoverflow_fastmcp-1.3.0.tar.gz.

File metadata

  • Download URL: stackoverflow_fastmcp-1.3.0.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stackoverflow_fastmcp-1.3.0.tar.gz
Algorithm Hash digest
SHA256 b0f63a489003ec976c64e54707c77658a178c687a2d398e5e15437dd150da412
MD5 8543c2b3269a5408adac2e0675f71e98
BLAKE2b-256 b438f667a623a455badf132b356cb375f2167c448e1197e85ef9f19572cf6f1e

See more details on using hashes here.

File details

Details for the file stackoverflow_fastmcp-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: stackoverflow_fastmcp-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 26.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stackoverflow_fastmcp-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4a39ddfa0de226d5e90fff94335fc633b1603e717ba3a7dbc9b816a6469c5f3e
MD5 24b5da94200c69085011d09317aab2f7
BLAKE2b-256 2229286e55b6caab6f701aefbd062a8728658ae159e2026d5fe3f2490ca0ff8d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page