Search Stack Exchange questions, fetch Q&A threads as markdown, look up tag FAQs and user profiles.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Fetch the highest-voted answered questions for a tag on a Stack Exchange site — the canonical "best answers in X" list. Returns a question list without bodies; use stackexchange_get_thread to read the full body and answers for any result. Results past the pageSize cap are reachable with the `page` parameter. Use this tool to find the authoritative community resources on a topic (e.g. tag "javascript" on stackoverflow). Use stackexchange_search_questions for free-text search rather than tag-based browsing.
Tag to look up (e.g. "python", "javascript", "docker"). Must match exactly.
Page of results to return, 1-based (default 1). Page 2 with pageSize 10 returns results 11–20. Each page is a separate upstream call and costs one API quota unit, which matters on the keyless 300/day tier. Without STACKEXCHANGE_API_KEY, Stack Exchange refuses any page above 25.
Stack Exchange site — use the api_site_parameter value (e.g. "stackoverflow", "superuser"). Defaults to "stackoverflow". Call stackexchange_list_sites to discover valid values.
Number of results to return (1–30, default 10).
Fetch the highest-voted answered questions for a tag on a Stack Exchange site — the canonical "best answers in X" list. Returns a question list without bodies; use stackexchange_get_thread to read the full body and answers for any result. Results past the pageSize cap are reachable with the `page` parameter. Use this tool to find the authoritative community resources on a topic (e.g. tag "javascript" on stackoverflow). Use stackexchange_search_questions for free-text search rather than tag-based browsing.
| Argument | Type | Description |
|---|---|---|
| tag* | string | Tag to look up (e.g. "python", "javascript", "docker"). Must match exactly. |
| page | integer | Page of results to return, 1-based (default 1). Page 2 with pageSize 10 returns results 11–20. Each page is a separate upstream call and costs one API quota unit, which matters on the keyless 300/day tier. Without STACKEXCHANGE_API_KEY, Stack Exchange refuses any page above 25. |
| site | string | Stack Exchange site — use the api_site_parameter value (e.g. "stackoverflow", "superuser"). Defaults to "stackoverflow". Call stackexchange_list_sites to discover valid values. |
| pageSize | integer | Number of results to return (1–30, default 10). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"tag"
],
"properties": {
"tag": {
"type": "string",
"description": "Tag to look up (e.g. \"python\", \"javascript\", \"docker\"). Must match exactly."
},
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page of results to return, 1-based (default 1). Page 2 with pageSize 10 returns results 11–20. Each page is a separate upstream call and costs one API quota unit, which matters on the keyless 300/day tier. Without STACKEXCHANGE_API_KEY, Stack Exchange refuses any page above 25."
},
"site": {
"type": "string",
"default": "stackoverflow",
"description": "Stack Exchange site — use the api_site_parameter value (e.g. \"stackoverflow\", \"superuser\"). Defaults to \"stackoverflow\". Call stackexchange_list_sites to discover valid values."
},
"pageSize": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Number of results to return (1–30, default 10)."
}
},
"additionalProperties": false
}Fetch a complete Q&A thread — question body and all answers, accepted answer first then sorted by score, rendered as clean markdown with fenced code blocks. Accepts an integer question ID or a full Stack Exchange question URL (e.g. "https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster" or "11227809"). HTML is normalized to markdown automatically; attribution (author + link) included per CC BY-SA 4.0. Get question IDs from stackexchange_search_questions or stackexchange_get_tag_faq.
| Argument | Type | Description |
|---|---|---|
| site | string | Stack Exchange site — use the api_site_parameter value (e.g. "stackoverflow", "superuser"). Defaults to "stackoverflow". Must match the site where the question lives. Call stackexchange_list_sites to discover valid values. |
| maxAnswers | integer | Maximum number of answers to include (1–100, default 10). Answers are sorted: accepted first, then by score. |
| includeComments | boolean | Fetch the comment thread under the question and under every returned answer (default false). Comments are where a stale answer usually gets corrected ("this breaks on v3", "use X instead now"), so set this when the answer's continued accuracy matters. Costs 2 extra API calls against the daily quota regardless of how many answers are returned. |
| questionIdOrUrl* | string | Numeric question ID (e.g. "11227809") or a full Stack Exchange question URL (e.g. "https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster"). The integer immediately following /questions/ is extracted from URLs. |
Fetch a Stack Exchange user profile by numeric user ID: reputation, badge counts, answer and question counts, account and last-access dates, and top tags by answer score. Useful for credibility context on an answer author — pass the authorUserId from any question or answer in stackexchange_get_thread output. Returns profile fields plus up to 10 top tags by answer score.
| Argument | Type | Description |
|---|---|---|
| site | string | Stack Exchange site — use the api_site_parameter value (e.g. "stackoverflow", "superuser"). Defaults to "stackoverflow". Call stackexchange_list_sites to discover valid values. |
| userId* | integer | Numeric user ID (at most 2147483647) — use the authorUserId field from a question or answer in stackexchange_get_thread output. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"userId"
],
"properties": {
"site": {
"type": "string",
"default": "stackoverflow",
"description": "Stack Exchange site — use the api_site_parameter value (e.g. \"stackoverflow\", \"superuser\"). Defaults to \"stackoverflow\". Call stackexchange_list_sites to discover valid values."
},
"userId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric user ID (at most 2147483647) — use the authorUserId field from a question or answer in stackexchange_get_thread output."
}
},
"additionalProperties": false
}Enumerate all sites in the Stack Exchange network — name, api_site_parameter, audience, and URL. The api_site_parameter value is what other tools accept as the `site` input (e.g. "stackoverflow", "superuser", "serverfault"). Results are fetched live and optionally filtered by name. Use this tool to discover valid site parameters before calling other stackexchange_* tools.
| Argument | Type | Description |
|---|---|---|
| filter | string | Optional case-insensitive name filter — returns only sites whose name contains all provided tokens. Omit to return all sites. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"filter": {
"type": "string",
"description": "Optional case-insensitive name filter — returns only sites whose name contains all provided tokens. Omit to return all sites."
}
},
"additionalProperties": false
}Search questions across a Stack Exchange site. Returns ranked questions with title, score, answer count, accepted status, tags, ask and last-activity dates, and a short excerpt of the question body — not the full body. Results supply question_id values for stackexchange_get_thread, which fetches the full question body and all answers. Results past the pageSize cap are reachable with the `page` parameter. Use the `site` parameter to target a specific community (e.g. "stackoverflow", "superuser", "unix"); call stackexchange_list_sites to discover valid site values.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page of results to return, 1-based (default 1). Page 2 with pageSize 10 returns results 11–20. Each page is a separate upstream call and costs one API quota unit, which matters on the keyless 300/day tier. Without STACKEXCHANGE_API_KEY, Stack Exchange refuses any page above 25. |
| site | string | Stack Exchange site to search — use the api_site_parameter value (e.g. "stackoverflow", "superuser", "serverfault"). Defaults to "stackoverflow". Call stackexchange_list_sites to discover valid values. |
| sort | string | Result ordering: "relevance" (default, best match), "votes" (highest score first), "activity" (most recently active), "newest" (most recently created). |
| tags | array | Filter results to questions with all specified tags. |
| query* | string | Full-text search query (e.g. "python async generator send value"). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"questionIdOrUrl"
],
"properties": {
"site": {
"type": "string",
"default": "stackoverflow",
"description": "Stack Exchange site — use the api_site_parameter value (e.g. \"stackoverflow\", \"superuser\"). Defaults to \"stackoverflow\". Must match the site where the question lives. Call stackexchange_list_sites to discover valid values."
},
"maxAnswers": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of answers to include (1–100, default 10). Answers are sorted: accepted first, then by score."
},
"includeComments": {
"type": "boolean",
"default": false,
"description": "Fetch the comment thread under the question and under every returned answer (default false). Comments are where a stale answer usually gets corrected (\"this breaks on v3\", \"use X instead now\"), so set this when the answer's continued accuracy matters. Costs 2 extra API calls against the daily quota regardless of how many answers are returned."
},
"questionIdOrUrl": {
"type": "string",
"description": "Numeric question ID (e.g. \"11227809\") or a full Stack Exchange question URL (e.g. \"https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster\"). The integer immediately following /questions/ is extracted from URLs."
}
},
"additionalProperties": false
}| minScore | integer | Minimum question score — excludes questions with lower scores. Setting minScore orders results by score (votes), which may differ from the requested sort. |
| pageSize | integer | Number of results to return (1–30, default 10). |
| acceptedOnly | boolean | When true, return only questions that have an accepted answer. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page of results to return, 1-based (default 1). Page 2 with pageSize 10 returns results 11–20. Each page is a separate upstream call and costs one API quota unit, which matters on the keyless 300/day tier. Without STACKEXCHANGE_API_KEY, Stack Exchange refuses any page above 25."
},
"site": {
"type": "string",
"default": "stackoverflow",
"description": "Stack Exchange site to search — use the api_site_parameter value (e.g. \"stackoverflow\", \"superuser\", \"serverfault\"). Defaults to \"stackoverflow\". Call stackexchange_list_sites to discover valid values."
},
"sort": {
"enum": [
"relevance",
"votes",
"activity",
"newest"
],
"type": "string",
"default": "relevance",
"description": "Result ordering: \"relevance\" (default, best match), \"votes\" (highest score first), \"activity\" (most recently active), \"newest\" (most recently created)."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"description": "A single tag to filter by (e.g. \"python\", \"async\")."
},
"description": "Filter results to questions with all specified tags."
},
"query": {
"type": "string",
"description": "Full-text search query (e.g. \"python async generator send value\")."
},
"minScore": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Minimum question score — excludes questions with lower scores. Setting minScore orders results by score (votes), which may differ from the requested sort."
},
"pageSize": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Number of results to return (1–30, default 10)."
},
"acceptedOnly": {
"type": "boolean",
"description": "When true, return only questions that have an accepted answer."
}
},
"additionalProperties": false
}