grokipedia-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@grokipedia-mcp-server> search Grokipedia for the Fermi paradox and summarize the top result"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
grokipedia-mcp-server
An unofficial, read-only Model Context Protocol (MCP) server for Grokipedia. It lets an MCP client (Claude Desktop, Cursor, VS Code, Grok-compatible agents, etc.) search Grokipedia and read articles, sections and citations over stdio.
Not affiliated with, endorsed by, or supported by xAI or Grokipedia. It uses Grokipedia's public but unofficial, undocumented endpoints, which may change or break at any time.
Tools
Tool | Arguments | Returns |
|
|
|
|
|
|
|
|
|
|
|
|
Sections with subsections. Many articles have level-2 headings (e.g. "History") whose text lives
entirely in level-3 subsections. When the matched section's own body is empty and
include_subsections is true, get_page_section returns the subsections' text, each preceded by its
markdown heading (### Precursors and early inventions ...), still capped at 20,000 characters
(truncated). subsections always lists the nested headings, so you can also request one directly.
Where citations are used. In the article markdown served by /api/page-preview, each inline
citation is an empty-text link to the source URL, e.g. ...telephony equipment.[](https://example.org/src)
(the website renders these as [n] superscripts). get_page_citations matches those markers to the
reference list by exact URL and gives each citation sections: the headings it is cited under
([] if it is never cited inline). With include_context: true it also returns up to 3 short
snippets of the text preceding the marker. number is the reference's 1-based position in the list,
which is the number the website shows. If the page has no usable inline markers (for example when
only the HTML fallback is available), section_mapping is "unavailable" and every sections is
null; mappings are never guessed.
All tools are annotated read-only. Failures come back as a normal result with an "error" key
(for example {"error": "origin error (502)"}); a page that doesn't exist returns "found": false.
Related MCP server: Grokipedia MCP Server
Install
Requires Python 3.11–3.13. The server is installed straight from this GitHub repo (it is not on PyPI).
Option A: uv / uvx (recommended, any OS)
Install uv, then run it without a manual install:
uvx --from git+https://github.com/voidwalkermark-pixel/grokipedia-mcp-server@v0.1.2 grokipedia-mcp-server --versionOr install it as a persistent tool (puts grokipedia-mcp-server on your PATH):
uv tool install git+https://github.com/voidwalkermark-pixel/grokipedia-mcp-server@v0.1.2Option B: pip in a virtual environment
Linux / macOS
python3 -m venv ~/.venvs/grokipedia-mcp
~/.venvs/grokipedia-mcp/bin/pip install "git+https://github.com/voidwalkermark-pixel/grokipedia-mcp-server@v0.1.2"
~/.venvs/grokipedia-mcp/bin/grokipedia-mcp-server --versionWindows (PowerShell)
py -3.13 -m venv "$env:USERPROFILE\.venvs\grokipedia-mcp"
& "$env:USERPROFILE\.venvs\grokipedia-mcp\Scripts\pip.exe" install "git+https://github.com/voidwalkermark-pixel/grokipedia-mcp-server@v0.1.2"
& "$env:USERPROFILE\.venvs\grokipedia-mcp\Scripts\grokipedia-mcp-server.exe" --versionIf the py launcher isn't installed, use python -m venv ... instead (check python --version is 3.11–3.13).
pip install git+... needs Git on PATH. Without Git, install from
the release archive instead:
pip install https://github.com/voidwalkermark-pixel/grokipedia-mcp-server/archive/refs/tags/v0.1.2.zip
Option C: reproducible install with hash-pinned dependencies
git clone --branch v0.1.2 https://github.com/voidwalkermark-pixel/grokipedia-mcp-server
cd grokipedia-mcp-server
python -m venv .venv
# Linux/macOS: .venv/bin/python Windows: .venv\Scripts\python.exe
.venv/bin/python -m pip install --require-hashes -r requirements.lock.txt
.venv/bin/python -m pip install --no-deps .Windows note: with Git for Windows 2.55,
git clone --branch vX.Y.Z ...may print a warning likerefs/tags/vX.Y.Z ... is not a commit!for the annotated release tag. It is harmless (the clone checks out the tagged commit; confirm withgit -C grokipedia-mcp-server describe --tags), but Git writes it to stderr, so PowerShell with$ErrorActionPreference = 'Stop'may treat it as a failure. Run the clone with$ErrorActionPreference = 'Continue'for that command, or check$LASTEXITCODE(0 = success) instead of relying on stderr.
requirements.lock.txt is a cross-platform lock (Linux, macOS, Windows; Python ≥ 3.11) generated with
uv pip compile requirements.txt --universal --python-version 3.11 --generate-hashes.
MCP client configuration (stdio)
Use the absolute path to the installed executable.
Linux / macOS:
{
"mcpServers": {
"grokipedia": {
"command": "/home/you/.venvs/grokipedia-mcp/bin/grokipedia-mcp-server",
"args": []
}
}
}Windows (note the doubled backslashes in JSON):
{
"mcpServers": {
"grokipedia": {
"command": "C:\\Users\\you\\.venvs\\grokipedia-mcp\\Scripts\\grokipedia-mcp-server.exe",
"args": []
}
}
}With uvx instead of a venv:
{
"mcpServers": {
"grokipedia": {
"command": "uvx",
"args": ["--from", "git+https://github.com/voidwalkermark-pixel/grokipedia-mcp-server@v0.1.2", "grokipedia-mcp-server"]
}
}
}python -m grokipedia_mcp_server also works as the command.
Behaviour and limits
Network: only HTTPS GETs to
grokipedia.com, enforced on every request and every redirect hop. Proxy and netrc environment variables are ignored. No credentials, no telemetry, no file writes.Rate limit: at most 1 request/second per server process (shared by all tools).
get_page,get_page_sectionandget_page_citationseach fetch the page (1–2 requests); there is no cache yet.Retries: up to 3 retries on HTTP 429/5xx and transient network errors, with 1 s / 1.5 s / 2.25 s backoff. A
Retry-Afterof up to 10 s is honoured; a longer one fails fast instead of hammering a struggling origin.Timeouts: 10 s connect, 30 s per read, and an overall 50 s budget per tool call.
Page fetching: tries
/api/page-preview?slug=first, then parses the public/page/<slug>HTML. Error pages (e.g. a Cloudflare "502 Bad gateway") are never returned as articles.Size cap: article text is capped at 20,000 characters per call;
truncated: truemarks a cut. Useget_page_sectionto read a specific part of a long article.Outages: when Grokipedia's backend is down you will see errors such as
origin error (502)orfound: false/ "Article not yet written." for pages that do exist. Cloudflare may still serve some cached responses during an outage, so results can be inconsistent between queries.Untrusted content: returned article text is third-party content; MCP clients and models should treat it as data, not instructions.
Development
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --require-hashes -r requirements.lock.txt
pip install --no-deps -e . && pip install pytest
pytest # offline unit tests + stdio test
pytest -m live -s # opt-in live smoke test against grokipedia.comOrigin
The first draft of this server was generated with Grok. It was then reviewed line by line, tested,
and hardened (redirect host checks, slug encoding, error-page handling, truncation, retry and
Retry-After fixes, pinned and hash-locked dependencies) before release. See CHANGELOG.md.
License
MIT © 2026 Voidwalker Mark
Available Tools
4 toolsget_pageBRead-onlyIdempotent
Fetch a Grokipedia page: title, summary, sections, citations, and URL.
Tries the site's page-preview endpoint first, then falls back to parsing the public HTML page. Section text is capped (see "truncated").
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, open-world), so the bar is lower, and the description still adds real operational context: a two-stage retrieval strategy (page-preview endpoint first, then HTML parsing fallback) and the fact that section text is capped and flagged via "truncated". This tells the agent results may be partial and where the cap signal lives. It stops short of explaining failure modes when both retrieval paths fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, followed by the retrieval strategy and cap caveat in two compact sentences. No filler. The trailing parenthetical reference to the output-schema field "truncated" is slightly indirect but functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is not required, and annotations carry the safety profile, which the description sensibly does not repeat. The remaining gap is the sole input: slug's expected format is documented nowhere. Adequate but incomplete for actually invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is exactly one parameter, slug, with 0% schema description coverage, so the description carries the full documentation burden. It never defines the slug's format, whether it is derived from the page URL, or whether it is case-sensitive. "Grokipedia page" only loosely implies the identifier, leaving the agent to infer a required input shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Fetch a Grokipedia page") and enumerates what comes back: title, summary, sections, citations, URL. This makes it distinguishable in kind from get_page_section and get_page_citations, which return subsets. However, it never explicitly contrasts itself with those siblings, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and none of the three siblings are named. An agent must guess that this is the aggregate call versus the narrower get_page_section/get_page_citations. Listing returned fields hints at that relationship but does not state it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_citationsARead-onlyIdempotent
Return the citations / references for a page, with where each is cited.
Each citation has "sections": the headings under which its inline marker appears in the article text (matched by exact URL; [] if never cited inline). When the article text has no usable inline markers (e.g. HTML fallback), "sections" is null and "section_mapping" is "unavailable"; mappings are never guessed.
Args: slug: Page slug. include_context: Also return up to 3 short text snippets preceding each marker.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| include_context | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description correctly invests in what annotations cannot say: 'sections' is matched by exact URL and is [] when never cited inline; when the article has no usable inline markers (HTML fallback) 'sections' is null and 'section_mapping' is 'unavailable', and mappings are never guessed. That edge-case disclosure meaningfully tells the agent when to distrust the mapping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then the return-shape detail, then terse Args. Every sentence carries information, though the mid-paragraph fallback/null explanation is dense and slightly harder to scan than a short bullet would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, and yet the description goes further by explaining the semantics of 'sections' and 'section_mapping'. With two well-narrated parameters and annotations covering safety, an agent has what it needs; only the absence of any routing guidance versus siblings keeps it short of perfect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines include_context semantically ('also return up to 3 short text snippets preceding each marker'), which is more than the schema's bare boolean-with-default, and names the context behavior. The slug parameter gets only 'Page slug', leaving its format still implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return the citations / references for a page') plus the added value ('with where each is cited'). This is clearly distinct from the siblings get_page, get_page_section, and search, so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — you call it to get citations for a known page slug — but the description never states when to prefer it over get_page/get_page_section or any prerequisites (e.g. that the slug must resolve to an existing page). It offers no explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_sectionARead-onlyIdempotent
Return one section by heading (exact case-insensitive match, else heading containing the text).
Args: slug: Page slug, e.g. "Printed_circuit_board". heading: Section heading to find. include_subsections: If the section's own body is empty (a parent heading whose text lives in its subsections), return the subsections' text with their headings (default true). "subsections" always lists the nested headings.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| heading | Yes | ||
| include_subsections | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/safe, so the bar is lower; the description still adds real behavior beyond them — the two-stage heading matching fallback and the conditional include_subsections semantics ('if the section's own body is empty... return subsections' text'). It omits the not-found behavior, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first clause, then a compact Args block. Only the 'subsections always lists the nested headings' aside is slightly under-explained relative to its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, and annotations cover the safety profile. Given three params at 0% schema coverage, the description supplies the needed parameter and matching detail; only the failure case is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does, documenting all three parameters including the non-obvious conditional meaning of include_subsections and its default, plus an example slug. Minor gap: no guidance on heading format edge cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Return one section') and clarifies the lookup semantics versus the whole-page sibling get_page. It doesn't name siblings explicitly, but 'one section' vs a page-level tool is easily inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The matching rule (exact case-insensitive first, else heading containing the text) gives useful context for when this tool will succeed, but it never says when to prefer it over get_page or search, nor what happens on no match.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchBRead-onlyIdempotent
Search Grokipedia full-text index.
Args: query: Search terms. limit: Max results (1-50, default 10). offset: Pagination offset (default 0).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that this hits a 'full-text index' (as opposed to fetching a page), which is useful, but says nothing about ranking, result shape, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose in one line, followed by a compact Args block. Every element earns its place, though the Args formatting is slightly mechanical for a description field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and annotations cover safety. Still missing is any hint of query syntax or how results relate to the sibling get_page tools, which an agent needs to chain a search into a fetch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and largely meets it: it documents all three parameters, adds a range constraint for limit (1-50) that the schema lacks, and restates defaults. It stops short of explaining query syntax (phrases, operators) or result ordering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search Grokipedia full-text index'), which is clear enough for an agent to know it performs a full-text query. However, it never distinguishes itself from the sibling retrieval tools (get_page, get_page_section, get_page_citations), leaving the search-vs-fetch boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. The description says only what the tool does, not when an agent should reach for it over the page-fetching tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.2- Changed
get_page_citations1 field changed- added
Input schema / properties / include_contextAdded value: +{ + "default": false, + "title": "Include Context", + "type": "boolean" +}
- Changed
get_page_section1 field changed- added
Input schema / properties / include_subsectionsAdded value: +{ + "default": true, + "title": "Include Subsections", + "type": "boolean" +}
4 tool updates
v0.1.1- First observed
get_page - First observed
get_page_citations - First observed
get_page_section - First observed
search
TDQS
Scored across 4 tools
The tools mostly target distinct needs: search for discovery, get_page for full page retrieval, get_page_section for focused section content, and get_page_citations for reference details. However, get_page already includes sections and citations, so there is some overlap and an agent might occasionally wonder whether the specialized tools are needed.
Three tools follow a clear get_page_* pattern (get_page, get_page_section, get_page_citations), while search is a bare verb. This is a minor deviation from an otherwise predictable convention and remains readable.
Four tools is well-scoped for a read-only reference server: search plus full-page, section, and citation retrieval. Each tool has a clear role and none appear redundant enough to inflate the count.
The core read workflows for a wiki-like source are covered: discovery via search, full page content, section-level extraction, and citation/reference mapping. No obvious lifecycle gaps exist for this read-only domain.
Maintenance
Related MCP Connectors
MCP gateway for donhuffines.com: articles, search and full text. Read-only, no auth.
Public read-only MCP access to digital learning concepts, semantic relationships, and citations.
Read-only MCP for the Eco game wiki: search, Markdown pages, and wiki_* lookups. No keys, no writes.
Wikipedia MCP — wraps Wikipedia REST API (free, no auth)
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables searching and retrieving content from Grokipedia, including article content, citations, related pages, and section extraction with built-in research workflows.78MIT
- AlicenseAqualityDmaintenanceEnables searching and retrieving articles, citations, and structured content from Grokipedia for research and information retrieval. It provides specialized tools for section extraction, related page discovery, and filtered search results.7MIT
- AlicenseAqualityDmaintenanceEnables searching and retrieving content from Grokipedia, with tools for page lookup, citations, sections, and related pages.7MIT
- AlicenseNot gradedqualityDmaintenanceProvides structured access to Wikipedia content including search, summaries, images, links, and more via MCP tools.6Apache 2.0