A Model Context Protocol server for querying Stack Overflow. This server helps AI models find solutions to programming problems by searching Stack Overflow questions and answers.
- Search by error messages
- Search by programming language and technology tags
- Stack trace analysis
- Filter results by score/votes
- Include question and answer comments
- Output in JSON or Markdown format
You can run the server directly using npx:
npx -y @gscalzo/stackoverflow-mcp
Or install it globally:
npm install -g @gscalzo/stackoverflow-mcp
Create or modify your MCP settings file:
- For Claude.app:
~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
- For Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
Add the following configuration:
{
"mcpServers": {
"stackoverflow": {
"command": "npx",
"args": ["-y", "@gscalzo/stackoverflow-mcp"],
"env": {
"STACKOVERFLOW_API_KEY": "your-api-key-optional"
},
"disabled": false,
"autoApprove": []
}
}
}
The server works without authentication but has rate limits. To increase the rate limits:
- Get an API key from Stack Apps
- Add the API key to your MCP settings configuration
The server provides three main tools:
Searches Stack Overflow for error-related questions:
interface SearchByErrorInput {
errorMessage: string; // Required: Error message to search for
language?: string; // Optional: Programming language
technologies?: string[]; // Optional: Related technologies
minScore?: number; // Optional: Minimum score threshold
includeComments?: boolean; // Optional: Include comments in results
responseFormat?: "json" | "markdown"; // Optional: Response format
limit?: number; // Optional: Maximum number of results
}
Searches Stack Overflow questions by tags:
interface SearchByTagsInput {
tags: string[]; // Required: Tags to search for
minScore?: number; // Optional: Minimum score threshold
includeComments?: boolean; // Optional: Include comments in results
responseFormat?: "json" | "markdown"; // Optional: Response format
limit?: number; // Optional: Maximum number of results
}
Analyzes stack traces to find relevant solutions:
interface StackTraceInput {
stackTrace: string; // Required: Stack trace to analyze
language: string; // Required: Programming language
includeComments?: boolean; // Optional: Include comments in results
responseFormat?: "json" | "markdown"; // Optional: Response format
limit?: number; // Optional: Maximum number of results
}
{
"name": "search_by_error",
"arguments": {
"errorMessage": "TypeError: Cannot read property 'length' of undefined",
"language": "javascript",
"technologies": ["react"],
"minScore": 5,
"includeComments": true,
"responseFormat": "markdown",
"limit": 3
}
}
{
"name": "search_by_tags",
"arguments": {
"tags": ["python", "pandas", "dataframe"],
"minScore": 10,
"includeComments": true,
"responseFormat": "json",
"limit": 5
}
}
{
"name": "analyze_stack_trace",
"arguments": {
"stackTrace": "Error: ENOENT: no such file or directory, open 'config.json'\n at Object.openSync (fs.js:476:3)\n at Object.readFileSync (fs.js:377:35)",
"language": "javascript",
"includeComments": true,
"responseFormat": "markdown",
"limit": 3
}
}
Responses include:
- Question details (title, body, score, tags, etc.)
- Answers (sorted by votes)
- Optional comments for both questions and answers
- Links to the original Stack Overflow posts
The markdown format provides a nicely formatted view with:
- Question title and score
- Question body
- Comments (if requested)
- Answers with acceptance status and score
- Answer comments (if requested)
- Links to the original posts
- Build in watch mode:
npm run watch
- Run tests:
npm test
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT