1.2.5 โ€ข Published 6 months ago

@notalk-tech/stackoverflow-mcp v1.2.5

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

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. This package serves as an NPX-compatible wrapper for the Python-based StackOverflow MCP server.

Quick Start

Using NPX (Recommended)

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

# Skip installation prompts (useful for automation)
npx -y @notalk/stackoverflow-mcp

# Or install globally
npm install -g @notalk/stackoverflow-mcp
stackoverflow-mcp

Using Python Module Directly

# If you have the Python package installed
python -m stackoverflow_mcp

# Using uv (recommended for Python development)
uv run python -m stackoverflow_mcp

๐Ÿ“‹ Prerequisites

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

The NPX wrapper will automatically:

  • Detect your Python installation
  • Install the required Python package (stackoverflow-mcp)
  • Handle environment setup and configuration

Installation

Option 1: NPX (No Installation)

npx @notalk/stackoverflow-mcp --help

Option 2: Global NPM Installation

npm install -g @notalk/stackoverflow-mcp
stackoverflow-mcp --help

Option 3: Local Development

git clone https://github.com/NoTalkTech/stackoverflow-mcp.git
cd stackoverflow-mcp
npm install
node cli.js --help

๐ŸŽฏ Features

  • ๐Ÿ” Question Search: Search StackOverflow questions by keywords
  • ๐Ÿ“– Question Details: Get detailed question content, answers, and metadata
  • ๐Ÿท๏ธ Tag-based Search: Find questions by programming language tags
  • โšก Rate Limit Management: Automatic detection and handling of API limits
  • ๐Ÿ” API Authentication: Support for StackOverflow API keys
  • ๐Ÿš€ Auto-deployment: NPX-compatible with automatic Python environment setup
  • ๐Ÿ“ Smart Configuration: Auto-discovery of config files and working directories
  • ๐Ÿ”ง Development Mode: Enhanced logging and debugging features
  • โšก FastMCP Implementation: Simplified, elegant server using FastMCP framework (only implementation)

Usage

Basic Usage

# Start the MCP server with default settings
npx @notalk/stackoverflow-mcp

# Auto-confirm installation (useful for scripts/CI)
npx -y @notalk/stackoverflow-mcp

# Start on a specific port
npx @notalk/stackoverflow-mcp --port 8080

# Development mode with debug logging
npx @notalk/stackoverflow-mcp --dev --log-level DEBUG

# Use custom configuration file
npx @notalk/stackoverflow-mcp --config-file ./my-config.json

Python Development with uv

For Python development, we recommend using uv for faster dependency management:

# Install dependencies with uv
uv sync

# Run the server with uv
uv run python -m stackoverflow_mcp

# Development mode with uv
uv run python -m stackoverflow_mcp --log-level DEBUG

FastMCP Benefits:

  • ๐Ÿ”ฅ Simplified Code: Clean, maintainable implementation
  • ๐ŸŽฏ Decorator-based: Clean tool registration with @mcp.tool()
  • ๐Ÿš€ Auto-schema: Type hints automatically generate schemas
  • ๐Ÿ›ก๏ธ Built-in Error Handling: Consistent error responses
  • ๐Ÿ“ฆ Better Separation: Clean architecture with focused responsibilities

Configuration

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

{
  "host": "localhost",
  "port": 3000,
  "log_level": "INFO",
  "stackoverflow_api_key": "your_api_key_here"
}

Command Line Options

Options:
  --host TEXT                     Host to bind the server to
  --port INTEGER                  Port to bind the server to (auto-detect if not specified)
  --log-level [DEBUG|INFO|WARNING|ERROR]
                                  Logging level
  --config-file PATH              Path to configuration file (auto-discover if not specified)
  --working-dir DIRECTORY         Working directory (auto-detect if not specified)
  --auto-port / --no-auto-port    Automatically find an available port if specified port is in use
  --dev / --prod                  Run in development mode (more verbose logging, auto-reload)
  --health-check / --no-health-check
                                  Enable startup health checks
  --version                       Show the version and exit.
  --help                          Show this message and exit.

๐Ÿ”ง Configuration Files

The server automatically discovers configuration files in the following order:

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

Example Configuration

{
  "host": "localhost",
  "port": 3000,
  "log_level": "INFO",
  "stackoverflow_api_key": "your_optional_api_key",
  "max_requests_per_minute": 30,
  "enable_caching": true
}

๐ŸŒ API Endpoints

Once running, the MCP server provides the following tools:

  • search_questions: Search StackOverflow questions by keywords
  • get_question_details: Get detailed information about a specific question
  • search_by_tags: Find questions filtered by programming language tags
  • get_user_info: Get information about StackOverflow users

๐Ÿงช Testing

# Test the npm package
npm test

# Test npm packaging
npm run test:npm

# Test global installation
npm run test:install

# Test Python module directly
python -m pytest tests/ -v

๐Ÿš€ Development

Local Development Setup

# Clone the repository
git clone https://github.com/NoTalkTech/stackoverflow-mcp.git
cd stackoverflow-mcp

# Install Node.js dependencies
npm install

# Install Python dependencies
pip install -e .

# Run in development mode
npm start -- --dev

Project Structure

@notalk/stackoverflow-mcp/
โ”œโ”€โ”€ cli.js                          # NPX wrapper (Node.js)
โ”œโ”€โ”€ package.json                    # NPM 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
โ”‚   โ””โ”€โ”€ stackoverflow_client.py     # StackOverflow API client
โ”œโ”€โ”€ tests/                          # Test files
โ””โ”€โ”€ README.md                       # This file

๐Ÿ“ฆ Publishing

Semantic Versioning

This package follows Semantic Versioning:

  • MAJOR: Breaking changes
  • MINOR: New features (backward compatible)
  • PATCH: Bug fixes (backward compatible)

Release Process

# Update version
npm version patch|minor|major

# Publish to npm
npm publish

# Create GitHub release
git push --tags

๐Ÿค 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 with โค๏ธ for the developer community

1.2.5

6 months ago

1.2.3

6 months ago

1.2.2

6 months ago

1.2.1

6 months ago

1.2.0

6 months ago

1.1.4

6 months ago

1.1.3

6 months ago

1.1.2

6 months ago

1.1.1

6 months ago

1.0.20

6 months ago

1.1.0

6 months ago

1.0.19

6 months ago

1.0.18

6 months ago

1.0.17

6 months ago

1.0.16

6 months ago

1.0.15

6 months ago

1.0.14

6 months ago

1.0.13

6 months ago

1.0.12

6 months ago

1.0.11

6 months ago

1.0.10

6 months ago

1.0.9

6 months ago

1.0.8

6 months ago

1.0.7

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.4

6 months ago

1.0.3

6 months ago

1.0.2

6 months ago

1.0.1

6 months ago

1.0.0

6 months ago

0.1.2

6 months ago

0.1.0

6 months ago