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.2.8.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.2.8-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stackoverflow_fastmcp-1.2.8.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.2.8.tar.gz
Algorithm Hash digest
SHA256 da7644431fe3eda5b302be786960268663310c4849b3eb2713fd902c1ee32612
MD5 1e098e57d62b0392928c2c1f817c0cdb
BLAKE2b-256 5433cb89a9bf099e0eff76002d173831e1916ae447b4182f96f05cb576c49057

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stackoverflow_fastmcp-1.2.8-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.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f4091976eb00f86b64c4a3e98c3d3e399a1312642fc707a483536d5ee928454a
MD5 af9dfe9ef63f1d9f33d5b417ec2e6408
BLAKE2b-256 c27f81065d661cf8178dff6de76728812ac2b650b45a9eed0fbbdb6bd431c5d7

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