About GitHub Issue Searcher MCP π
GitHub Issue Searcher MCP indexes GitHub issues for semantic search, aimed at developers and teams investigating repository history. It uses OpenAI embeddings with FAISS and keeps its index and metadata on disk.
Key features
- 01Natural-language semantic issue search
- 02GitHub repository issue syncing
- 03FAISS similarity search
- 04Persistent index and metadata
- 05Index status lookup
Use cases
- 01Find related bug reports across repositories
- 02Search issue history for troubleshooting
- 03Build a GitHub issue knowledge base
MCP support
The MCP server exposes semantic search and index-status tools to MCP clients, which can query issues after repository data is synced.
Configuration
Local server config is the same for every client. Copy it into your clientβs MCP config file.
We havenβt collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEGitHub 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
.envfile in thefaiss_mcp_serverdirectory: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.pywith 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
--clearflag to replace existing data with new repository - Omit
--clearflag 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! πβ¨
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.