{"name":"io.github.ProfessionalWiki/mediawiki-mcp-server","slug":"professionalwiki-mediawiki-mcp-server","title":"MediaWiki MCP Server","description":"MCP server enabling AI clients to interact with any MediaWiki wiki through standard tools","url":"https://mcp.market/server/professionalwiki-mediawiki-mcp-server","rating":null,"grade":"A","score":94,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":49,"stars":131,"forks":38,"downloads_week":539,"last_push_at":"2026-09-17T12:33:24.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ProfessionalWiki/MediaWiki-MCP-Server","website":null,"version":"0.18.0","remotes":[],"packages":[{"registryType":"mcpb","identifier":"https://github.com/ProfessionalWiki/MediaWiki-MCP-Server/releases/download/v0.18.0/MediaWiki-MCP-Server.mcpb","fileSha256":"6a40dda408643e959cdcb7140d55bb615ad61f08f9fe513439e5dae78a4b1f29","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to your configuration file","format":"filepath","default":"config.json","name":"CONFIG"},{"description":"Set to 'true' to allow HTTP startup when config.json has static credentials. Otherwise the server refuses to start, preventing silent shared-identity fallback for unauthenticated requests.","name":"MCP_ALLOW_STATIC_FALLBACK"},{"description":"Byte cap for the content bodies and result blocks tools return (wikitext, rendered HTML, diffs, statement and row listings). An oversized response is truncated with a trailing marker describing what was left out.","format":"number","default":"75000","name":"MCP_CONTENT_MAX_BYTES"},{"description":"Hard cap on the base64-encoded size of a get-file-data response. A transport/safety backstop; callers tune actual size with the tool's width parameter. Over-cap responses error rather than truncate.","format":"number","default":"1000000","name":"MCP_FILE_DATA_MAX_BYTES"},{"description":"Minimum severity for logger output (stderr telemetry and sendLoggingMessage broadcast). Invalid values fail loudly on first log call.","default":"debug","choices":["debug","info","notice","warning","error","critical","alert","emergency","silent"],"name":"MCP_LOG_LEVEL"},{"description":"Maximum HTTP request body size on the StreamableHTTP transport. Accepts size strings like 1mb or 512kb.","default":"1mb","name":"MCP_MAX_REQUEST_BODY"},{"description":"Set to 'true' to expose Prometheus metrics at GET /metrics on the HTTP transport. Has no effect on the stdio transport.","name":"MCP_METRICS"},{"description":"Additional allowed redirect URIs for hosted-proxy client registration: comma-separated exact URIs (which must include a host) and https prefix patterns ending in /*. Loopback, claude.ai, and verified first-party clients (ChatGPT, Cursor, VS Code) are always allowed; unset means no additional clients.","name":"MCP_OAUTH_ALLOWED_REDIRECTS"},{"description":"Comma-separated additional client_id document hosts trusted for CIMD (bare host or host:port). Verified first-party hosts are always trusted.","name":"MCP_OAUTH_CIMD_ALLOWED_HOSTS"},{"description":"Override the default OAuth credentials store path. Default: ~/.config/mediawiki-mcp/credentials.json on Linux/macOS, %APPDATA%\\mediawiki-mcp\\credentials.json on Windows.","format":"filepath","name":"MCP_OAUTH_CREDENTIALS_FILE"},{"description":"Set to '1' to skip launching a browser during the OAuth dance and log the auth URL to stderr instead. Useful in headless environments and CI.","name":"MCP_OAUTH_NO_BROWSER"},{"description":"Path to the hosted OAuth proxy's encrypted state file, which lets sign-ins survive restarts. Default: proxy-store.enc under the mediawiki-mcp config dir; /app/data/proxy-store.enc in the Docker image.","format":"filepath","name":"MCP_OAUTH_PROXY_STORE_FILE"},{"description":"Override the request-derived public URL used in the protected-resource discovery doc and WWW-Authenticate header. Set this when running behind a proxy that rewrites the request Host.","name":"MCP_PUBLIC_URL"},{"description":"Maximum milliseconds to wait for in-flight /mcp calls to drain on SIGTERM/SIGINT before exiting. Capped at 600000.","format":"number","default":"10000","name":"MCP_SHUTDOWN_GRACE_MS"},{"description":"Type of MCP server transport","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Memory cap on the server-side fetch used by upload-file-from-url and update-file-from-url. Files larger than this are routed to the wiki's own copy-upload instead of being buffered by the server. Guards this server's memory, not the wiki's $wgMaxUploadSize.","format":"number","default":"104857600","name":"MCP_UPLOAD_MAX_BYTES"},{"description":"Port used for StreamableHTTP transport","format":"number","default":"3000","name":"PORT"}]},{"registryType":"npm","identifier":"@professional-wiki/mediawiki-mcp-server","version":"0.18.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to your configuration file","format":"filepath","default":"config.json","name":"CONFIG"},{"description":"Set to 'true' to allow HTTP startup when config.json has static credentials. Otherwise the server refuses to start, preventing silent shared-identity fallback for unauthenticated requests.","name":"MCP_ALLOW_STATIC_FALLBACK"},{"description":"Byte cap for the content bodies and result blocks tools return (wikitext, rendered HTML, diffs, statement and row listings). An oversized response is truncated with a trailing marker describing what was left out.","format":"number","default":"75000","name":"MCP_CONTENT_MAX_BYTES"},{"description":"Hard cap on the base64-encoded size of a get-file-data response. A transport/safety backstop; callers tune actual size with the tool's width parameter. Over-cap responses error rather than truncate.","format":"number","default":"1000000","name":"MCP_FILE_DATA_MAX_BYTES"},{"description":"Minimum severity for logger output (stderr telemetry and sendLoggingMessage broadcast). Invalid values fail loudly on first log call.","default":"debug","choices":["debug","info","notice","warning","error","critical","alert","emergency","silent"],"name":"MCP_LOG_LEVEL"},{"description":"Maximum HTTP request body size on the StreamableHTTP transport. Accepts size strings like 1mb or 512kb.","default":"1mb","name":"MCP_MAX_REQUEST_BODY"},{"description":"Set to 'true' to expose Prometheus metrics at GET /metrics on the HTTP transport. Has no effect on the stdio transport.","name":"MCP_METRICS"},{"description":"Additional allowed redirect URIs for hosted-proxy client registration: comma-separated exact URIs (which must include a host) and https prefix patterns ending in /*. Loopback, claude.ai, and verified first-party clients (ChatGPT, Cursor, VS Code) are always allowed; unset means no additional clients.","name":"MCP_OAUTH_ALLOWED_REDIRECTS"},{"description":"Comma-separated additional client_id document hosts trusted for CIMD (bare host or host:port). Verified first-party hosts are always trusted.","name":"MCP_OAUTH_CIMD_ALLOWED_HOSTS"},{"description":"Override the default OAuth credentials store path. Default: ~/.config/mediawiki-mcp/credentials.json on Linux/macOS, %APPDATA%\\mediawiki-mcp\\credentials.json on Windows.","format":"filepath","name":"MCP_OAUTH_CREDENTIALS_FILE"},{"description":"Set to '1' to skip launching a browser during the OAuth dance and log the auth URL to stderr instead. Useful in headless environments and CI.","name":"MCP_OAUTH_NO_BROWSER"},{"description":"Path to the hosted OAuth proxy's encrypted state file, which lets sign-ins survive restarts. Default: proxy-store.enc under the mediawiki-mcp config dir; /app/data/proxy-store.enc in the Docker image.","format":"filepath","name":"MCP_OAUTH_PROXY_STORE_FILE"},{"description":"Override the request-derived public URL used in the protected-resource discovery doc and WWW-Authenticate header. Set this when running behind a proxy that rewrites the request Host.","name":"MCP_PUBLIC_URL"},{"description":"Maximum milliseconds to wait for in-flight /mcp calls to drain on SIGTERM/SIGINT before exiting. Capped at 600000.","format":"number","default":"10000","name":"MCP_SHUTDOWN_GRACE_MS"},{"description":"Type of MCP server transport","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Memory cap on the server-side fetch used by upload-file-from-url and update-file-from-url. Files larger than this are routed to the wiki's own copy-upload instead of being buffered by the server. Guards this server's memory, not the wiki's $wgMaxUploadSize.","format":"number","default":"104857600","name":"MCP_UPLOAD_MAX_BYTES"},{"description":"Port used for StreamableHTTP transport","format":"number","default":"3000","name":"PORT"}]}],"tools":[{"name":"bucket-query","description":"Runs a Bucket extension query against the targeted wiki. One row per match. Enabled only when the wiki has Bucket installed. Ground bucket and field names first: schemas are JSON pages in the `Bucket:` namespace (id 9592). The `bucket(...)` argument is the page title lowercased with spaces replaced by underscores — page `Bucket:Combat achievement` is queried as `bucket(\"combat_achievement\")`. Disc","write_action":false,"price_micros":0,"input_schema":null},{"name":"cargo-describe-table","description":"Returns the field schema for a Cargo table on the targeted wiki: each field's name, type (String/Integer/Boolean/Date/Page/Coordinates/etc.), and — for list-typed fields — its delimiter. Enabled only when the wiki has Cargo installed. Use before constructing a cargo-query so the where clause uses the right operators (HOLDS / HOLDS LIKE for list fields, MATCHES for Searchtext, NEAR for Coordinates)","write_action":false,"price_micros":0,"input_schema":null},{"name":"cargo-list-tables","description":"Returns the names of all Cargo tables defined on the targeted wiki, including Cargo's built-in system tables (underscore-prefixed: `_pageData`, `_fileData`, etc.). Enabled only when the wiki has Cargo installed. Use cargo-describe-table to inspect a table's fields and types before constructing a cargo-query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"cargo-query","description":"Returns rows from one or more Cargo tables on the targeted wiki, matching a SQL-style filter. Supports WHERE, JOIN ON, GROUP BY, HAVING, and ORDER BY clauses. Enabled only when the wiki has Cargo installed. Use cargo-list-tables to discover table names and cargo-describe-table to inspect field types before constructing a query — field types determine which operators apply (HOLDS / HOLDS LIKE for l","write_action":false,"price_micros":0,"input_schema":null},{"name":"compare-pages","description":"Returns the changes between two versions of a wiki page as a compact text diff. Each side accepts a revision ID, page title (latest revision), or supplied wikitext; text-vs-text is rejected. Only the changes are returned over the wire. For the full text of both sides, fetch with get-page instead. If a title or revision ID does not exist, an error is returned. Set includeDiff=false for a cheap chan","write_action":false,"price_micros":0,"input_schema":null},{"name":"create-page","description":"Creates a new wiki page with the provided content and returns the new page's title, page ID, and first revision ID. Fails if a page with the given title already exists; for existing pages, use update-page. The optional contentModel parameter selects a non-default content format (e.g. javascript, css); when omitted, MediaWiki picks the default for the title's namespace. For building up a large page","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete-page","description":"Removes a wiki page from public view and returns the deleted title. This is a soft delete: the page and its revision history remain in the database and can be restored with undelete-page until an administrator purges them. Fails if the page does not exist or the authenticated user lacks the delete permission.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get-category-members","description":"Lists members of a category, returning each member's page ID, namespace ID, and wiki page title. Optionally filter by member type (page, file, subcat) or by namespace ID — filters apply server-side before the cap. Returns up to 500 members per call; paginate with continueFrom (opaque cursor echoed from the previous response). A member's type is omitted when it is an ordinary page (present only for","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-file","description":"Returns metadata for a file (uploader, timestamp, size, MIME type) along with download URLs for the thumbnail, preview, and original. The File: prefix is added automatically if omitted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-file-data","description":"Fetches a wiki file server-side and returns the image inline as a content block, for clients that cannot reach the wiki host (sandboxed or network-restricted) and need the image sent to the model for visual analysis. Returns a scaled rendition sized by width. Files MediaWiki can rasterize (images, SVG, PDF, DjVu) come back as an image; other types (audio, video, arbitrary binaries) error — for tho","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-links-here","description":"Lists pages that reference a target wiki page, returning each referencing page's title, page ID, namespace ID, and whether it is a redirect. The type parameter selects the relationship — wikilinks (pages that link to the target), transclusions (pages that embed it, such as a template), or fileusage (pages that display it, for File pages) — one relationship per call. With expandRedirects, a referen","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-page","description":"Returns a single wiki page (wikitext source, rendered HTML, or metadata only). If the title does not exist, an error is returned. Use metadata=true to retrieve the revision ID (for edit-conflict detection), page size, and section outline. Set content=\"none\" to fetch only metadata. Large content is truncated at 75000 bytes by default, with a marker reporting how much of it was returned and which se","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-page-history","description":"Returns revision metadata (revision ID, timestamp, user, comment, size, minor flag) for a wiki page, in segments of … revisions, newest first. Paginate with olderThan or newerThan (mutually exclusive). If the title does not exist, an error is returned. Boolean flags appear only when true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-pages","description":"Returns multiple wiki pages in one call (wikitext source or metadata only). Suited to reading a cluster of related pages, diffing a page family, or syncing pages to local storage. Accepts up to … titles; missing pages are reported inline (not as errors). One byte budget covers the whole response, 75000 bytes by default: pages come back whole in the order asked for until it is spent, and the pages ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-recent-changes","description":"Returns recent change events, newest first, in segments of 50. Defaults to edits and page creations; set types to include log actions, categorizations, or external changes. Each row includes title, timestamp, user, revision IDs, size change, flags (minor/bot/new/anon), tags, and change type. Filter by timestamp window, namespaces, user, change tag, or hide flags (hideBots/hideMinor/hideAnon/hideRe","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-revision","description":"Returns a specific historical revision of a wiki page by revision ID (wikitext source, rendered HTML, or metadata only). If the revision ID does not exist, an error is returned. Content is truncated at 75000 bytes by default; a past revision has no narrower read, so for a large one use compare-pages to see what changed. For the latest revision plus metadata, use get-page with metadata=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-site-info","description":"Returns key facts about the targeted wiki from its MediaWiki siteinfo: general settings (sitename, MediaWiki version, content language, page-title case-sensitivity, live read-only state, and maxarticlesize in bytes), the namespace map with localized names and aliases, the list of installed extension names, and the content license. Set includeStatistics to also return page, article, edit, image, us","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-wikis","description":"Lists every configured wiki: its key (pass as the `wiki` argument to other tools), sitename, server URL, whether it is read-only or the default, whether it is currently reachable, and which extension-gated tools work on it. Use to discover the configured wikis, their keys, and which extension tools each supports.","write_action":false,"price_micros":0,"input_schema":null},{"name":"move-page","description":"Renames a wiki page, moving it — and by default its talk page — to a new title, and returns the old and new titles plus whether a redirect was left behind. By default leaves a redirect at the old title; set leaveRedirect=false to suppress it (requires the suppressredirect right, otherwise the redirect is left regardless). Fails if the source page does not exist, if the target title already exists ","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-create-subject","description":"Creates a new NeoWiki Subject on a wiki page and attaches its statements. Enabled only when the wiki has NeoWiki installed. Set isMain to make it the page's Main Subject (a page has at most one); otherwise it is added as a child Subject. Requires the edit right. Each statement is keyed by property name as { propertyType, value } — the key is propertyType, NOT the `type` key read tools return; a st","write_action":true,"price_micros":0,"input_schema":null},{"name":"neowiki-cypher-query","description":"Runs a read-only Cypher query against the wiki's NeoWiki knowledge graph (Neo4j) and returns rows. Enabled only when the wiki has NeoWiki installed. Discover the data model first — the graph CANNOT be introspected from Cypher (CALL db.labels(), db.schema.* and all procedure calls are rejected as not-read-only). Use neowiki-list-schemas for the entity types, then neowiki-get-schema for a type's pro","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-delete-subject","description":"Deletes one NeoWiki Subject by ID from its page. Enabled only when the wiki has NeoWiki installed. Requires the edit right. Pre-1.0: the NeoWiki API may change without notice.","write_action":true,"price_micros":0,"input_schema":null},{"name":"neowiki-get-page-subjects","description":"Lists the NeoWiki Subjects attached to a wiki page — each with full structured data — and identifies the page's Main Subject. Enabled only when the wiki has NeoWiki installed. This is the bridge from a wiki page (which you may already have from get-page) into its knowledge-graph data: one call returns every subject's statements, so you don't need to resolve subject IDs first. Accepts a page title ","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-get-schema","description":"Returns one NeoWiki Schema's property definitions: each property's name, type (text/number/boolean/url/date/datetime/select/relation), and type-specific attributes. Enabled only when the wiki has NeoWiki installed. `relation` properties name the graph edge (`relation`) and the `targetSchema` they point to — this is the relationship vocabulary for neowiki-cypher-query. `select` properties carry the","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-get-subject","description":"Fetches one NeoWiki Subject by ID — its label, schema, and statements with typed values. Enabled only when the wiki has NeoWiki installed. Richer than a flattened Cypher node: it preserves multi-part values and per-statement types. `select` values are option IDs — decode them with neowiki-get-schema. Get an ID from neowiki-search-subjects or a Cypher query. Pre-1.0: the NeoWiki API may change with","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-list-schemas","description":"Lists the Schemas (entity types, e.g. Person, Company) defined in the wiki's NeoWiki knowledge graph, each with its description and property count. Enabled only when the wiki has NeoWiki installed. Start here to discover what types exist, then use neowiki-get-schema for one type's properties, or neowiki-cypher-query to query the graph. Paginate with continueFrom. Pre-1.0: the NeoWiki API may chang","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-search-subjects","description":"Finds NeoWiki Subjects by label within a Schema, returning each match's opaque Subject ID (s…) and label. Enabled only when the wiki has NeoWiki installed. Subject IDs are not human-readable, so use this to resolve a name to an ID for neowiki-get-subject or a parameterized neowiki-cypher-query. Pre-1.0: the NeoWiki API may change without notice.","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-set-main-subject","description":"Sets which existing Subject on a wiki page is its Main Subject, or clears it. Enabled only when the wiki has NeoWiki installed. Pass subjectId to promote a Subject that already exists on the page, or null to clear the Main Subject. This differs from neowiki-create-subject with isMain, which creates a NEW main Subject. Requires the edit right. Pre-1.0: the NeoWiki API may change without notice.","write_action":false,"price_micros":0,"input_schema":null},{"name":"neowiki-update-subject","description":"Replaces a NeoWiki Subject's label and statements — a FULL replace: property names absent from `statements` are deleted, and {} clears all statements. Enabled only when the wiki has NeoWiki installed. The Subject's id and schema are immutable. Requires the edit right. Read the current state with neowiki-get-subject first. Each statement is keyed by property name as { propertyType, value } — the ke","write_action":true,"price_micros":0,"input_schema":null},{"name":"neowiki-validate-subject","description":"Dry-runs validation of a proposed NeoWiki Subject against its Schema and returns any violations WITHOUT writing. Enabled only when the wiki has NeoWiki installed. Provide id to validate an update to an existing Subject (its schema is used), or omit id and provide schema to validate a new Subject. Use before neowiki-create-subject / neowiki-update-subject to catch type mismatches, missing required ","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse-wikitext","description":"Renders wikitext through the live wiki without saving. Returns HTML, parse warnings, categories, wikilinks, templates, external URLs, and display title. Suited to dry-running a planned edit before create-page or update-page, or previewing standalone wikitext (template combinations, sanitizer checks) with no target page. HTML output is truncated at 75000 bytes by default, with a marker reporting ho","write_action":false,"price_micros":0,"input_schema":null},{"name":"search-page","description":"Searches wiki page titles and page content (full-text) for the provided terms. Returns matching pages with a snippet, size, timestamp, and the namespace the match came from. Covers the namespaces the wiki counts as content unless namespaces names the namespace IDs to search; get-site-info lists a wiki's namespaces and flags which of them hold content. Accepts up to 100 matches per call (default 10","write_action":false,"price_micros":0,"input_schema":null},{"name":"search-page-by-prefix","description":"Returns wiki page titles beginning with a given prefix (suited to autocomplete and title lookup). Only titles are returned — no snippets, sizes, or IDs. Accepts up to 500 titles per call (default 10); additional matches beyond the cap are flagged in the response. For full-text content search, use search-page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"smw-list-properties","description":"Lists Semantic MediaWiki properties on the targeted wiki. Enabled only when the wiki has SMW installed. Each entry has the property name, a copy-paste `[[name::value]]` template for smw-query, and — when SMW exposes them — a description and usage count. Wikis often have hundreds of properties; supply search to narrow. Up to 200 per call; paginate with continueFrom.","write_action":false,"price_micros":0,"input_schema":null},{"name":"smw-query","description":"Runs a Semantic MediaWiki `#ask` query against the targeted wiki. Enabled only when the wiki has SMW installed. One row per matching page, with the requested printouts as columns. For grounded property names, use smw-list-properties first. Examples: - Pages in a category: [[Category:Person]]|?Has occupation|limit=20 - Numeric comparison: [[Born in::>1900]]|?Has name|?Born in - Multiple conditions:","write_action":false,"price_micros":0,"input_schema":null},{"name":"undelete-page","description":"Restores a previously deleted wiki page, including its full revision history, and returns the restored title. The page must currently be in a deleted state (from delete-page); fails if no deleted revisions exist for the title or the authenticated user lacks the undelete permission.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update-file","description":"Uploads a new revision of an existing file from the local disk, preserving prior revisions in the file history, and returns the file title and URL. The upload appears in the wiki's upload log. Replaces the file content (bytes) only; for editing the wikitext on a file's description page, use update-page. The operator restricts which directories are readable; filepath must be an absolute path inside","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-file-from-url","description":"Fetches a file from a remote web URL and uploads it as a new revision of an existing file, preserving prior revisions in the file history, and returns the file title and URL. The upload appears in the wiki's upload log. Replaces the file content (bytes) only; for editing the wikitext on a file's description page, use update-page. Works whether or not the wiki has upload-by-URL enabled: the server ","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-page","description":"Writes to an existing wiki page and returns the new revision ID. Fails if the page does not exist; for new pages, use create-page. operation says what the write does and section says where: omit section to act on the whole page, or set it to confine the write to one section. For changing part of a page, use operation='find-replace', which carries only the text being rewritten, so nothing outside f","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload-file","description":"Uploads a file from the local disk into the wiki's File namespace and returns the resulting file title and URL. The upload appears in the wiki's upload log. The operator restricts which directories are readable; filepath must be an absolute path inside a configured upload directory, or the call fails before contacting the wiki. Fails if a file with the target title already exists (the wiki does no","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload-file-from-url","description":"Fetches a file from a remote web URL and uploads it into the wiki's File namespace, returning the resulting file title and URL. The upload appears in the wiki's upload log. Works whether or not the wiki has upload-by-URL enabled: the server retrieves the file and uploads it directly, falling back to wiki-side fetching only when it cannot reach the URL itself. Fails if a file with the target title ","write_action":true,"price_micros":0,"input_schema":null},{"name":"whoami","description":"Returns the identity the current session is authenticated as on the targeted wiki: the username, whether the session is anonymous (no user is logged in), and the user groups it belongs to. Set includeRights to also return the full list of user rights. Use to confirm who edits and uploads will be attributed to before writing — for example, to resolve your own username before building a title under ","write_action":false,"price_micros":0,"input_schema":null},{"name":"wikibase-add-statement","description":"Adds one statement to a Wikibase item, property or lexeme and returns the new statement ID. Enabled only when the wiki is a Wikibase repository. Requires the edit right. The value is given as text and interpreted by the property's datatype, which is read from the wiki first: an item ID such as Q515 for a wikibase-item property, and the literal text for a string, external-id or url property. A prop","write_action":false,"price_micros":0,"input_schema":null},{"name":"wikibase-edit-entity","description":"Creates or changes a Wikibase entity from a JSON description of the change, and returns the entity ID and new revision ID. Enabled only when the wiki is a Wikibase repository. Omit entityId to create a new item or property, or name an item, property or lexeme to edit it. Requires the edit right. data is merged into the entity: terms and statements it does not mention are left alone, and a term giv","write_action":false,"price_micros":0,"input_schema":null},{"name":"wikibase-get-entity","description":"Returns one Wikibase item, property or lexeme as compact text: its label, description and aliases, then its statements, one line per property in the form `P106 (occupation): Q36834 (composer)`. Enabled only when the wiki is a Wikibase repository. A property also reports its datatype; a lexeme carries lemmas rather than terms, none of which this tool renders, so a lexeme comes back as its statement","write_action":false,"price_micros":0,"input_schema":null},{"name":"wikibase-query","description":"Runs a SPARQL query against the targeted wiki's query service and returns the solutions as rows, one line per solution with the cells joined by ` | ` in column order; a line break inside a cell becomes a space, and a cell containing that separator is not escaped. Enabled only when the wiki is a Wikibase repository that publishes a query service. The answer to a question about many entities at once","write_action":false,"price_micros":0,"input_schema":null},{"name":"wikibase-search-entities","description":"Finds Wikibase items and properties by label or alias on the targeted wiki, returning one `id — label — description` line per match. Enabled only when the wiki is a Wikibase repository. Entity IDs are wiki-specific: the same concept has different Q-ids on Wikidata and on a private Wikibase, so IDs are discovered here rather than recalled. Properties carry their datatype in brackets, which tells wi","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":94,"grade":"A","scanned_at":"2026-09-19T20:27:34.857Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:27:34.792Z","components":{"code":{"score":25,"max":25,"notes":["165 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@professional-wiki/mediawiki-mcp-server","version":"0.18.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":12,"publishedAt":"2026-09-10T22:04:28.699Z","repositoryUrl":"git+https://github.com/ProfessionalWiki/MediaWiki-MCP-Server.git","weeklyDownloads":539}],"repo":{"found":true,"owner":"ProfessionalWiki","repo":"MediaWiki-MCP-Server","archived":false,"pushedAt":"2026-09-17T12:33:24Z","stars":131,"forks":38,"openIssues":10,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/53520236?v=4","ownerCreatedAt":"2019-07-31T11:18:48Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/53520236?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":131,"forks":38,"downloadsWeek":539,"license":"MIT","lastPushAt":"2026-09-17T12:33:24.000Z","score":49}}}},"grade_history":[],"reviews":[]}