{"name":"io.github.ChristopherDavenport/github-twin","slug":"christopherdavenport-github-twin","title":"github-twin","description":"Personal RAG over your GitHub history (commits, code, reviews), served to Claude Code over MCP.","url":"https://mcp.market/server/christopherdavenport-github-twin","rating":null,"grade":"B","score":71,"certified":false,"status":"active","category":"devtools","tags":["devtools","ai"],"presence":{"score":10,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-07-02T02:53:47.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ChristopherDavenport/github-twin","website":null,"version":"0.0.17","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"github-twin","version":"0.0.17","runtimeHint":"uvx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"serve","type":"positional"}],"environmentVariables":[{"description":"GitHub personal access token. Optional: github-twin can also pick the token up from `gh auth token` or from its own OAuth device-flow login (`gt auth login`).","isSecret":true,"name":"GITHUB_TOKEN"},{"description":"Optional. Enables the Claude backend for `gt summarize`, `gt distill`, and `gt eval`. Defaults to local Ollama when unset.","isSecret":true,"name":"ANTHROPIC_API_KEY"},{"description":"Optional. Enables the Gemini backend for embedding and the LLM seam. Vertex AI ADC via `GT_GEMINI_PROJECT` is also supported.","isSecret":true,"name":"GEMINI_API_KEY"},{"description":"Optional. Override the on-disk data directory holding the SQLite index, embeddings, and cached GitHub responses. Defaults to `$XDG_DATA_HOME/github-twin`.","name":"GT_PATHS__DATA_DIR"}]}],"tools":[{"name":"_get_llm","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"bootstrap","description":"One-shot setup: discover the target, ingest, embed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bootstrap_status","description":"Report whether this DB is ready for retrieval.","write_action":false,"price_micros":0,"input_schema":null},{"name":"developer_profile","description":"Synthesize a short Markdown profile of one developer's review voice.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_applicable_rules","description":"Find distilled code-pattern rules that apply to a coding task.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_code","description":"Find source snippets at HEAD across every indexed target.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_review_comments","description":"Find past review comments on diffs similar to `diff_hunk`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_style_examples","description":"Find code that matches a description, for style reference.","write_action":false,"price_micros":0,"input_schema":null},{"name":"house_rules","description":"Return all distilled rules as a single Markdown block.","write_action":false,"price_micros":0,"input_schema":null},{"name":"predict_review_outcome","description":"Predict how a candidate PR would be reviewed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"summarize_review_patterns","description":"Return distilled review rules.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sync","description":"Incremental: pull new commits + review comments and embed them.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":71,"grade":"B","scanned_at":"2026-09-27T17:04:56.352Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T17:04:56.437Z","components":{"code":{"score":20,"max":25,"notes":["75 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":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 88 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"github_twin-0.0.17/src/github_twin/eval/report.py: …rn t = Table(title=f\"Review-comment eval (n={result.n})\") t.add_column(\"metric…"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"github-twin","version":"0.0.17","found":true,"license":"MIT","dependencyCount":23,"publishedAt":"2026-05-29T18:51:58.034208Z","repositoryUrl":"https://github.com/ChristopherDavenport/github-twin"}],"repo":{"found":true,"owner":"ChristopherDavenport","repo":"github-twin","archived":false,"pushedAt":"2026-07-02T02:53:47Z","stars":0,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/10272700?v=4","ownerCreatedAt":"2014-12-22T18:25:29Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/10272700?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-07-02T02:53:47.000Z","score":10}}}},"grade_history":[],"reviews":[]}