GitHub Issue Searcher MCP ð
ããŒã«ã«GitHub Issue Searcher MCP ð ã«ã€ããŠ
GitHub Issue Searcher MCPã¯ããªããžããªã®å±¥æŽã調ã¹ãéçºè ãããŒã åãã«ãGitHubã®Issueã玢åŒåããŠæå³æ€çŽ¢ããŸããOpenAIã®åã蟌ã¿ãšFAISSãçµã¿åããã玢åŒãšã¡ã¿ããŒã¿ãä¿åããŸãã
äž»ãªæ©èœ
- 01èªç¶èšèªã«ããIssueã®æå³æ€çŽ¢
- 02GitHubãªããžããªã®Issueåæ
- 03FAISSã«ããé¡äŒŒæ€çŽ¢
- 04玢åŒãšã¡ã¿ããŒã¿ã®æ°žç¶å
- 05玢åŒç¶æ ã®ç¢ºèª
掻çšã·ãŒã³
- 01è€æ°ãªããžããªããé¢é£ãã°ãæ¢ã
- 02é害調æ»ã§Issueå±¥æŽãæ€çŽ¢ãã
- 03GitHub Issueã®ãã¬ããžããŒã¹ãæ§ç¯ãã
MCP 察å¿
MCP ãµãŒããŒã¯ãæå³æ€çŽ¢ãšçŽ¢åŒç¶æ 確èªã®ããŒã«ãMCPã¯ã©ã€ã¢ã³ãã«æäŸããŸãããªããžããªã®ããŒã¿ãåæããåŸã«æ€çŽ¢ã§ããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
GitHub Issue Searcher MCP ð
https://github.com/user-attachments/assets/a983cf5f-8888-4592-b3c8-0bd152e95722
FAISSïŒFacebook AI Similarity SearchïŒãšOpenAI ã®åã蟌ã¿ãçµã¿åãããGitHub ãªããžããªã® Issue ãã»ãã³ãã£ãã¯æ€çŽ¢ã§ããã匷å㪠Model Context ProtocolïŒMCPïŒãµãŒããŒã§ããGitHub ã® Issue ãã©ããã³ã°ã«ç¹åãã RAGïŒæ€çŽ¢æ¡åŒµçæïŒã·ã¹ãã ããã¬ããžããŒã¹ã®æ§ç¯ã«æé©ã§ãã
âš ç¹é·
- ð ã»ãã³ãã£ãã¯æ€çŽ¢ïŒOpenAI ã䜿çšããŠåã蟌ã¿ãçæããFAISS ã§æ€çŽ¢ããŸã
- ð ããã¥ã¡ã³ãã®ä¿åïŒæŽçããŠæ€çŽ¢ã§ãããããè±å¯ãªã¡ã¿ããŒã¿ãšãšãã«ããã¹ããä¿åããŸã
- ð GitHub ãšã®é£æºïŒGitHub ãªããžããªã® Issue ãèªåçã«åæããŠæ€çŽ¢ããŸã
- â¡ é«éãªé¡äŒŒæ€çŽ¢ïŒFacebook ã® FAISS ã©ã€ãã©ãªã掻çšããŸã
- ð§ MCP äºæïŒClaude ããã®ä»ã® MCP ã¯ã©ã€ã¢ã³ããšã·ãŒã ã¬ã¹ã«é£æºããŸã
- ðŸ æ°žç¶ã¹ãã¬ãŒãžïŒã€ã³ããã¯ã¹ãšã¡ã¿ããŒã¿ãèªåçã«ä¿åã»èªã¿èŸŒã¿ããŸã
ð ïž ã€ã³ã¹ããŒã«
åææ¡ä»¶
- Python 3.8 以é
- OpenAI API ããŒ
- ïŒä»»æïŒGitHub 飿ºçšã® GitHub Personal Access Token
ã¯ã€ãã¯ã»ããã¢ãã
-
ãªããžããªãã¯ããŒã³ããŸã
git clone https://github.com/calumjs/github-issue-searcher-mcp.git cd github-issue-searcher-mcp -
ä»®æ³ç°å¢ãã»ããã¢ããããŸãïŒæšå¥šïŒ
cd faiss_mcp_server python -m venv .venv # Activate virtual environment # On Windows: .venv\Scripts\activate # On macOS/Linux: source .venv/bin/activate -
äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸã
pip install -r requirements.txt -
ç°å¢å€æ°ãèšå®ããŸã
faiss_mcp_serverãã£ã¬ã¯ããªã«.envãã¡ã€ã«ãäœæããŸãïŒOPENAI_API_KEY=your_openai_api_key_here GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token_here # Optional -
GitHub ãªããžããªãåæããŸãïŒæåã«å¿ ãå®è¡ïŒ
# Sync your first repository to populate the search index python sync_github.py owner/repo --clear # Examples: python sync_github.py microsoft/vscode --clear python sync_github.py facebook/react --clear python sync_github.py SSWConsulting/SSW.YakShaver --clear -
MCP ã¯ã©ã€ã¢ã³ããèšå®ããŸã
MCP ã¯ã©ã€ã¢ã³ãã®èšå®ã«ãµãŒããŒã远å ããŸããClaude Desktop ã®å Žåã¯ãMCP èšå®ã«æ¬¡ã®å 容ã远å ããŸãïŒ
{ "mcpServers": { "github-issue-searcher": { "command": "python", "args": ["/path/to/your/faiss_mcp_server/main.py"], "env": { "OPENAI_API_KEY": "your-openai-api-key-here" } } } }泚ïŒ
/path/to/your/faiss_mcp_server/main.pyãã€ã³ã¹ããŒã«å ã®å®éã®ãã¹ã«çœ®ãæããŠãã ãããå¥ã®æ¹æ³ïŒãã¹ãã®ããã«ãµãŒããŒãçŽæ¥å®è¡ããããšãã§ããŸãïŒ
python main.py
ð äœ¿ãæ¹
ã¹ããã 1ïŒGitHub ãªããžããªã®ããŒã¿ãåæãã
æåã«å¿ ãå®è¡ããŠãã ããïŒ GitHub Issue Searcher MCP ã§æ€çŽ¢ããã«ã¯ããªããžããªã®ããŒã¿ãå¿ èŠã§ããæ¬¡ã® 2 ã€ã®æ¹æ³ããããŸãïŒ
æ¹æ³ 1ïŒã¹ã¿ã³ãã¢ãã³ã®åæã¹ã¯ãªããïŒæšå¥šïŒ
cd faiss_mcp_server
# Sync a single repository (clears existing data)
python sync_github.py owner/repo --clear
# Add multiple repositories (append to existing data)
python sync_github.py microsoft/vscode
python sync_github.py facebook/react
python sync_github.py vercel/next.js
æ¹æ³ 2ïŒãµãŒããŒã®èµ·åæã«åæãã
cd faiss_mcp_server
# Start server and sync repository
python main.py --sync-repo owner/repo --clear
éèŠãªæ³šæäºé ïŒ
--clearãã©ã°ã䜿ããšãæ¢åã®ããŒã¿ãæ°ãããªããžããªã®ããŒã¿ã§çœ®ãæããŸã--clearãã©ã°ãçç¥ãããšãæ¢åã®ã€ã³ããã¯ã¹ã«ãªããžããªã®ããŒã¿ã远å ããŸã- åæã«ã¯ããªããžããªã®ãµã€ãºã«ãã£ãŠæ°åãããããšããããŸã
- ã¹ã¿ã³ãã¢ãã³ã®åæåŠçäžãããµãŒããŒã¯å¿çãç¶ããŸã
ã¹ããã 2ïŒIssue ãæ€çŽ¢ãã
ãªããžããªã®ããŒã¿ãåæãããšãMCP ããŒã«ã䜿çšã§ããŸãïŒ
search_embeddings
èªç¶èšèªã䜿ã£ãŠé¡äŒŒããã³ã³ãã³ããæ€çŽ¢ããŸãïŒ
search_embeddings(
query_text="How to fix memory leaks in React components?",
k=5 # Number of results to return
)
get_index_status
çŸåšã€ã³ããã¯ã¹åãããŠããããŒã¿ã確èªããŸãïŒ
get_index_status()
# Returns: {"initialized": true, "dimension": 1536, "vector_count": 4490, ...}
ããŒã¿ã®ç®¡ç
ãªããžããªã远å ããïŒ
# Add additional repositories without clearing existing data
python sync_github.py tensorflow/tensorflow
python sync_github.py pytorch/pytorch
ãã¹ãŠã®ããŒã¿ã眮ãæããïŒ
# Clear everything and sync a new repository
python sync_github.py new-owner/new-repo --clear
çŸåšã®ããŒã¿ã確èªããïŒ
get_index_status ããŒã«ã䜿ã£ãŠãçŸåšã€ã³ããã¯ã¹åãããŠãã Issue ã®æ°ãšããã® Issue ãã©ã®ãªããžããªã®ãã®ãã確èªããŸãã
ðïž ã¢ãŒããã¯ãã£
faiss_mcp_server/
âââ main.py # Entry point and argument parsing
âââ sync_github.py # Standalone GitHub sync script
âââ server.py # MCP server initialization
âââ requirements.txt # Python dependencies
âââ pyproject.toml # Project configuration
âââ tools/
â âââ faiss_tools.py # FAISS search tools
â âââ github_tools.py # GitHub integration utilities
âââ utils/
âââ faiss_handler.py # Core FAISS operations
âââ github_syncer.py # GitHub API integration
ð§ èšå®
ç°å¢å€æ°
| 倿° | 説æ | å¿ é |
|---|---|---|
OPENAI_API_KEY | åã蟌ã¿çæçšã® OpenAI API ã㌠| â ã¯ã |
GITHUB_PERSONAL_ACCESS_TOKEN | ãªããžããªãžã®ã¢ã¯ã»ã¹çšã® GitHub ããŒã¯ã³ | â ä»»æ |
ããŒã¿ã®ä¿å
- FAISS ã€ã³ããã¯ã¹ïŒ
faiss_index.binãšããŠä¿åãããŸã - ã¡ã¿ããŒã¿ïŒ
metadata.jsonãšããŠä¿åãããŸã - å ŽæïŒ
data/ãã£ã¬ã¯ããªïŒèªåçã«äœæãããŸãïŒ
ð 䜿çšäŸ
- ð GitHub Issue ã®æ€çŽ¢ïŒGitHub ãªããžããªã® Issue ãã»ãã³ãã£ãã¯æ€çŽ¢ããŸã
- ð Issue ãã¬ããžããŒã¹ïŒGitHub ã® Issue ããæ€çŽ¢å¯èœãªãã¬ããžããŒã¹ãæ§ç¯ããŸã
- ð€ RAG ã·ã¹ãã ïŒé¢é£ãã GitHub Issue ã®ã³ã³ããã¹ãã䜿ã£ãŠ AI ã®å¿çã匷åããŸã
- ð 調æ»ïŒé¡äŒŒãã Issueããã°å ±åãæ©èœãªã¯ãšã¹ããèŠã€ããŸã
- ð¬ éçºè ãµããŒãïŒãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã« Issue ã®å±¥æŽãæ€çŽ¢ããŸã
- ð ãããžã§ã¯ã管çïŒé¢é£ãã Issue ãèŠã€ãããã¿ãŒã³ã远跡ããŸã
ð¡ïž ãšã©ãŒåŠç
ãµãŒããŒã«ã¯å æ¬çãªãšã©ãŒåŠçãåãã£ãŠããŸãã
- API ã®å€±ææã«èªåã§å詊è¡ããŸã
- ãµãŒãã¹ãå©çšã§ããªãå Žåã¯ãé©åã«æ©èœãçž®éããŸã
- ãããã°çšã«è©³çްãªãã°ãèšé²ããŸã
- å ¥åã®æ€èšŒãšãµãã¿ã€ãºãè¡ããŸã
ð€ ã³ã³ããªãã¥ãŒã·ã§ã³
ã³ã³ããªãã¥ãŒã·ã§ã³ãæè¿ããŸãïŒãæ°è»œã«ãã«ãªã¯ãšã¹ããéä¿¡ããŠãã ããã倧ããªå€æŽãè¡ãå Žåã¯ããŸãã€ã·ã¥ãŒãäœæããŠã倿Žå 容ã«ã€ããŠãçžè«ãã ããã
éçºç°å¢ã®ã»ããã¢ãã
- ãªããžããªããã©ãŒã¯ããŸã
- ãã£ãŒãã£ãŒãã©ã³ããäœæããŸãïŒ
git checkout -b feature/amazing-featureïŒ - 倿Žãå ããŸã
- 該åœããå Žåã¯ãã¹ãã远å ããŸã
- 倿Žãã³ãããããŸãïŒ
git commit -m 'Add amazing feature'ïŒ - ãã©ã³ãã«ããã·ã¥ããŸãïŒ
git push origin feature/amazing-featureïŒ - ãã«ãªã¯ãšã¹ããäœæããŸã
ð ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ã㯠MIT ã©ã€ã»ã³ã¹ã®äžã§ã©ã€ã»ã³ã¹ãããŠããŸãã詳现㯠LICENSE ãã¡ã€ã«ãã芧ãã ããã
ð è¬èŸ
- åªãã FAISS ã©ã€ãã©ãªãæäŸããŠããã Facebook Research
- åã蟌ã¿ã¢ãã«ãæäŸããŠããã OpenAI
- Model Context Protocol ãæäŸããŠããã Anthropic
- åªãã API ãæäŸããŠããã GitHub
ð ãµããŒã
åé¡ãçºçããå Žåãã質åãããå Žåã¯ã以äžãã確èªãã ããã
- Issues ããŒãžã確èªããŸã
- è©³çŽ°ãªæ å ±ãæ·»ããŠæ°ããã€ã·ã¥ãŒãäœæããŸã
- å¯èœã§ããã°ããã°ãšãšã©ãŒã¡ãã»ãŒãžãå«ããŠãã ãã
GitHub ã³ãã¥ããã£ã®ããã« â€ïž ã蟌ããŠäœæ
ã€ã·ã¥ãŒæ€çŽ¢ããæ¥œãã¿ãã ããïŒ ðâš
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã