GitHub.Issue.Searcher.MCP
ð A Model Context Protocol (MCP) server that provides semantic search capabilities for GitHub repository issues using FAISS and OpenAI embeddings. Perfect for developers who want to quickly find relevant issues, bug reports, and discussions across GitHub repositories using natural language queries.
GitHubã¹ã¿ãŒ
2
ãŠãŒã¶ãŒè©äŸ¡
æªè©äŸ¡
ãã©ãŒã¯
0
ã€ã·ã¥ãŒ
0
é²èЧæ°
1
ãæ°ã«å ¥ã
0
GitHub Issue Searcher MCP ð
https://github.com/user-attachments/assets/a983cf5f-8888-4592-b3c8-0bd152e95722
A powerful Model Context Protocol (MCP) Server that combines FAISS (Facebook AI Similarity Search) with OpenAI embeddings to provide semantic search capabilities for GitHub repository issues. Perfect for building RAG (Retrieval-Augmented Generation) systems and knowledge bases focused on GitHub issue tracking!
âš Features
- ð Semantic Search: Generate embeddings using OpenAI and search with FAISS
- ð Document Storage: Store text with rich metadata for organized retrieval
- ð GitHub Integration: Automatically sync and search GitHub repository issues
- â¡ Fast Similarity Search: Powered by Facebook's FAISS library
- ð§ MCP Compatible: Works seamlessly with Claude and other MCP clients
- ðŸ Persistent Storage: Automatic saving and loading of indexes and metadata
ð ïž Installation
Prerequisites
- Python 3.8 or higher
- OpenAI API key
- (Optional) GitHub Personal Access Token for GitHub integration
Quick Setup
Clone the repository
git clone https://github.com/calumjs/github-issue-searcher-mcp.git cd github-issue-searcher-mcp
Set up virtual environment (recommended)
cd faiss_mcp_server python -m venv .venv # Activate virtual environment # On Windows: .venv\Scripts\activate # On macOS/Linux: source .venv/bin/activate
Install dependencies
pip install -r requirements.txt
Set up environment variables Create a
.env
file in thefaiss_mcp_server
directory:OPENAI_API_KEY=your_openai_api_key_here GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token_here # Optional
Sync a GitHub repository (Essential First Step)
# 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
Configure your MCP client
Add the server to your MCP client configuration. For Claude Desktop, add this to your MCP settings:
{ "mcpServers": { "github-issue-searcher": { "command": "python", "args": ["/path/to/your/faiss_mcp_server/main.py"], "env": { "OPENAI_API_KEY": "your-openai-api-key-here" } } } }
Note: Replace
/path/to/your/faiss_mcp_server/main.py
with the actual path to your installation.Alternative: You can also run the server directly for testing:
python main.py
ð Usage
Step 1: Sync GitHub Repository Data
This is the essential first step! The GitHub Issue Searcher MCP needs repository data to search through. You have two options:
Option 1: Standalone sync script (Recommended)
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
Option 2: Sync during server startup
cd faiss_mcp_server
# Start server and sync repository
python main.py --sync-repo owner/repo --clear
Important Notes:
- Use
--clear
flag to replace existing data with new repository - Omit
--clear
flag to add repository data to existing index - Syncing can take several minutes depending on repository size
- The server remains responsive during standalone sync operations
Step 2: Search Through Issues
Once you have synced repository data, you can use the MCP tools:
search_embeddings
Search for similar content using natural language:
search_embeddings(
query_text="How to fix memory leaks in React components?",
k=5 # Number of results to return
)
get_index_status
Check what data is currently indexed:
get_index_status()
# Returns: {"initialized": true, "dimension": 1536, "vector_count": 4490, ...}
Managing Your Data
Add More Repositories:
# Add additional repositories without clearing existing data
python sync_github.py tensorflow/tensorflow
python sync_github.py pytorch/pytorch
Replace All Data:
# Clear everything and sync a new repository
python sync_github.py new-owner/new-repo --clear
Check Current Data:
Use the get_index_status
tool to see how many issues are currently indexed and from which repositories.
ðïž Architecture
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
ð§ Configuration
Environment Variables
Variable | Description | Required |
---|---|---|
OPENAI_API_KEY |
Your OpenAI API key for embeddings | â Yes |
GITHUB_PERSONAL_ACCESS_TOKEN |
GitHub token for repository access | â Optional |
Data Storage
- FAISS Index: Stored as
faiss_index.bin
- Metadata: Stored as
metadata.json
- Location:
data/
directory (created automatically)
ð Use Cases
- ð GitHub Issue Search: Semantically search through GitHub repository issues
- ð Issue Knowledge Base: Build searchable knowledge bases from GitHub issues
- ð€ RAG Systems: Enhance AI responses with relevant GitHub issue context
- ð Research: Find similar issues, bug reports, or feature requests
- ð¬ Developer Support: Search through issue history for troubleshooting
- ð Project Management: Discover related issues and track patterns
ð¡ïž Error Handling
The server includes comprehensive error handling:
- Automatic retry for API failures
- Graceful degradation when services are unavailable
- Detailed logging for debugging
- Input validation and sanitization
ð€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Development Setup
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests if applicable
- Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
ð License
This project is licensed under the MIT License - see the LICENSE file for details.
ð Acknowledgments
- Facebook Research for the amazing FAISS library
- OpenAI for the embedding models
- Anthropic for the Model Context Protocol
- GitHub for the excellent API
ð Support
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Include logs and error messages when possible
Made with â€ïž for the GitHub community
Happy issue searching! ðâš
18
ãã©ãã¯ãŒ
17
ãªããžããª
0
Gist
3
è²¢ç®æ°