{"id":31967634,"url":"https://github.com/limcheekin/mcp-proxy-to-api-nocode","last_synced_at":"2026-02-17T20:32:00.410Z","repository":{"id":299591949,"uuid":"1003441384","full_name":"limcheekin/mcp-proxy-to-api-nocode","owner":"limcheekin","description":"MCP Proxy to API without code","archived":false,"fork":false,"pushed_at":"2025-06-20T07:01:00.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-14T18:29:10.394Z","etag":null,"topics":["mcp-proxy-server","mcp-server","nocode"],"latest_commit_sha":null,"homepage":"","language":null,"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/limcheekin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-17T06:46:46.000Z","updated_at":"2025-07-02T12:26:37.000Z","dependencies_parsed_at":"2025-06-17T10:33:18.365Z","dependency_job_id":"6744968e-d7c2-48f2-b795-7ea3cb230739","html_url":"https://github.com/limcheekin/mcp-proxy-to-api-nocode","commit_stats":null,"previous_names":["limcheekin/nocode-api-to-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/limcheekin/mcp-proxy-to-api-nocode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limcheekin%2Fmcp-proxy-to-api-nocode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limcheekin%2Fmcp-proxy-to-api-nocode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limcheekin%2Fmcp-proxy-to-api-nocode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limcheekin%2Fmcp-proxy-to-api-nocode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/limcheekin","download_url":"https://codeload.github.com/limcheekin/mcp-proxy-to-api-nocode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limcheekin%2Fmcp-proxy-to-api-nocode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29557242,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T20:14:27.083Z","status":"ssl_error","status_checked_at":"2026-02-17T20:14:26.018Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["mcp-proxy-server","mcp-server","nocode"],"created_at":"2025-10-14T18:29:08.566Z","updated_at":"2026-02-17T20:31:55.401Z","avatar_url":"https://github.com/limcheekin.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCP Proxy to API NoCode\n\nA Docker Compose solution that exposes the [Fabric AI](https://github.com/danielmiessler/fabric) REST API through the [MCP Access Point](https://github.com/sxhxliang/mcp-access-point) protocol conversion gateway, enabling MCP clients like Cursor Desktop to interact with Fabric's AI pattern management capabilities.\n\n## 🚀 Overview\n\nThis project provides a no-code solution for converting Fabric's REST API into MCP (Model Context Protocol) compatible services. It combines:\n\n- **Fabric Main REST API**: The comprehensive AI pattern management system by Daniel Miessler\n- **MCP Access Point**: A protocol conversion gateway that converts HTTP services to MCP services for MCP clients\n\n## 🛠 Architecture\n\n```mermaid\ngraph TD\n    A[MCP Clients\u003cbr/\u003eCursor Desktop, MCP Inspector] --\u003e |SSE/Streamable HTTP| B[MCP Access Point :9999]\n    B --\u003e |HTTP Requests| C[Fabric REST API :9991]\n    C --\u003e D[AI Models \u0026 Patterns]\n    \n    E[OpenAPI Spec] --\u003e B\n    F[Config Files] --\u003e B\n    G[Docker Volumes] --\u003e C\n```\n\n## 📦 Components\n\n### Fabric Service\n- **Port**: 9991 (mapped from internal 8080)\n- **Purpose**: Core AI pattern management and LLM interaction\n- **Features**:\n  - Chat completions with various LLM providers\n  - Pattern management (create, read, update, delete)\n  - Session management for conversation history\n  - Context management for additional data\n  - Configuration management\n\n### MCP Access Point\n- **Port**: 9999 (mapped from internal 8080)\n- **Purpose**: Protocol conversion gateway (HTTP → MCP)\n- **Features**:\n  - Converts HTTP services to MCP-compatible services\n  - Supports SSE and Streamable HTTP protocols for MCP clients\n  - Multi-tenancy support for multiple services\n  - OpenAPI specification integration\n  - Load balancing and routing capabilities\n\n## 🔧 Configuration Files\n\n### `config.yaml`\nMain configuration for the MCP Access Point service:\n- **MCP Services**: Defines services accessible via MCP protocol\n- **Upstream Services**: Backend HTTP service configuration\n- **Routing**: Maps MCP operations to HTTP endpoints\n- **Headers**: Authentication and request header management\n\n### `docker-compose.yaml`\nOrchestrates both services with:\n- **Service Dependencies**: Proper startup order and networking\n- **Volume Mounts**: Persistent data storage for configurations and patterns\n- **Environment Variables**: Secure API key management\n- **Port Mappings**: External access configuration\n\n### `config/fabric/openapi.json`\nOpenAPI 3.0 specification defining Fabric's REST API endpoints that will be converted to MCP operations.\n\n## 🚀 Quick Start\n\n### Prerequisites\n- Docker and Docker Compose installed\n- API key for Fabric service\n\n### Installation\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/limcheekin/mcp-proxy-to-api-nocode.git\n   cd mcp-proxy-to-api-nocode\n   ```\n\n2. **Set your Fabric API key**:\n   ```bash\n   export FABRIC_API_KEY=your_actual_api_key_here\n   ```\n   \n   Or edit the `docker-compose.yaml` file and replace `your_fabric_key_here` with your actual API key.\n\n3. **Update the proxy configuration**:\n   Edit `config.yaml` and replace `your_fabric_key_here` in the upstreams section:\n   ```yaml\n   upstreams:\n     - id: 1\n       headers:\n         X-API-Key: \"your_actual_api_key_here\"\n       nodes:\n         \"fabric:8080\": 1\n   ```\n\n4. **Start the services**:\n   ```bash\n   docker-compose up -d\n   ```\n\n5. **Verify the deployment**:\n   ```bash\n   # Check service status\n   docker-compose ps\n   \n   # Test with MCP Inspector\n   npx @modelcontextprotocol/inspector\n   # Connect to: http://localhost:9999/sse (SSE) or http://localhost:9999/mcp/ (Streamable HTTP)\n   ```\n\n## 📋 MCP Client Usage\n\n### Supported MCP Clients\n- **Cursor Desktop**: Configure MCP server with `http://localhost:9999/sse`\n- **MCP Inspector**: Use for debugging and testing MCP operations\n\n### Connection Endpoints\n- **SSE Protocol**: `http://localhost:9999/sse`\n- **Streamable HTTP**: `http://localhost:9999/mcp/`\n- **Service-specific**: `http://localhost:9999/api/fabric/sse` or `http://localhost:9999/api/fabric/mcp/`\n\n### MCP Operations Available\nBased on the Fabric API, available MCP operations include:\n- **Chat Operations**: Interact with AI models through chat completions\n- **Pattern Management**: Create, read, update, and delete AI patterns\n- **Session Management**: Manage conversation sessions\n- **Context Management**: Handle additional context data\n\n## 🔧 Configuration Examples\n\n### Basic config.yaml Structure\n```yaml\nmcps:\n  - id: fabric\n    upstream_id: 1\n    path: config/fabric/openapi.json\n\nupstreams:\n  - id: 1\n    headers:\n      X-API-Key: \"your_fabric_api_key\"\n    nodes:\n      \"fabric:8080\": 1\n    scheme: http\n```\n\n### Multi-service Configuration\n```yaml\nmcps:\n  - id: fabric-main\n    upstream_id: 1\n    path: config/fabric/openapi.json\n  - id: fabric-patterns\n    upstream_id: 1\n    routes:\n      - id: 1\n        operation_id: list_patterns\n        uri: /patterns/names\n        method: GET\n        meta:\n          name: List Available Patterns\n          description: Get all available AI patterns\n\nupstreams:\n  - id: 1\n    headers:\n      X-API-Key: \"your_fabric_api_key\"\n    nodes:\n      \"fabric:8080\": 1\n    type: roundrobin\n    scheme: http\n```\n\n## 🔒 Security\n\n### API Key Authentication\nConfigure API keys in the upstreams section of `config.yaml`:\n```yaml\nupstreams:\n  - id: 1\n    headers:\n      X-API-Key: \"your_fabric_api_key\"\n      Authorization: \"Bearer your_token\"\n```\n\n### Network Security\n- MCP clients connect via SSE or Streamable HTTP protocols\n- Internal Docker networking for service communication\n- Configurable headers for upstream authentication\n\n## 📊 Monitoring and Debugging\n\n### Using MCP Inspector\n```bash\n# Start MCP Inspector for debugging\nnpx @modelcontextprotocol/inspector\n\n# Access at http://localhost:6274/\n# Connect to your MCP Access Point:\n# - SSE: http://localhost:9999/sse\n# - Streamable HTTP: http://localhost:9999/mcp/\n```\n\n### Service Health Checks\n```bash\n# Check container status\ndocker-compose ps\n\n# View logs\ndocker-compose logs fabric\ndocker-compose logs mcp-access-point\n\n# Test direct Fabric API\ncurl http://localhost:9991/patterns/names -H \"X-API-Key: your_api_key\"\n```\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n1. **MCP Client Connection Failures**:\n   - Verify MCP Access Point is running on port 9999\n   - Check that the correct protocol endpoint is used (SSE vs Streamable HTTP)\n   - Ensure OpenAPI specification is properly loaded\n\n2. **Authentication Errors**:\n   - Verify API keys are correctly configured in both services\n   - Check that upstream headers are properly set in config.yaml\n\n3. **Service Communication Issues**:\n   - Ensure Fabric service is accessible from MCP Access Point\n   - Verify Docker networking and port configurations\n\n### Debug Commands\n```bash\n# Check MCP Access Point configuration\ndocker-compose exec mcp-access-point cat /app/config/config.yaml\n\n# Test upstream connectivity\ndocker-compose exec mcp-access-point wget -O- http://fabric:8080/patterns/names\n\n# Restart with fresh configuration\ndocker-compose down \u0026\u0026 docker-compose up -d\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/new-feature`\n3. Commit your changes: `git commit -am 'Add new feature'`\n4. Push to the branch: `git push origin feature/new-feature`\n5. Submit a pull request\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [Daniel Miessler](https://github.com/danielmiessler) for the [Fabric](https://github.com/danielmiessler/fabric) project\n- [sxhxliang](https://github.com/sxhxliang) for the [MCP Access Point](https://github.com/sxhxliang/mcp-access-point) protocol converter\n- [Cloudflare](https://github.com/cloudflare) for the [Pingora](https://github.com/cloudflare/pingora) framework\n\n## 📚 Additional Resources\n\n- [Model Context Protocol Specification](https://spec.modelcontextprotocol.io/)\n- [Fabric Documentation](https://github.com/danielmiessler/fabric)\n- [MCP Access Point Documentation](https://github.com/sxhxliang/mcp-access-point)\n- [Cursor MCP Integration Guide](https://docs.cursor.com/context/model-context-protocol)\n\n---\n\n**Note**: This setup converts Fabric's REST API into MCP-compatible services for use with MCP clients like Cursor Desktop. Replace API keys with your actual values before deployment.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimcheekin%2Fmcp-proxy-to-api-nocode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimcheekin%2Fmcp-proxy-to-api-nocode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimcheekin%2Fmcp-proxy-to-api-nocode/lists"}