# Directory Structure ``` ├── .gitignore ├── package-lock.json ├── package.json ├── README.md ├── src │ ├── get-refresh-token.ts │ └── index.ts └── tsconfig.json ``` # Files -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- ``` 1 | node_modules/ 2 | build/ 3 | *.log 4 | .env* ``` -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "NodeNext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "outDir": "build", 8 | "strict": true, 9 | "skipLibCheck": true, 10 | "forceConsistentCasingInFileNames": true, 11 | "resolveJsonModule": true, 12 | "allowSyntheticDefaultImports": true, 13 | "noImplicitAny": false 14 | }, 15 | "include": ["src/**/*"], 16 | "exclude": ["node_modules", "build"] 17 | } 18 | ``` -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "name": "google-forms-server", 3 | "version": "0.1.0", 4 | "description": "MCP server for Google Forms integration", 5 | "type": "module", 6 | "main": "build/index.js", 7 | "scripts": { 8 | "build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"", 9 | "start": "node build/index.js", 10 | "build:token": "tsc src/get-refresh-token.ts --outDir build --target ES2020" 11 | }, 12 | "dependencies": { 13 | "@modelcontextprotocol/sdk": "^1.6.1", 14 | "axios": "^1.6.2", 15 | "googleapis": "^126.0.1", 16 | "open": "^9.1.0", 17 | "server-destroy": "^1.0.1" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^20.10.0", 21 | "@types/server-destroy": "^1.0.4", 22 | "typescript": "^5.3.2" 23 | } 24 | } 25 | ```