{"id":35888770,"url":"https://github.com/JerrettDavis/McpManager","last_synced_at":"2026-01-15T10:00:37.341Z","repository":{"id":332088505,"uuid":"1128731446","full_name":"JerrettDavis/McpManager","owner":"JerrettDavis","description":"Manage your MCP Servers for all your agents in one place!","archived":false,"fork":false,"pushed_at":"2026-01-13T05:07:05.000Z","size":1628,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T21:20:50.779Z","etag":null,"topics":["ai","claude","claude-ai","claude-code","codex","copilot","mcp","mcp-server","mcp-servers"],"latest_commit_sha":null,"homepage":"https://jerrettdavis.github.io/McpManager/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JerrettDavis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-06T04:31:04.000Z","updated_at":"2026-01-13T05:07:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JerrettDavis/McpManager","commit_stats":null,"previous_names":["jerrettdavis/mcpmanager"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/JerrettDavis/McpManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FMcpManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FMcpManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FMcpManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FMcpManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JerrettDavis","download_url":"https://codeload.github.com/JerrettDavis/McpManager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FMcpManager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28449035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T09:25:53.698Z","status":"ssl_error","status_checked_at":"2026-01-15T09:25:52.439Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude","claude-ai","claude-code","codex","copilot","mcp","mcp-server","mcp-servers"],"created_at":"2026-01-09T02:00:35.821Z","updated_at":"2026-01-15T10:00:37.137Z","avatar_url":"https://github.com/JerrettDavis.png","language":"C#","funding_links":[],"categories":["Tools"],"sub_categories":["AI Coding Tool"],"readme":"# MCP Manager\n\n[![CI](https://github.com/JerrettDavis/McpManager/actions/workflows/ci.yml/badge.svg)](https://github.com/JerrettDavis/McpManager/actions/workflows/ci.yml)\n[![CodeQL](https://github.com/JerrettDavis/McpManager/actions/workflows/codeql.yml/badge.svg)](https://github.com/JerrettDavis/McpManager/actions/workflows/codeql.yml)\n[![codecov](https://codecov.io/gh/JerrettDavis/McpManager/branch/main/graph/badge.svg)](https://codecov.io/gh/JerrettDavis/McpManager)\n![.NET 10.0](https://img.shields.io/badge/.NET-10.0-512BD4?style=flat\u0026logo=dotnet)\n![Blazor](https://img.shields.io/badge/Blazor-512BD4?style=flat\u0026logo=blazor)\n[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n[![Release](https://img.shields.io/github/v/release/JerrettDavis/McpManager)](https://github.com/JerrettDavis/McpManager/releases)\n[![Docker](https://img.shields.io/badge/docker-ghcr.io-blue?logo=docker)](https://github.com/JerrettDavis/McpManager/pkgs/container/mcpmanager)\n\nMCP Manager is a dashboard for discovering, installing, and managing Model Context Protocol servers across multiple AI agents.\n\n## Features\n\n- Browse and search MCP servers from registries\n- One-click server installation and management\n- Multi-agent support (Claude Desktop, GitHub Copilot, etc.)\n- Unified dashboard for all servers and agents\n- Bulk agent management with checkbox selection\n- Plugin-based architecture for extensibility\n- Docker support for containerized deployment\n- Comprehensive unit test coverage\n\n## Architecture\n\nMCP Manager follows Clean Architecture with clear separation of concerns:\n\n### Project Structure\n\n```\nMcpManager/\n├── src/\n│   ├── McpManager.Core/           # Domain models and interfaces\n│   ├── McpManager.Application/    # Business logic and services\n│   ├── McpManager.Infrastructure/ # Agent connectors and registries\n│   ├── McpManager.Web/            # Blazor Server web application\n│   └── McpManager.Desktop/        # Desktop app using Photino.Blazor\n├── tests/\n│   └── McpManager.Tests/          # Unit and integration tests\n└── docs/                          # Documentation\n```\n\n### Key Design Patterns\n\n- **Dependency Inversion**: All dependencies flow inward through interfaces\n- **Single Responsibility**: Each service handles one concern\n- **Open/Closed**: Extensible via `IAgentConnector` interface\n- **DRY (Don't Repeat Yourself)**: Shared logic in base classes and services\n\n## Quick Start\n\n### Prerequisites\n\n- [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) (for building from source)\n- One or more AI agents installed (Claude Desktop, GitHub Copilot, etc.)\n\n### Installation Options\n\n#### Windows SmartScreen Warning\n\nWindows may show a security warning when running the desktop app because it's not code-signed. Code signing certificates cost $300-500/year, which isn't practical for this open source project.\n\n**To run the app:**\n1. Click \"More info\"\n2. Click \"Run anyway\"\n\n**Why it's safe:**\n- 100% open source - audit the code yourself\n- Built by GitHub Actions - reproducible builds\n- SHA256 hashes in release notes\n- No telemetry or network calls\n\nSee [SmartScreen Warning Guide](docs/SMARTSCREEN_WARNING.md) for details.\n\n---\n\n#### Option 1: Desktop App (Recommended)\n\nThe desktop app runs as a standalone application with no browser required!\n\n**Windows:**\n1. Download the latest `mcpmanager-desktop-win-x64.zip` from [Releases](https://github.com/JerrettDavis/McpManager/releases)\n2. Extract the archive\n3. Run `McpManager.Desktop.exe`\n4. The app opens in its own window!\n\n**Linux:**\n1. Download the latest `mcpmanager-desktop-linux-x64.tar.gz` from [Releases](https://github.com/JerrettDavis/McpManager/releases)\n2. Extract: `tar -xzf mcpmanager-desktop-linux-x64.tar.gz`\n3. Make executable: `chmod +x McpManager.Desktop`\n4. Run: `./McpManager.Desktop`\n5. The app opens in its own window!\n\n#### Option 2: Server-Hosted\n\nIf you prefer the traditional server model where you open a browser:\n\n**Windows:**\n1. Download the latest `mcpmanager-server-win-x64.zip` from [Releases](https://github.com/JerrettDavis/McpManager/releases)\n2. Extract the archive\n3. Run `McpManager.Web.exe`\n4. Navigate to http://localhost:5000\n\n**Linux:**\n1. Download the latest `mcpmanager-server-linux-x64.tar.gz` from [Releases](https://github.com/JerrettDavis/McpManager/releases)\n2. Extract: `tar -xzf mcpmanager-server-linux-x64.tar.gz`\n3. Make executable: `chmod +x McpManager.Web`\n4. Run: `./McpManager.Web`\n5. Navigate to http://localhost:5000\n\n#### Option 3: Docker\n\n```bash\n# Pull and run the latest image\ndocker pull ghcr.io/jerrettdavis/mcpmanager:latest\ndocker run -p 8080:8080 ghcr.io/jerrettdavis/mcpmanager:latest\n\n# Navigate to http://localhost:8080\n```\n\n#### Option 4: Build from Source\n\n```bash\ngit clone https://github.com/JerrettDavis/McpManager.git\ncd McpManager\ndotnet restore\ndotnet run --project src/McpManager.Web\n# Navigate to https://localhost:5001\n```\n\n## Usage\n\n### Dashboard\n\nThe main dashboard shows installed servers, detected agents, and active installations.\n\n### Browse Servers\n\nNavigate to Browse Servers to search and install MCP servers from registries.\n\n### Manage Agents\n\n1. Select an agent to view configured servers\n2. Use checkboxes to enable/disable servers\n3. Use bulk operations to add/remove servers from multiple agents\n4. Click Remove to uninstall a server from an agent\n\n## Testing\n\n```bash\ndotnet test\ndotnet test /p:CollectCoverage=true  # with coverage\n```\n\n## Supported Agents\n\n- Claude Desktop\n- GitHub Copilot (VS Code)\n- Custom agents via `IAgentConnector` interface\n\n## Development\n\n### Adding a New Agent Connector\n\n1. Create a new class implementing `IAgentConnector`:\n\n```csharp\npublic class MyAgentConnector : IAgentConnector\n{\n    public AgentType AgentType =\u003e AgentType.Other;\n    \n    public Task\u003cbool\u003e IsAgentInstalledAsync() { /* ... */ }\n    public Task\u003cstring\u003e GetConfigurationPathAsync() { /* ... */ }\n    // Implement other interface methods\n}\n```\n\n2. Register in `Program.cs`:\n\n```csharp\nbuilder.Services.AddSingleton\u003cIAgentConnector, MyAgentConnector\u003e();\n```\n\n### Adding a New Registry\n\nImplement `IServerRegistry` to connect to npm, GitHub, or custom registries:\n\n```csharp\npublic class NpmRegistry : IServerRegistry\n{\n    public string Name =\u003e \"npm MCP Registry\";\n    public Task\u003cIEnumerable\u003cServerSearchResult\u003e\u003e SearchAsync(string query) { /* ... */ }\n    // Implement other interface methods\n}\n```\n\n## Building for Production\n\n### Build Executable\n\n```bash\n# Windows\ndotnet publish -c Release -r win-x64 --self-contained\n\n# macOS\ndotnet publish -c Release -r osx-x64 --self-contained\n\n# Linux\ndotnet publish -c Release -r linux-x64 --self-contained\n```\n\n### Build Docker Image\n\n```bash\ndocker build -t mcp-manager:latest .\ndocker tag mcp-manager:latest your-registry/mcp-manager:latest\ndocker push your-registry/mcp-manager:latest\n```\n\n## Contributing\n\nContributions welcome. Fork the repository, create a feature branch, and submit a pull request.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file.\n\n## Acknowledgments\n\nBuilt with Blazor and Bootstrap. Implements the [Model Context Protocol](https://modelcontextprotocol.io/).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJerrettDavis%2FMcpManager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJerrettDavis%2FMcpManager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJerrettDavis%2FMcpManager/lists"}