Sponsored by Deepsite.site

GitHub Issue Searcher MCP 🚀

创建者
calumjsa year ago
🔍 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 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

  1. Clone the repository

    git clone https://github.com/calumjs/github-issue-searcher-mcp.git
    cd github-issue-searcher-mcp
    
  2. 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
    
  3. Install dependencies

    pip install -r requirements.txt
    
  4. Set up environment variables Create a .env file in the faiss_mcp_server directory:

    OPENAI_API_KEY=your_openai_api_key_here
    GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token_here  # Optional
    
  5. 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
    
  6. 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

VariableDescriptionRequired
OPENAI_API_KEYYour OpenAI API key for embeddings✅ Yes
GITHUB_PERSONAL_ACCESS_TOKENGitHub 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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests if applicable
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. 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:

  1. Check the Issues page
  2. Create a new issue with detailed information
  3. Include logs and error messages when possible

Made with ❤️ for the GitHub community

Happy issue searching! 🔍✨

推荐的 MCP Server
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
WindsurfThe new purpose-built IDE to harness magic
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
Serper MCP ServerA Serper MCP Server
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
Playwright McpPlaywright MCP server
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.
RedisA Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
Tavily Mcp
CursorThe AI Code Editor
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
DeepChatYour AI Partner on Desktop
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
ChatWiseThe second fastest AI chatbot™
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
Amap Maps高德地图官方 MCP Server
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.