Skip to main content
Glama
README.md•15 kB
# Unified Activity Reporting MCP Server ## šŸŽÆ Overview A unified MCP (Model Context Protocol) server that enables **both Google Developer Experts (GDEs) and Microsoft MVPs** to report their activities through AI-powered conversational interfaces. **Stop the boring manual data entry!** Just talk to Claude and submit your activities naturally - whether it's a YouTube video, blog post, conference talk, or mentoring session. ### Supported Programs - āœ… **Microsoft MVP** - Direct API integration with the MVP portal - āœ… **Google GDE** - Integration with Advocu API - šŸ”§ **Both at once** - If you're both an MVP and GDE, use one tool for everything! --- ## šŸš€ Quick Start ### Prerequisites - Node.js 18+ - Claude Desktop - At least one access token (MVP or GDE) ### Installation #### Option 1: Local Development (Recommended) ```bash git clone https://github.com/carlosazaustre/advocu-mcp-server.git cd advocu-mcp-server npm install npm run build ``` #### Option 2: Global Install ```bash npm install -g advocu-mcp-server ``` ### Configuration Edit your Claude Desktop config file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` #### For Both MVP + GDE: ```json { "mcpServers": { "activity-reporting": { "command": "node", "args": ["/absolute/path/to/advocu-mcp-server/dist/index.js"], "env": { "MVP_ACCESS_TOKEN": "your_mvp_bearer_token", "MVP_USER_PROFILE_ID": "your_mvp_profile_id", "ADVOCU_ACCESS_TOKEN": "your_gde_token", "DOCS_DIR": "/absolute/path/to/advocu-mcp-server/docs" } } } } ``` > **šŸ“š Important**: The `DOCS_DIR` environment variable is **required** for documentation tools to work. Set it to the absolute path of the `docs` directory in your installation. #### MVP Only: ```json { "mcpServers": { "activity-reporting": { "command": "node", "args": ["/absolute/path/to/dist/index.js"], "env": { "MVP_ACCESS_TOKEN": "your_mvp_bearer_token", "MVP_USER_PROFILE_ID": "your_mvp_profile_id", "DOCS_DIR": "/absolute/path/to/advocu-mcp-server/docs" } } } } ``` #### GDE Only: ```json { "mcpServers": { "activity-reporting": { "command": "node", "args": ["/absolute/path/to/dist/index.js"], "env": { "ADVOCU_ACCESS_TOKEN": "your_gde_token", "DOCS_DIR": "/absolute/path/to/advocu-mcp-server/docs" } } } } ``` ### Get Your Tokens #### Microsoft MVP Token **For Claude Desktop users only** (not Claude Code): ```bash npm run capture-mvp-token ``` This tool will: 1. **Open your default browser** to the MVP portal (you should already be logged in) 2. Show you detailed instructions to capture the token from DevTools 3. **Paste your token** when prompted 4. **Automatically update your Claude Desktop config file** with the new token 5. No browser automation detection - uses your real browser session! #### Google GDE Token Get your token from the [Advocu Developer Portal](https://advocu.com). ### Restart Claude Desktop ```bash # Quit completely Cmd+Q # macOS Alt+F4 # Windows # Then reopen Claude Desktop ``` Look for the šŸ”Ø hammer icon to confirm tools are loaded! --- ## šŸ’¬ Usage Examples Just talk to Claude naturally! Here are examples: ### Documentation Tools ``` "List available documentation" ``` ``` "Show me the MVP API reference" ``` ``` "What documentation is available?" ``` ``` "Get the error handling documentation" ``` ### Microsoft MVP Activities #### Submit a Video ``` "Submit my YouTube video to Microsoft MVP: - Title: Complete Guide to React Server Components - Published: October 9, 2025 - URL: https://youtube.com/watch?v=example - Livestream views: 12,500 - On-demand views: 12,500 - Sessions: 1 - Target audience: Developers, Technical Decision Makers - My role: Host - Tech area: Web Development - Description: A comprehensive tutorial covering React Server Components..." ``` #### Submit a Blog Post ``` "Add my latest blog post to MVP: - Title: Understanding TypeScript Generics - Date: 2025-10-01 - URL: https://myblog.com/typescript-generics - Views: 5,000 - Target audience: Developers - Role: Author - Tech area: Developer Tools" ``` #### Submit a Conference Talk ``` "Report my conference presentation to MVP: - Title: Building Scalable APIs with Node.js - Date: 2025-09-15 - URL: https://conference.com/my-talk - In-person attendees: 250 - Sessions: 1 - Target audience: Developers, IT Pros - Role: Speaker - Tech area: Cloud & AI" ``` ### Google GDE Activities ``` "Submit my workshop to my GDE profile: - Title: Advanced React Patterns Workshop - Type: Workshop - Date: 2025-08-20 - Format: Hybrid - Country: United States - In-person attendees: 50 - Total attendees: 150 - URL: https://workshop.com" ``` ``` "Create a content creation draft for my Medium article about Next.js 14" ``` ``` "Report my mentoring session with 3 developers about TypeScript best practices" ``` --- ## šŸ”§ Available Tools ### Documentation Tools (2) - Always Available | Tool | Description | Usage | |------|-------------|-------| | `list_documentation` | List all available documentation | "List available documentation" | | `get_documentation` | Get a specific documentation file | "Show me the MVP API reference" | **Available Documents:** - `api-reference` - Complete API documentation for MVP and GDE - `mvp-api-reference` - Detailed MVP API specifications - `mvp-fixes-changelog` - MVP integration fixes history - `error-handling` - Error handling improvements guide - `mcp-resources` - MCP resources usage guide > šŸ“š **Note**: Documentation tools require `DOCS_DIR` to be set in your configuration. ### Microsoft MVP Tools (3) | Tool | Description | Key Fields | |------|-------------|------------| | `submit_mvp_video` | Videos, webinars, livestreams | views, sessions, role, tech area | | `submit_mvp_blog` | Blog posts, articles | views, subscribers, tech area | | `submit_mvp_speaking` | Conference talks, presentations | attendees, sessions, tech area | ### Google GDE Tools (7) | Tool | Description | |------|-------------| | `submit_gde_content_creation` | Articles, videos, podcasts | | `submit_gde_public_speaking` | Talks and presentations | | `submit_gde_workshop` | Training sessions | | `submit_gde_mentoring` | Mentoring activities | | `submit_gde_product_feedback` | Product feedback | | `submit_gde_googler_interaction` | Google employee interactions | | `submit_gde_story` | Success stories | --- ## šŸ”„ Token Refresh ### Microsoft MVP Token (Expires: Hours/Days) Your MVP token expires regularly. When you get a 401 error or your token expires: **For Claude Desktop users:** ```bash cd /path/to/advocu-mcp-server npm run capture-mvp-token ``` **What happens:** 1. 🌐 Your default browser opens to the MVP portal 2. āœ… If you're already logged in, you'll see your account immediately 3. šŸ” If not logged in, log in with Microsoft (2FA supported) 4. šŸ› ļø Open DevTools (F12 or Cmd+Option+I) 5. šŸ“ Navigate to "Add activity" and fill any field 6. šŸ” In Network tab, find the request to `mavenapi-prod.azurewebsites.net` 7. šŸ“‹ Copy the Bearer token from the Authorization header 8. āŒØļø Paste the token in the terminal 9. āœ… **Your Claude Desktop config file is automatically updated!** 10. šŸ”„ Restart Claude Desktop **Advantages:** - āœ… Uses your real browser (no automation detection) - āœ… Works with 2FA/MFA - āœ… Automatically updates your Claude Desktop config file - āœ… Clear step-by-step instructions ### Google GDE Token (Expires: Less frequently) Get a fresh token from Advocu when needed and update your config manually. --- ## šŸ“‹ Required Fields Reference ### MVP Video Activity ```typescript { title: string; // Max 100 chars description: string; // Max 1000 chars date: string; // YYYY-MM-DD url: string; // Video URL targetAudience: string[]; // Developer, Student, IT Pro, etc. role: string; // Host, Presenter, etc. technologyFocusArea: string; liveStreamViews: number; onDemandViews: number; numberOfSessions: number; // Default: 1 isPrivate: boolean; // Optional } ``` ### MVP Blog Activity ```typescript { title: string; description: string; date: string; url: string; targetAudience: string[]; role: string; // Author, Contributor, etc. technologyFocusArea: string; numberOfViews: number; subscriberBase: number; // Optional isPrivate: boolean; // Optional } ``` ### MVP Speaking Activity ```typescript { title: string; description: string; date: string; url: string; targetAudience: string[]; role: string; // Speaker, Panelist, etc. technologyFocusArea: string; inPersonAttendees: number; numberOfSessions: number; liveStreamViews: number; // Optional onDemandViews: number; // Optional isPrivate: boolean; // Optional } ``` --- ## šŸ—ļø Project Structure ``` advocu-mcp-server/ ā”œā”€ā”€ src/ │ ā”œā”€ā”€ index.ts # Entry point │ ā”œā”€ā”€ unifiedServer.ts # Main unified server (MVP + GDE) │ ā”œā”€ā”€ server.ts # Legacy GDE-only server │ ā”œā”€ā”€ mvpServer.ts # Standalone MVP server │ ā”œā”€ā”€ interfaces/ # Activity interfaces │ │ ā”œā”€ā”€ ActivityDraftBase.ts # GDE base interface │ │ ā”œā”€ā”€ ContentCreationDraft.ts # GDE content creation │ │ ā”œā”€ā”€ ... # Other GDE interfaces │ │ └── mvp/ # MVP interfaces │ │ ā”œā”€ā”€ MVPActivityBase.ts │ │ ā”œā”€ā”€ MVPVideoActivity.ts │ │ ā”œā”€ā”€ MVPBlogActivity.ts │ │ └── MVPSpeakingActivity.ts │ └── types/ # Type definitions │ ā”œā”€ā”€ ContentType.ts # GDE types │ ā”œā”€ā”€ ... │ └── mvp/ # MVP types │ ā”œā”€ā”€ MVPActivityType.ts │ ā”œā”€ā”€ MVPActivityRole.ts │ └── MVPTargetAudience.ts ā”œā”€ā”€ scripts/ │ ā”œā”€ā”€ capture-mvp-token.ts # Token capture tool │ └── README.md # Script documentation ā”œā”€ā”€ dist/ # Compiled output └── docs/ # šŸ“š Documentation (required for doc tools) ā”œā”€ā”€ API.md # Complete API reference ā”œā”€ā”€ MVP_API_REFERENCE.md # MVP API specifications ā”œā”€ā”€ CHANGELOG_MVP_FIXES.md # MVP integration changelog ā”œā”€ā”€ ERROR_HANDLING_IMPROVEMENTS.md # Error handling guide ā”œā”€ā”€ MCP_RESOURCES.md # MCP resources guide └── RELEASE_NOTES_v0.2.0.md # Release notes ``` --- ## šŸ› ļø Development ### Build ```bash npm run build ``` ### Development Mode ```bash npm run dev ``` ### Lint and Format ```bash npm run lint npm run format ``` ### Capture MVP Token ```bash npm run capture-mvp-token ``` --- ## šŸ› Troubleshooting ### Tools Don't Appear in Claude Desktop 1. **Check config path**: Ensure your `claude_desktop_config.json` is in the right location 2. **Verify build**: Run `npm run build` in the project directory 3. **Check logs**: Restart Claude Desktop and check for errors 4. **Verify tokens**: Make sure at least one token (MVP or GDE) is configured ### 401 Unauthorized Error (MVP) Your token expired. Run: ```bash npm run capture-mvp-token ``` Follow the instructions to capture a fresh token from DevTools, then restart Claude Desktop. ### "At least one of GDE or MVP must be configured" You need to set either: - `ADVOCU_ACCESS_TOKEN` (for GDE), or - `MVP_ACCESS_TOKEN` + `MVP_USER_PROFILE_ID` (for MVP) Both can be set if you're both an MVP and GDE! ### Documentation Tools Not Working If you get errors like "Failed to read resource" or "Documentation not found": 1. **Check `DOCS_DIR` is set**: Make sure you added `DOCS_DIR` to your Claude Desktop config 2. **Verify the path**: The path must be **absolute** and point to the `docs` directory 3. **Example**: `"DOCS_DIR": "/Users/yourname/advocu-mcp-server/docs"` 4. **Check directory exists**: Run `ls "$DOCS_DIR"` to verify the directory exists 5. **Restart Claude Desktop**: Changes to config require a restart **Example config:** ```json { "env": { "MVP_ACCESS_TOKEN": "...", "DOCS_DIR": "/absolute/path/to/advocu-mcp-server/docs" } } ``` ### MVP Submission Fails 1. **Check your profile ID**: Make sure `MVP_USER_PROFILE_ID` is correct 2. **Verify token**: Run `npm run capture-mvp-token` to get a fresh token 3. **Check required fields**: All required fields must be provided 4. **Target audience**: Must be an array (e.g., `["Developer"]`) --- ## šŸ”’ Security & Privacy - **Tokens are stored locally** in your Claude Desktop config - **Never commit tokens** to version control - **`captured-api-calls.json` is in `.gitignore`** - it contains sensitive data - **MVP tokens expire** regularly for security - **Tokens are never sent** to anyone except the official APIs --- ## šŸ“– API Documentation ### Microsoft MVP API - **Base URL**: `https://mavenapi-prod.azurewebsites.net/api` - **Endpoint**: `POST /Activities/` - **Authentication**: Bearer token - **Payload**: `{ "activity": { ...fields } }` ### Google GDE API (Advocu) - **Base URL**: `https://api.advocu.com/personal-api/v1/gde` - **Endpoints**: `/activity-drafts/{type}` - **Authentication**: Bearer token - **Rate Limit**: 30 requests/minute For detailed field documentation, see [docs/API.md](docs/API.md). --- ## šŸ¤ Contributing 1. Fork the project 2. Create a feature branch: `git checkout -b feature/amazing-feature` 3. Commit your changes (use conventional commits) 4. Push to the branch: `git push origin feature/amazing-feature` 5. Open a Pull Request --- ## šŸ“ License MIT License - see [LICENSE](LICENSE) file for details. --- ## šŸ™ Acknowledgments - Built for Google Developer Experts and Microsoft MVPs - Powered by [Model Context Protocol (MCP)](https://modelcontextprotocol.io) - Integrates with [Advocu](https://advocu.com) and Microsoft MVP Portal --- ## šŸ’” Tips - **Be specific**: The more details you provide to Claude, the better - **Natural language**: Just describe what you did - Claude will structure it - **Batch submissions**: Submit multiple activities in one conversation - **Check responses**: Claude will show you the API response for verification - **Token expires?** Just run `npm run capture-mvp-token` and paste your new token - takes 30 seconds --- **Questions or issues?** Open an issue on GitHub or check the [troubleshooting section](#-troubleshooting). **Want to add more activity types?** Check out the code structure and submit a PR! šŸš€

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/carlosazaustre/advocu-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server