Releases: Cloudmeru/CodeWiki-MCP
Releases · Cloudmeru/CodeWiki-MCP
Release list
v1.3.0
What's New
GitHub API fallback for typos & misspellings
- When CodeWiki search returns zero results, the resolver now queries
api.github.com/search/repositoriesas a fallback — catches typos like "fecbook/react" → "facebook/react". - Fully async with
httpx; no API token required for public repos.
Indexing confirmation via MCP Elicitation
codewiki_request_indexingnow asks the user to confirm before submitting a repository for indexing, using the MCP Elicitation protocol.- Users can accept, decline, or cancel — decline and cancel skip the submission gracefully.
Defensive hardening
- Narrowed all broad
except Exceptionhandlers across every module to catch only specific exception types (TimeoutError,PlaywrightError,httpx.HTTPError, etc.). - Eliminated bare
raisefrom except-all blocks; replaced with targeted re-raises.
Code quality
- Full Ruff & Pylint cleanup — zero warnings across the entire codebase.
- Fixed session pool test infinite loop and
gc.collectRuntimeWarnings.
Documentation
- Updated all 10 docs HTML pages with v1.3.0 content.
- Added sample conversation GIF to README.
- Fixed PyPI logo display (absolute raw GitHub URLs).
- New agent fallback guidance for non-interactive clients.
- New v1.3.0 live scenario test file (13 scenarios).
Testing
- 53 new tests covering keyword resolution, helpers, request-indexing elicitation, tool-level keyword integration, SHA-256 hashing, and bare keyword input validation.
- New test files:
test_helpers.py(27 tests),test_request_indexing.py(14 tests),test_keyword_integration.py(7 tests), plus additions totest_types.py(5 tests). - Total: 246 tests passing, 0 warnings.
Full Changelog: v1.1.0...v1.3.0
v1.1.0 — Request Indexing Tool & Tool Renaming
What's New
New Tool — codewiki_request_indexing
- Submit unindexed repositories to Google CodeWiki for indexing directly from the MCP server.
- Full Playwright automation — navigates to CodeWiki, clicks "Request repository", fills the URL dialog, and submits.
- Automatic
NOT_INDEXEDdetection — all tools now detect unindexed repos and return a structured error code with guidance.
Tool Renaming — codewiki_verb_noun Pattern
All tools renamed for better LLM/agent distinguishability:
| Old Name | New Name |
|---|---|
list_code_wiki_topics |
codewiki_list_topics |
read_wiki_structure |
codewiki_read_structure |
read_wiki_contents |
codewiki_read_contents |
search_code_wiki |
codewiki_search_wiki |
| (new) | codewiki_request_indexing |
Version Management
__init__.pynow reads version fromimportlib.metadataat runtime (no hardcoded duplicate).- New
scripts/bump_version.py— single command bumpspyproject.toml, all docs version badges, and the server banner year.
ASCII Startup Banner
Server prints a branded ASCII banner with version and year to stderr on startup.
Testing
- 10 new tests for NOT_INDEXED detection and request indexing.
- 161 total tests passing.
Full Changelog: v1.0.4...v1.1.0
v1.0.4 — Stealth layer, deadlock fix, docs overhaul
Critical Bug Fixes
- Event-loop deadlock — _search_impl\ runs on the browser event loop; calling the sync \get_or_create_session()\ wrapper tried to submit a coroutine to the same loop and blocked, causing a 60s deadlock per attempt (~123s total). Fixed by using \�wait _get_or_create()\ / \�wait _release()\ directly.
- Double-submit timeout — after pressing Enter the send button becomes disabled; the old _click_submit()\ then waited 30s trying to click the disabled button. New _submit_query()\ checks the button state first and only clicks as a fallback.
Browser Stealth Layer
- New \stealth.py\ module — patches
avigator.webdriver, \chrome.runtime, plugins, languages, WebGL vendor, permissions, and window dimensions. - Human-like input helpers: \human_type()\ (per-char jitter 35–120ms), \human_click()\ (mouse-move + click),
andom_delay(). - Stealth context options: viewport jitter, locale, timezone, Sec-CH-UA client hints, device scale factor.
- Launch args: --disable-blink-features=AutomationControlled, --disable-infobars.
- User-Agent updated to Chrome/132.
Documentation
- README.md rewritten: concise, version-agnostic (overview, quick start, client setup, tools table, link to full docs).
- Release Notes page added to nav across all 9 doc pages.
- Architecture updated: session pool, stealth layer, anti-loop safety sections; updated diagram and project structure.
- Configuration updated: 9 new env vars (search/parsed/topic cache, rate limiting, session pool, topic preview).
Testing
- 22 new stealth tests; 151 total tests passing.
- Added \ ests/diagnose_search.py\ — standalone diagnostic script for headless chat debugging.
Full Changelog: v1.0.3...v1.0.4
v1.0.3 - Dedup, Rate Limiting & Idempotency
What's Changed
Anti-Loop Protections
- In-flight request deduplication — concurrent requests for the same repo URL share a single Playwright fetch via threading.Event barrier (
dedup.py) - Per-repo sliding-window rate limiter — max 10 calls per 60s window per repo URL; returns
RATE_LIMITEDerror when exceeded (rate_limit.py) - Topic-list dedicated cache — 30-min TTL (vs 5-min for pages) since structural topic data rarely changes
Response Intelligence
- Content hash in
ResponseMeta— MD5-12 fingerprint lets clients detect unchanged responses - Idempotency key in
ToolResponse—repo_url::content_hashcomposite key for client-side dedup recognition - Response size hints in all 4 tool docstrings — agents can plan token budgets before calling
Code Quality
- Pylint: 9.93/10
- Ruff: all checks passed
- Black: fully formatted
- Tests: 129 passed (up from 101), 0 failures
Full Changelog: v1.0.2...v1.0.3
v1.0.2 — Token Efficiency Optimizations
What's Changed
Phase 1 — Core Optimizations
- Shared helpers module (_helpers.py) — eliminates code duplication across tool modules
- 3-tier caching — HTML page cache + parsed WikiPage cache + search response cache (2-min TTL)
- Topic previews — \list_code_wiki_topics\ returns titles + 200-char summaries instead of full page dump
- Pagination —
ead_wiki_contents\ supports \offset/\limit\ parameters (default: 5 sections per call) - Input validation — new \ContentsInput\ Pydantic model with \�alidate_contents_input\
Phase 2 — Documentation
- Updated tool descriptions on docs site reflecting new parameters and behaviors
- Rewritten Agents page with token-efficient workflow guide and anti-patterns
- Added Model Selection & Credit Optimization section (GitHub Copilot multiplier table)
- Added comprehensive v1.0.2 release notes
- Version badges updated across all documentation pages
Phase 3 — Session Pool
- LRU-ordered persistent browser context pool for search sessions (avoids opening fresh browser for each query)
- Search automatically reuses warm sessions with fallback to fresh context on failure
- Pool cleanup integrated into server shutdown
Code Quality
- Pylint: 9.93/10
- Ruff: all checks passed
- Black: fully formatted
- Tests: 101 passed, 0 failures
Full Changelog: v1.0.1...v1.0.2
v1.0.1
Code quality: black + ruff + pylint 10/10, removed dead files, refactored parser for cleaner structure.
v1.0.0
First stable release. Playwright-based MCP server for Google CodeWiki with 4 tools, structured Graphviz diagram extraction (entities + relationships), TTL caching, graceful shutdown, 93 tests. Install: pip install codewiki-mcp
v0.3.0
Playwright-based MCP server for Google CodeWiki. 4 tools, structured Graphviz diagram extraction, TTL caching, 93 tests.