{"id":29885908,"url":"https://github.com/duyet/duyet-mcp-server","last_synced_at":"2026-05-28T18:30:55.921Z","repository":{"id":301689984,"uuid":"1009972866","full_name":"duyet/duyet-mcp-server","owner":"duyet","description":"Remote MCP for duyet.net","archived":false,"fork":false,"pushed_at":"2026-05-22T18:43:17.000Z","size":8439,"stargazers_count":2,"open_issues_count":12,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-22T21:57:22.949Z","etag":null,"topics":["mcp-server","remote-mcp-server"],"latest_commit_sha":null,"homepage":"https://mcp.duyet.net","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/duyet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-28T04:37:39.000Z","updated_at":"2026-02-08T18:03:08.000Z","dependencies_parsed_at":"2025-07-15T12:30:44.829Z","dependency_job_id":"2bc3c57a-d263-41be-baf1-6b4e4b431e95","html_url":"https://github.com/duyet/duyet-mcp-server","commit_stats":null,"previous_names":["duyet/duyet-mcp-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/duyet/duyet-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fduyet-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fduyet-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fduyet-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fduyet-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duyet","download_url":"https://codeload.github.com/duyet/duyet-mcp-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fduyet-mcp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33622066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-server","remote-mcp-server"],"created_at":"2025-07-31T16:03:04.364Z","updated_at":"2026-05-28T18:30:55.887Z","avatar_url":"https://github.com/duyet.png","language":"TypeScript","funding_links":[],"categories":["Other Tools and Integrations"],"sub_categories":["How to Submit"],"readme":"# duyet-mcp-server\n\n[![CI/CD Pipeline](https://github.com/duyet/duyet-mcp-server/workflows/CI/CD%20Pipeline/badge.svg)](https://github.com/duyet/duyet-mcp-server/actions)\n[![codecov](https://codecov.io/gh/duyet/duyet-mcp-server/branch/master/graph/badge.svg)](https://codecov.io/gh/duyet/duyet-mcp-server)\n[![Security](https://github.com/duyet/duyet-mcp-server/workflows/Security%20and%20Dependencies/badge.svg)](https://github.com/duyet/duyet-mcp-server/actions)\n\nAn experimental [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that helps AI assistants connect to and retrieve information about duyet. This server provides access to information primarily available at [https://duyet.net](https://duyet.net), making it available directly to your AI assistant.\n\nUsage: Update MCP server configuration in your AI assistant:\n\n```json\n{\n  \"mcpServers\": {\n    \"duyet-mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https://mcp.duyet.net/sse\"\n      ]\n    }\n  }\n}\n```\n\nIf you are using Claude Code:\n\n```bash\nclaude mcp add --transport http duyet https://mcp.duyet.net/mcp\n```\n\nEndpoints:\n- https://mcp.duyet.net/sse\n- https://mcp.duyet.net/mcp\n\n![](./.github/screenshots/screenshot-1.png)\n![](./.github/screenshots/screenshot-2.png)\n![](./.github/screenshots/screenshot-3.png)\n![](./.github/screenshots/screenshot-4.png)\n![](./.github/screenshots/screenshot-5.png)\n![](./.github/screenshots/screenshot-6.png)\n![](./.github/screenshots/screenshot-7.png)\n\n## About This Project\n\nThis is a **study, demo, and experimental project** designed to explore MCP capabilities. The project serves as a learning exercise in building remote MCP servers and is mostly written by LLM as well.\n\n**Purpose**: Enable AI assistants to access and retrieve information about duyet's work, projects, and content that would otherwise require manual web browsing.\n\n## Deploy to Cloudflare Workers\n\n[![Deploy to Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/duyet/duyet-mcp-server)\n\nThis will deploy your MCP server to a URL like: `duyet-mcp-server.\u003cyour-account\u003e.workers.dev/sse`\n\n\nAlternatively, you can clone and deploy using the command line:\n\n```bash\ngit clone https://github.com/duyet/duyet-mcp-server\ncd duyet-mcp-server\nnpm install\nnpm run deploy\n```\n\n## Customizing Your MCP Server\n\nTo add your own [tools](https://developers.cloudflare.com/agents/model-context-protocol/tools/) to the MCP server, define each tool inside the `init()` method of `src/index.ts` using `this.server.tool(...)`. \n\n### Connect to Cloudflare AI Playground\n\nYou can test your MCP server using the Cloudflare AI Playground:\n\n1. Go to https://playground.ai.cloudflare.com/\n2. Enter your deployed MCP server URL (`duyet-mcp-server.\u003cyour-account\u003e.workers.dev/sse` or `duyet-mcp-server.\u003cyour-account\u003e.workers.dev/mcp`)\n3. You can now use the duyet information tools directly from the playground!\n\n### Connect Claude Desktop to Your MCP Server\n\nYou can connect to your remote MCP server from Claude Desktop using the [mcp-remote proxy](https://www.npmjs.com/package/mcp-remote). \n\nTo connect from Claude Desktop, follow [Anthropic's Quickstart](https://modelcontextprotocol.io/quickstart/user) and go to Settings \u003e Developer \u003e Edit Config.\n\nUpdate with this configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"duyet-info\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https://duyet-mcp-server.\u003cyour-account\u003e.workers.dev/sse\"\n      ]\n    }\n  }\n}\n```\n\nYou should see the duyet-mcp information tools become available.\n\n# Available Resources and Tools\n\nThis MCP server exposes both **Resources** (read-only data access via URIs) and **Tools** (interactive functions with parameters). Resources are automatically discovered by Claude Chat for natural conversation flow, while tools are used for actions that require user input.\n\n## Resources\nResources provide read-only access to information through URI-based requests. These are automatically discoverable by Claude Chat.\n\n### Core Information Resources\n- **`duyet://about`** - Basic information about Duyet with dynamically calculated years of experience\n- **`duyet://cv/{format}`** - CV/resume with format parameters:\n  - `duyet://cv/summary` - Brief CV overview\n  - `duyet://cv/detailed` - Comprehensive CV information  \n  - `duyet://cv/json` - Structured CV data (when available)\n\n### Content Resources\n- **`duyet://blog/posts/{limit}`** - Latest blog posts from Duyet's technical blog\n  - `duyet://blog/posts/1` - Latest blog post\n  - `duyet://blog/posts/5` - Latest 5 blog posts (limit: 1-10)\n- **`duyet://github-activity`** - Recent GitHub contributions and activity\n\n## Tools\nTools provide interactive functionality with input parameters and side effects.\n\n### Core Information Tools\n- **`get_cv`** - Retrieve Duyet's CV (curriculum vitae) in different formats - summary, detailed, or JSON format\n- **`get_about_duyet`** - Get basic information about Duyet including experience, skills, and contact links\n\n### Content Tools\n- **`get_blog_posts`** - Get a list of blog posts from blog.duyet.net in JSON format (1-20 posts)\n- **`get_blog_post_content`** - Get the full content of a specific blog post by URL, including title, content, and metadata (author, publish date, tags)\n- **`get_github_activity`** - Retrieve Duyet's recent GitHub activity including commits, issues, pull requests, releases, and other public events. View up to 20 recent activities with optional detailed information\n\n### Interaction Tools\n- **`send_message`** - Send a message to Duyet for collaboration, job opportunities, consulting, or general inquiries. Messages are saved with a reference ID for follow-up\n- **`hire_me`** - Get information about hiring Duyet for various roles - full-time, contract, consulting, or part-time positions. Includes expertise, experience, and next steps\n- **`say_hi`** - Send a friendly greeting to Duyet with an optional personal message. Get contact information and connection links\n\n### Management Tools\n- **`contact_analytics`** - Generate analytics reports on contact submissions including summary statistics, purpose breakdown, daily trends, and recent activity patterns\n\n## Claude Chat Examples\n\nHere are examples of natural conversation flows using this MCP server:\n\n### Learning About Duyet\n\n```\nUser: Who is Duyet and what does he do?\n\nClaude: [Automatically accesses duyet://about resource]\nDuyet is a Data Engineer with 8 years of experience. He is confident in his knowledge of Data Engineering concepts, best practices and state-of-the-art data and Cloud technologies. You can check out his blog at https://blog.duyet.net, his CV at https://duyet.net/cv, and his projects at https://github.com/duyet.\n\nUser: What has he been writing about lately?\n\nClaude: [Automatically accesses duyet://blog/posts/3 resource]  \nHis latest blog posts include topics on data engineering, cloud technologies, and distributed systems. Would you like me to show you more details about any specific post?\n\nUser: What's he working on currently?\n\nClaude: [Automatically accesses duyet://github-activity resource]\nBased on his recent GitHub activity, Duyet has been working on MCP server implementations, data pipeline projects, and contributing to open source tools for data engineering.\n```\n\n### Hiring and Collaboration\n\n```\nUser: I'm looking to hire a data engineer. Can you help me contact Duyet?\n\nClaude: I can help you send a message to Duyet using the send_message tool. What type of opportunity is this?\n\nUser: It's a full-time position at our startup working with Kafka and Spark\n\nClaude: [Uses send_message tool]\nWhat would you like to say in your message to Duyet? I'll make sure to include that this is about a full-time position with Kafka and Spark technologies.\n\nUser: Hi Duyet, we're a Series A startup building real-time data platforms. We'd love to discuss a Senior Data Engineer role working with Kafka, Spark, and cloud infrastructure. Remote-friendly position with competitive equity.\n\nClaude: [Executes send_message tool with the message]\nYour message has been sent successfully! Here's your reference ID: abc-123-def for follow-up. Duyet can be reached directly at me@duyet.net, LinkedIn: https://linkedin.com/in/duyet, or GitHub: https://github.com/duyet.\n```\n\n### Technical Research\n\n```\nUser: I want to understand Duyet's technical background before our interview\n\nClaude: [Automatically accesses duyet://cv/detailed resource]\nBased on Duyet's detailed CV, he has 8 years of experience in data engineering with expertise in Apache Spark, Kafka, cloud platforms, and distributed systems. His experience includes building scalable data pipelines and working with modern data stack technologies.\n\nUser: Can you show me some of his recent technical work?\n\nClaude: [Automatically accesses duyet://github-activity resource]\nHis recent GitHub activity shows contributions to data engineering projects, MCP server implementations, and open source tools. He's been actively working on distributed systems and cloud-native data solutions.\n\nUser: What kind of content does he write about?\n\nClaude: [Automatically accesses duyet://blog/posts/5 resource]\nHis technical blog covers topics like building scalable data pipelines, modern data engineering best practices, cloud technologies, and distributed systems architecture.\n```\n\n## Natural Discovery Pattern\n\nThe key advantage of this MCP server design is that Claude Chat can naturally discover and reference information through resources, making conversations more fluid:\n\n1. **Information Questions** → **Automatic Resource Access**\n   - \"Who is Duyet?\" → `duyet://about`\n   - \"What's his experience?\" → `duyet://cv/detailed`\n   - \"What's he writing about?\" → `duyet://blog/posts/3`\n   - \"What's he working on?\" → `duyet://github-activity`\n\n2. **Action Requests** → **Interactive Tools**\n   - \"I want to contact him\" → `send_message` tool\n   - \"Can you send him a greeting?\" → `say_hi` tool\n   - \"Get his resume\" → `get_cv` tool\n\n3. **Progressive Disclosure**\n   - Start with general questions\n   - Drill down into specific areas\n   - Take actions when ready\n\n\n## Architecture\n\n- **Framework**: Hono.js running on Cloudflare Workers\n- **Database**: Cloudflare D1 with Drizzle ORM\n- **Testing**: Jest with comprehensive test coverage\n- **Linting**: Biome for code quality\n- **Type Safety**: TypeScript with strict configuration\n\n## License\n\nMIT License - see LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduyet%2Fduyet-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduyet%2Fduyet-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduyet%2Fduyet-mcp-server/lists"}