GitHub.Issue.Searcher.MCP
If you are the rightful owner of GitHub.Issue.Searcher.MCP and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The GitHub Issue Searcher MCP is a powerful Model Context Protocol (MCP) Server that integrates FAISS and OpenAI embeddings to enable semantic search capabilities for GitHub repository issues.
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 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! šāØ