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! πŸš€

Latest Blog Posts

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