{"id":46431020,"url":"https://github.com/wei/mymlh-mcp-server","last_synced_at":"2026-03-05T18:11:45.968Z","repository":{"id":313455312,"uuid":"1051485236","full_name":"wei/mymlh-mcp-server","owner":"wei","description":"Model Context Protocol Server for MyMLH API v4","archived":false,"fork":false,"pushed_at":"2025-11-28T22:00:36.000Z","size":771,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-01T00:48:29.862Z","etag":null,"topics":["cloudflare-worker","mcp","mcp-server","mlh","mymlh","oauth"],"latest_commit_sha":null,"homepage":"https://mymlh-mcp.git.ci","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-09-06T05:02:25.000Z","updated_at":"2025-11-28T22:00:38.000Z","dependencies_parsed_at":"2025-09-06T07:22:52.943Z","dependency_job_id":"8c3465cc-14d0-42ea-bc71-ab00b235a8ca","html_url":"https://github.com/wei/mymlh-mcp-server","commit_stats":null,"previous_names":["wei/mymlh-mcp-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wei/mymlh-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wei%2Fmymlh-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wei%2Fmymlh-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wei%2Fmymlh-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wei%2Fmymlh-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wei","download_url":"https://codeload.github.com/wei/mymlh-mcp-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wei%2Fmymlh-mcp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30141716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T16:58:46.102Z","status":"ssl_error","status_checked_at":"2026-03-05T16:58:45.706Z","response_time":93,"last_error":"SSL_read: 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":["cloudflare-worker","mcp","mcp-server","mlh","mymlh","oauth"],"created_at":"2026-03-05T18:11:44.671Z","updated_at":"2026-03-05T18:11:45.936Z","avatar_url":"https://github.com/wei.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![mymlh-mcp-server](https://socialify.git.ci/wei/mymlh-mcp-server/image?description=1\u0026font=Bitter\u0026logo=https%3A%2F%2Fstatic.mlh.io%2Fbrand-assets%2Flogo%2Fofficial%2Fmlh-logo-color.svg\u0026name=1\u0026theme=Light)\n\n[![Remote HTTP MCP Server](https://img.shields.io/badge/MCP-Streamable_HTTP-000000?logo=modelcontextprotocol\u0026logoColor=white)](https://modelcontextprotocol.io/docs/concepts/transports#http-streaming)\n[![Built for MyMLH](https://img.shields.io/badge/Built_for-MyMLH-E73427?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8xIiB4PSIwIiB5PSIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjgwIDQ4MC43NCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTI4MCA0ODAuNzQiPjxzdHlsZT4uc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I2ZmZn08L3N0eWxlPjxwYXRoIGlkPSJTaGFwZV8wMDAwMDAzMzMzOTA1MDQ4NDMzMDU1ODk5MDAwMDAwNjAxOTE2MzA0MDkwNTA5Nzg4NF8iIGQ9Ik00MTYuNDUgMzIuOThjOC4yOCAzLjYgMTUuNDggOC42NCAyMS42IDE0Ljc2IDYuMTIgNi4xMiAxMC44IDEzLjMyIDE0Ljc2IDIxLjYgMy42IDguMjggNS40IDE3LjI4IDUuNCAyNi42NHYzNDEuMjdjMCAzLjI0LTEuMDggNS43Ni0zLjI0IDcuOTJzLTQuNjggMy4yNC03LjkyIDMuMjRoLTgxLjcyYy0zLjI0IDAtNS43Ni0xLjA4LTcuNTYtMy4yNHMtMi44OC00LjY4LTIuODgtNy45MlYxMjYuOTNoLTY1Ljg4djMxMC4zMWMwIDMuMjQtMS4wOCA1Ljc2LTIuODggNy45MnMtNC42OCAzLjI0LTcuNTYgMy4yNGgtNzQuMTZjLTMuMjQgMC01Ljc2LTEuMDgtNy45Mi0zLjI0cy0zLjI0LTQuNjgtMy4yNC03LjkyVjEyNi45M2gtNjUuODh2MzEwLjMxYzAgNy41Ni0zLjYgMTEuMTYtMTEuMTYgMTEuMTZoLTgxYy03LjU2IDAtMTEuMTYtMy42LTExLjE2LTExLjE2VjM4Ljc0YzAtNy41NiAzLjYtMTEuMTYgMTEuMTYtMTEuMTZoMzU0LjIzYzkuNzMgMCAxOC4zNyAxLjggMjcuMDEgNS40eiIgY2xhc3M9InN0MCIvPjxwYXRoIGlkPSJTaGFwZV8wMDAwMDE2NTkzNzc4NTYzNDc0MjEzMDgxMDAwMDAwMzU1ODM2MzY0NzQ2NjQ1OTU0M18iIGQ9Ik04MTQuMjMgMzQ2LjE3YzMuMjQgMCA2LjEyIDEuMDggNy45MiAzLjI0IDIuMTYgMi4xNiAzLjI0IDUuMDQgMy4yNCA4LjI4djc5LjU2YzAgMy4yNC0xLjA4IDUuNzYtMy4yNCA4LjI4LTIuMTYgMi4xNi00LjY4IDMuMjQtNy45MiAzLjI0SDUzNC41MmMtNy45MiAwLTExLjg4LTMuOTYtMTEuODgtMTEuNTJWMzkuMWMwLTcuNTYgMy45Ni0xMS41MiAxMS44OC0xMS41Mmg4NS42OGM3LjkyIDAgMTEuODggMy45NiAxMS44OCAxMS41MnYyOTYuNjNjMCAzLjI0IDEuMDggNS43NiAzLjYgNy45MiAyLjE2IDIuMTYgNS4wNCAyLjg4IDguMjggMi44OGgxNzAuMjd2LS4zNnoiIGNsYXNzPSJzdDAiLz48cGF0aCBpZD0iU2hhcGVfMDAwMDAxMDM5NTIxOTc1MzE2MzEzMjUyOTAwMDAwMDUxOTk2NzQ2NzgxNDM5NDUxNDRfIiBkPSJNMTI0NC4wNSAyNy41OGMzLjI0IDAgNi4xMiAxLjA4IDguMjggMy4yNCAyLjE2IDIuMTYgMy42IDUuMDQgMy42IDguMjh2Mzk5LjIyYzAgMy4yNC0xLjA4IDUuNzYtMy42IDguMjgtMi4xNiAyLjE2LTUuMDQgMy4yNC04LjI4IDMuMjRoLTg3LjEyYy0zLjI0IDAtNi4xMi0xLjA4LTguMjgtMy4yNC0yLjE2LTIuMTYtMy42LTUuMDQtMy42LTguMjhWMjk5LjAxYzAtMy4yNC0xLjA4LTUuNzYtMy4yNC03Ljkycy00LjY4LTIuODgtOC4yOC0yLjg4SDEwMTEuNWMtMy4yNCAwLTYuMTIgMS4wOC04LjI4IDIuODgtMi4xNiAyLjE2LTMuNiA0LjY4LTMuNiA3LjkydjEzOS4zMWMwIDcuNTYtMy45NiAxMS41Mi0xMS44OCAxMS41MmgtODYuNGMtNy45MiAwLTExLjg4LTMuOTYtMTEuODgtMTEuNTJWMzkuMWMwLTcuNTYgMy45Ni0xMS41MiAxMS44OC0xMS41Mmg4Ni40YzcuOTIgMCAxMS44OCAzLjk2IDExLjg4IDExLjUydjEzNC45OWMwIDcuNTYgMy45NiAxMS41MiAxMS44OCAxMS41MmgxMjIuMDNjMy4yNCAwIDYuMTItMS4wOCA4LjI4LTMuMjQgMi4xNi0yLjE2IDMuMjQtNS4wNCAzLjI0LTguMjhWMzkuMWMwLTMuMjQgMS4wOC01Ljc2IDMuNi04LjI4IDIuMTYtMi4xNiA1LjA0LTMuMjQgOC4yOC0zLjI0aDg3LjEyeiIgY2xhc3M9InN0MCIvPjwvc3ZnPg==)](https://my.mlh.io/)\n[![Cloudflare Workers](https://img.shields.io/badge/Cloudflare-Workers-F38020?logo=cloudflare\u0026logoColor=white)](https://developers.cloudflare.com/workers/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![Built with Hono](https://img.shields.io/badge/Built_with-Hono-E36002?logo=hono\u0026logoColor=white)](https://hono.dev/)\n[![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](https://wei.mit-license.org)\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) server that provides secure, OAuth-authenticated access to [MyMLH](https://my.mlh.io/). This server enables AI assistants and MCP clients to interact with the MyMLH API on behalf of users.\n\n## Features\n\n- **Secure Authentication**: Implements [MyMLH API v4 with OAuth](https://my.mlh.io/developers/docs) for robust and secure user authentication.\n- **User Data Access**: Provides tools to fetch a user's MyMLH profile, education, employment history, and more.\n- **Automatic Token Management**: Handles token refresh and secure storage automatically.\n- **Cloudflare Workers**: Built to run on the edge for low-latency, scalable performance.\n- **Easy Deployment**: Can be deployed to your own Cloudflare account in minutes.\n\n## Quick Start\n\nYou can connect to our publicly hosted instance using any MCP client that supports the [Streamable HTTP transport with OAuth](https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization).\n\n**Endpoint**: `https://mymlh-mcp.git.ci/mcp`\n\n### Add MCP Server\n\n[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_MCP-0098FF)](https://insiders.vscode.dev/redirect/mcp/install?name=mymlh\u0026config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmymlh-mcp.git.ci%2Fmcp%22%7D)\n[![Install in Cursor](https://img.shields.io/badge/Cursor-Install_MCP-000000)](https://cursor.com/en/install-mcp?name=mymlh\u0026config=eyJ1cmwiOiJodHRwczovL215bWxoLW1jcC5naXQuY2kvbWNwIn0%3D)\n\nExample configuration snippets for common MCP clients:\n\n**VS Code:**\n\n```json\n{\n  \"servers\": {\n    \"mymlh\": {\n      \"type\": \"http\",\n      \"url\": \"https://mymlh-mcp.git.ci/mcp\"\n    }\n  }\n}\n```\n\n**Cursor and many clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"mymlh\": {\n      \"url\": \"https://mymlh-mcp.git.ci/mcp\"\n    }\n  }\n}\n```\n\n**Windsurf and many clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"mymlh\": {\n      \"serverUrl\": \"https://mymlh-mcp.git.ci/mcp\"\n    }\n  }\n}\n```\n\n**Augment Code:**\n\n```json\n{\n  \"mcpServers\": {\n    \"mymlh\": {\n      \"url\": \"https://mymlh-mcp.git.ci/mcp\",\n      \"type\": \"http\"\n    }\n  }\n}\n```\n\n**Claude Code:**\n\n```sh\nclaude mcp add --transport http mymlh https://mymlh-mcp.git.ci/mcp\n```\n\n**Gemini CLI:**\n\n_Gemini currently only supports the deprecated SSE protocol._\n\n```json\n{\n  \"mcpServers\": {\n    \"mymlh\": {\n      \"url\": \"https://mymlh-mcp.git.ci/sse\"\n    }\n  }\n}\n```\n\n**Roo Code, Cline, KiloCode:**\n\nAlthough these clients support Streamable HTTP transport, they do not yet support the OAuth authentication flow. Please use the fallback option below. See open feature requests for [Roo Code](https://github.com/RooCodeInc/Roo-Code/issues/7296), [Cline](https://github.com/cline/cline/issues/4523).\n\nFor other clients, please consult their documentation for connecting to an MCP server. If you see 401 errors, the client likely does not support [Streamable HTTP with OAuth](https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization) and you will need to use the fallback option below.\n\n### Fallback Option\n\nFor environments where Streamable HTTP with OAuth is not supported, you may fall back to stdio transport with [`mcp-remote`](https://www.npmjs.com/package/mcp-remote). This wraps the HTTP MCP server into a local stdio interface, forwarding requests over HTTP behind the scenes to ensure compatibility.\n\nExample `mcp-remote` configuration snippet:\n\n```json\n{\n  \"mcpServers\": {\n    \"mymlh\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https://mymlh-mcp.git.ci/mcp\"\n      ]\n    }\n  }\n}\n```\n\nSee [`mcp-remote` documentation](https://www.npmjs.com/package/mcp-remote#usage) for more details on usage.\n\n## Available Tools\n\nOnce connected and authenticated, you can use the following tools:\n\n| Tool                      | Description                                                        |\n| ------------------------- | ------------------------------------------------------------------ |\n| `mymlh_get_user`          | Fetch current MyMLH user profile                                   |\n| `mymlh_get_token`         | Return current MyMLH access token details                          |\n| `mymlh_refresh_token`     | Exchange MyMLH refresh_token for a new access token and persist it |\n\n### Test with MCP Inspector\n\nYou can test the remote MCP server using the [Model Context Protocol Inspector](https://modelcontextprotocol.io/docs/tools/inspector).\n\n1.  Run the Inspector from your terminal:\n    ```bash\n    npx @modelcontextprotocol/inspector@latest\n    ```\n2.  Enter the server URL: `https://mymlh-mcp.git.ci/mcp` and click \"Connect\".\n3.  Follow the authentication flow to connect and test the tools.\n\n### Testing with Cloudflare AI Playground\n\nYou can also test the server directly using the [Cloudflare Workers AI LLM Playground](https://playground.ai.cloudflare.com/).\n\n1.  Go to the playground link.\n2.  Enter the server URL: `https://mymlh-mcp.git.ci/mcp`\n3.  Follow the authentication flow to connect and test the tools.\n\n### Example Usage\n\nYou can interact with the MyMLH MCP server using natural language in your AI assistant:\n\n- \"Get my MyMLH user info.\"\n- \"Show me my MyMLH profile.\"\n- \"Generate a resume using my MyMLH profile.\"\n- \"Create a GitHub profile README using my MyMLH data.\"\n\n## Deploying Your Own Instance\n\nFor full control, you can deploy your own instance to Cloudflare. See the [Deployment Guide](DEPLOYMENT.md) for detailed instructions.\n\n## Contributing\n\nWe welcome contributions! Whether you're fixing a bug, adding a feature, or improving documentation, your help is appreciated.\n\nFor development setup, project structure, how to add tools, and contributing guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[MIT](https://wei.mit-license.org)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwei%2Fmymlh-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwei%2Fmymlh-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwei%2Fmymlh-mcp-server/lists"}