{"_id":"scholarly-research-mcp","_rev":"11-35eec58d9db3aac2a619a859d31768bd","name":"scholarly-research-mcp","dist-tags":{"latest":"2.0.3"},"versions":{"1.0.0":{"name":"scholarly-research-mcp","version":"1.0.0","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.0.0","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"dist":{"shasum":"1312f9c90ba1e85a3deff81d684d3c6a6147a02e","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.0.0.tgz","fileCount":10,"integrity":"sha512-eLabcBPBYkZaXw4iDbdBg48XNNjeB7mH6mpDgj3OzQ2PYct5+d50sp4uMK5zumNvmPeWkN5jK3XazDViN0EdzQ==","signatures":[{"sig":"MEUCIQCrbykXm+baMHOOsSo6+/yq5z33U3BqoYZrgZMbZ7cRBAIgdZNFFfFso7P6D8x4nimKxDoYn8PncIda2E/eqZxMtFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44229},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"a93965ca9ff17953291148bc17a76e1e9901e030","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations","test:mcp":"node tests/test-mcp-client.js","test:pubmed":"node tests/test-pubmed-adapter.js","test:citations":"node tests/test-citations.js","test:interactive":"node tests/interactive-test.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","@modelcontextprotocol/sdk":"^1.17.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.0.0_1755734992663_0.8017008131888692","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"scholarly-research-mcp","version":"1.2.0","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.2.0","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"dist":{"shasum":"370f1bd4e22a0cf716b6ea8b53bf53c7200a4418","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.2.0.tgz","fileCount":11,"integrity":"sha512-RXkT2JBq2gKvAPePrc/JU73bLMreuPb/pQXjfGyCjlDYH2MWOubaSwQMyDUB0DcJP9JdYaKKuWJxpr/ChZCp/A==","signatures":[{"sig":"MEQCIAYHTTQwqDzWnP445WY0fuLN7AgBiMQYzF/ghfcgRgUyAiBt1K8yyKEKGCIssm2vg1yO70+wB/T1WuKzD4I8/oCtng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75755},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"3ef78b26b9a572926ff67f73dfea27fb7bcd1de2","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations","test:mcp":"node tests/test-mcp-client.js","test:pubmed":"node tests/test-pubmed-adapter.js","test:content":"node tests/test-content-extraction.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","test:citations":"node tests/test-citations.js","test:interactive":"node tests/interactive-test.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","@modelcontextprotocol/sdk":"^1.17.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.2.0_1755735851522_0.7336017081920572","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"scholarly-research-mcp","version":"1.2.3","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.2.3","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"dist":{"shasum":"b947ec008f6223ebfbd40efa3ccdbb6b8a62c36d","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.2.3.tgz","fileCount":11,"integrity":"sha512-U145u+68dn6MlfLUokkrbT/34/g4rUAM9CMh+94LxavPULXlNeTCc7yH7nckHTZhPosuvCuUsXi0LxDdwHXmWw==","signatures":[{"sig":"MEYCIQD+ZsVLFTGfJ8A4amGWtv/oWKEi4HvYsnpxqWODNwxM6wIhAIYE0cWC64AVryG4F6ZSRQ8rqpqcFgDspvoy6WZ9Lscy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104171},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"598fd670cfdd1237e46bad90a2e7ca976fb20dff","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations","test:mcp":"node tests/test-mcp-client.js","test:pubmed":"node tests/test-pubmed-adapter.js","test:content":"node tests/test-content-extraction.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","test:citations":"node tests/test-citations.js","test:interactive":"node tests/interactive-test.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","@modelcontextprotocol/sdk":"^1.17.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.2.3_1755736712792_0.5065681015911678","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"scholarly-research-mcp","version":"1.3.0","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.3.0","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"homepage":"https://github.com/aringadre76/mcp-for-research#readme","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"dist":{"shasum":"a18b570239182f7c8a656f0fea96cc32c8d15ea7","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.3.0.tgz","fileCount":12,"integrity":"sha512-3GWOUcYTNQwvHXwKuKQG+QqoM4XgbUx5bTr1gR778VkSSw3BzInq99jRdIXWMObWAfjouQiCWYvXQGUE6+Iuaw==","signatures":[{"sig":"MEYCIQDdrHFt2s+sM2TdA3TU1OgufC+t8Icu+CeNUv3/IB3yogIhAMg9vXoiX/klvcpASn50Jglr1vC2D5PvtKHx9NSVNvXq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118103},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testTimeout":30000,"testEnvironment":"node","setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testPathIgnorePatterns":["/node_modules/"]},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"ae2e064b623831338d9b03c6d948d2ce09e163ef","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations","test:mcp":"node tests/test-mcp-client.js","publish:npm":"npm publish","test:pubmed":"node tests/test-pubmed-adapter.js","publish:both":"node scripts/publish-both.js","test:content":"node tests/test-content-extraction.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","publish:github":"npm publish --registry=https://npm.pkg.github.com","test:citations":"node tests/test-citations.js","test:interactive":"node tests/interactive-test.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"repository":{"url":"git+https://github.com/aringadre76/mcp-for-research.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"githubPackages":{"scope":"@aringadre76","registry":"https://npm.pkg.github.com"},"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.3.0_1755812455128_0.7513833835585839","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"scholarly-research-mcp","version":"1.3.1","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.3.1","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"homepage":"https://github.com/aringadre76/mcp-for-research#readme","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"dist":{"shasum":"f45edbafe491da44906dfa6b1f17bbd390916b8d","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.3.1.tgz","fileCount":12,"integrity":"sha512-d/ooXXwNwkDHC4pAcxPf3gqbrSK7Zq8gq0LKGhA2L1kW9Z8khDwlHPJK6rDOxydh4vIPupKLHF95J0ytQOITjQ==","signatures":[{"sig":"MEYCIQDATvEhpMcgNjxFs1bVMgMaN6QpJwPHMdrAiHBCYIQeVQIhAKrQHTvSVnzHYRy+QCRinQEaj/tHKdd/d0oR1f8KoTN1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121206},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testTimeout":30000,"testEnvironment":"node","setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testPathIgnorePatterns":["/node_modules/"]},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"1ce548cda9e664491a2f11f33bdb25c6ccccd7f3","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations","test:mcp":"node tests/test-mcp-client.js","publish:npm":"npm publish","test:pubmed":"node tests/test-pubmed-adapter.js","publish:both":"node scripts/publish-both.js","test:content":"node tests/test-content-extraction.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","publish:github":"npm publish --registry=https://npm.pkg.github.com","test:citations":"node tests/test-citations.js","test:interactive":"node tests/interactive-test.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"repository":{"url":"git+https://github.com/aringadre76/mcp-for-research.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"githubPackages":{"scope":"@aringadre76","registry":"https://npm.pkg.github.com"},"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.3.1_1755813077371_0.8863547275050219","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"scholarly-research-mcp","version":"1.3.2","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.3.2","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"homepage":"https://github.com/aringadre76/mcp-for-research#readme","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"dist":{"shasum":"90c39ffae6877e70d43247f6dffab92fe3eb0c82","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.3.2.tgz","fileCount":12,"integrity":"sha512-yKivG+c8BZDr8kuCLND6kkE/1EuGfhQ2irBKE9v9ENzOAdntEXUHKLBg+0gobfk05/rUHBwG9Qel7UwTFxqSwA==","signatures":[{"sig":"MEYCIQDIj0xX67fIZE5/+eTps0mW4U0bZafp6dFM7FLh5QEiIwIhANJOqLJXj3ZUZwyneC1ZgHQ6BUefVIjezAghSosRlQVx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127279},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testTimeout":30000,"testEnvironment":"node","setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testPathIgnorePatterns":["/node_modules/"]},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"450e058481600d2315fa1528ef69056ef2867e54","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations","test:mcp":"node tests/test-mcp-client.js","publish:npm":"npm publish","test:pubmed":"node tests/test-pubmed-adapter.js","publish:both":"node scripts/publish-both.js","test:content":"node tests/test-content-extraction.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","publish:github":"npm publish --registry=https://npm.pkg.github.com","test:citations":"node tests/test-citations.js","test:interactive":"node tests/interactive-test.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"repository":{"url":"git+https://github.com/aringadre76/mcp-for-research.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"githubPackages":{"scope":"@aringadre76","registry":"https://npm.pkg.github.com"},"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.3.2_1755921363169_0.9802612162601283","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"scholarly-research-mcp","version":"1.4.0","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.4.0","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"homepage":"https://github.com/aringadre76/mcp-for-research#readme","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"dist":{"shasum":"7dd5ae8d6bf17d9062e6253424a6bb6983f073f5","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.4.0.tgz","fileCount":28,"integrity":"sha512-I+1AoP2GWHTx27JQrD2k2Dl25gaAAzIUqbQEYEoNy02Zlulq1PmvTGbu4XQFnLa0j7KS8GEXN44HwdF08rVJEg==","signatures":[{"sig":"MEYCIQCd1tWl9aYmQWXycowBw0aJTzTwUKuFVbTTpDGq0u55tgIhALrD+Ahof50b7DFfXsi6d+kcfsh/+4w6Dwm3onHchy/B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256993},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testTimeout":30000,"testEnvironment":"node","setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testPathIgnorePatterns":["/node_modules/"]},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"66939e494134d4774c15aed0a5bdeb4d856ad9ed","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations && npm run test:google-scholar && npm run test:unified","test:mcp":"node tests/test-mcp-client.js","publish:npm":"npm publish","test:pubmed":"node tests/test-pubmed-adapter.js","publish:both":"node scripts/publish-both.js","test:content":"node tests/test-content-extraction.js","test:unified":"node tests/test-unified-search.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","publish:github":"npm publish --registry=https://npm.pkg.github.com","test:citations":"node tests/test-citations.js","test:firecrawl":"node tests/test-firecrawl-integration.js","test:interactive":"node tests/interactive-test.js","test:all-tools-js":"node tests/test-all-tools.js","test:all-tools-bash":"./tests/test-all-tools-simple.sh","test:google-scholar":"node tests/test-google-scholar.js","test:all-tools-python":"python3 tests/test_all_tools.py","test:google-scholar-simple":"node tests/test-simple-google-scholar.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"repository":{"url":"git+https://github.com/aringadre76/mcp-for-research.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","cheerio":"^1.0.0-rc.12","puppeteer":"^19.11.1","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"githubPackages":{"scope":"@aringadre76","registry":"https://npm.pkg.github.com"},"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14","@types/cheerio":"^0.22.35","@types/puppeteer":"^5.4.7"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.4.0_1755995399418_0.1356296749401842","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"scholarly-research-mcp","version":"1.4.1","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.4.1","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"homepage":"https://github.com/aringadre76/mcp-for-research#readme","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"dist":{"shasum":"c888e048d73f9f16afd292dc072c0ab54dfbfbad","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.4.1.tgz","fileCount":37,"integrity":"sha512-JInkqAXbFtYpU5kHjqV7v4n3EfmIbMvi9iik0Cfd4BRLbk3mzA9FAgsRnTp+GCgoUOSPt0FRE5jMspnWEI34zA==","signatures":[{"sig":"MEUCIQDObSexA1v/FEXQYf85A+x2+JWys0SshTxaGkw2DgcJUQIgMAUT79xVOGJ4sfly8iCg5HDXy45P7exMUrcCYlPDVZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302917},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testTimeout":30000,"testEnvironment":"node","setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testPathIgnorePatterns":["/node_modules/"]},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"39f0eb645678f8f0092d2bad9a7c5d5dab055366","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations && npm run test:google-scholar && npm run test:unified","test:mcp":"node tests/test-mcp-client.js","publish:npm":"npm publish","test:pubmed":"node tests/test-pubmed-adapter.js","publish:both":"node scripts/publish-both.js","test:content":"node tests/test-content-extraction.js","test:unified":"node tests/test-unified-search.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","publish:github":"npm publish --registry=https://npm.pkg.github.com","test:citations":"node tests/test-citations.js","test:firecrawl":"node tests/test-firecrawl-integration.js","test:interactive":"node tests/interactive-test.js","test:preferences":"node tests/test-preferences.js","test:all-tools-js":"node tests/test-all-tools.js","test:all-tools-bash":"./tests/test-all-tools-simple.sh","test:google-scholar":"node tests/test-google-scholar.js","test:all-tools-python":"python3 tests/test_all_tools.py","test:google-scholar-simple":"node tests/test-simple-google-scholar.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"repository":{"url":"git+https://github.com/aringadre76/mcp-for-research.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","cheerio":"^1.0.0-rc.12","puppeteer":"^19.11.1","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"githubPackages":{"scope":"@aringadre76","registry":"https://npm.pkg.github.com"},"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14","@types/cheerio":"^0.22.35","@types/puppeteer":"^5.4.7"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.4.1_1756023491602_0.5301242378311126","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"scholarly-research-mcp","version":"1.4.2","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@1.4.2","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"homepage":"https://github.com/aringadre76/mcp-for-research#readme","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"dist":{"shasum":"d79a71cdc9a3284d3e90b39030ae3e7ff4f73f85","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-1.4.2.tgz","fileCount":39,"integrity":"sha512-5Jw4NiLP+wteIki4QWDzmbaatTasBUjcScHlI/kwbBOzwakXQb8JCsBF3gVKS5DtUcZjzASlt2OjzOILiUa+tw==","signatures":[{"sig":"MEUCIHmCnD3rJ+yp2JbMd5J0M9F6TAY6eKkmrMfUWtwSIibxAiEA5T/iyGc3P0lowMYAzCHjcaia3cFxMSe4mbDtIv3iSIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322716},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testTimeout":30000,"testEnvironment":"node","setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testPathIgnorePatterns":["/node_modules/"]},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"051fe581d40eecbd0686a29111cd9496ab9815f1","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations && npm run test:google-scholar && npm run test:unified","test:mcp":"node tests/test-mcp-client.js","publish:npm":"npm publish","test:pubmed":"node tests/test-pubmed-adapter.js","publish:both":"node scripts/publish-both.js","test:content":"node tests/test-content-extraction.js","test:unified":"node tests/test-unified-search.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","publish:github":"npm publish --registry=https://npm.pkg.github.com","test:citations":"node tests/test-citations.js","test:firecrawl":"node tests/test-firecrawl-integration.js","test:interactive":"node tests/interactive-test.js","test:preferences":"node tests/test-preferences.js","test:all-tools-js":"node tests/test-all-tools.js","test:all-tools-bash":"./tests/test-all-tools-simple.sh","test:google-scholar":"node tests/test-google-scholar.js","test:all-tools-python":"python3 tests/test_all_tools.py","test:google-scholar-simple":"node tests/test-simple-google-scholar.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"repository":{"url":"git+https://github.com/aringadre76/mcp-for-research.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for scholarly research across PubMed, JSTOR, and Google Scholar","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","xml2js":"^0.6.2","cheerio":"^1.0.0-rc.12","puppeteer":"^19.11.1","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"githubPackages":{"scope":"@aringadre76","registry":"https://npm.pkg.github.com"},"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14","@types/cheerio":"^0.22.35","@types/puppeteer":"^5.4.7"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_1.4.2_1756023844617_0.16515774255932825","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"scholarly-research-mcp","version":"2.0.1","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","_id":"scholarly-research-mcp@2.0.1","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"homepage":"https://github.com/aringadre76/mcp-for-research#readme","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"dist":{"shasum":"d739be6fc19208b7dfcb0943113f045da133b744","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-2.0.1.tgz","fileCount":50,"integrity":"sha512-RNvshV06230ygEfAHboQOy/Up9pRBQvA6ktrbzYjYqF+CBROlubC8XZNoufkES8ZN8O6OOPE2BVkJZIRqb1nAA==","signatures":[{"sig":"MEQCIBM2MyHnMWtyqltsOj6bdvd1ETaLnY7vj6ZM+3Y0jFcwAiBFo4goVH23LumNPAnK9Jj09Kbu+a69Qgavwj9xP2JeqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407777},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testTimeout":30000,"testEnvironment":"node","setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testPathIgnorePatterns":["/node_modules/","google-scholar-firecrawl-parser.test.js"]},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"88b73568d492427b0193790e3751f761bf51298c","scripts":{"dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","build":"tsc","start":"node dist/index.js","cursor":"node scripts/cursor-mcp-client.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations && npm run test:google-scholar && npm run test:unified && npm run test:arxiv && npm run test:unified-arxiv","test:mcp":"node -e \"const fs=require('fs'); const p='tests/test-mcp-client.js'; if (!fs.existsSync(p)) { console.log('Skipped: '+p+' not found'); process.exit(0); } require('./'+p);\"","test:arxiv":"node tests/test-arxiv-adapter.js","test:build":"node tests/test-build.js","test:tools":"node tests/run-tool-tests.js","publish:npm":"npm publish","test:pubmed":"node -e \"const fs=require('fs'); const p='tests/test-pubmed-adapter.js'; if (!fs.existsSync(p)) { console.log('Skipped: '+p+' not found'); process.exit(0); } require('./'+p);\"","publish:both":"node scripts/publish-both.js","test:content":"node -e \"const fs=require('fs'); const p='tests/test-content-extraction.js'; if (!fs.existsSync(p)) { console.log('Skipped: '+p+' not found'); process.exit(0); } require('./'+p);\"","test:unified":"node tests/test-unified-search.js","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","version:major":"node scripts/version.js major","version:minor":"node scripts/version.js minor","version:patch":"node scripts/version.js patch","publish:github":"npm publish --registry=https://npm.pkg.github.com","test:arxiv-all":"./tests/run-arxiv-tests.sh","test:citations":"jest tests/test-citations.js --passWithNoTests","test:firecrawl":"node tests/test-firecrawl-integration.js","test:interactive":"node tests/interactive-test.js","test:preferences":"node tests/test-preferences.js","test:all-tools-js":"node tests/test-all-tools.js","test:arxiv-direct":"node tests/test-arxiv-direct.js","test:arxiv-simple":"node tests/test-arxiv-simple.js","test:unified-arxiv":"node tests/test-unified-search-with-arxiv.js","test:all-tools-bash":"./tests/test-all-tools-simple.sh","test:google-scholar":"node tests/test-google-scholar.js","test:arxiv-mcp-tools":"node tests/test-arxiv-mcp-tools.js","test:firecrawl-arxiv":"node tests/test-firecrawl-arxiv.js","test:all-tools-python":"python3 tests/test_all_tools.py","test:firecrawl-parser":"node tests/google-scholar-firecrawl-parser.test.js","test:arxiv-comprehensive":"node tests/test-arxiv-comprehensive.js","test:google-scholar-simple":"node tests/test-simple-google-scholar.js"},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"repository":{"url":"git+https://github.com/aringadre76/mcp-for-research.git","type":"git"},"_npmVersion":"10.8.2","description":"Consolidated MCP server for scholarly research across PubMed, ArXiv, Google Scholar, and JSTOR (5 powerful tools instead of 24)","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.6.0","dotenv":"^16.4.5","xml2js":"^0.6.2","cheerio":"^1.0.0-rc.12","puppeteer":"^19.11.1","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"githubPackages":{"scope":"@aringadre76","registry":"https://npm.pkg.github.com"},"devDependencies":{"jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14","@types/cheerio":"^0.22.35","@types/puppeteer":"^5.4.7"},"_npmOperationalInternal":{"tmp":"tmp/scholarly-research-mcp_2.0.1_1772072281100_0.787868671617252","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"scholarly-research-mcp","version":"2.0.3","description":"Consolidated MCP server for scholarly research across PubMed, ArXiv, Google Scholar, and JSTOR (5 powerful tools instead of 24)","main":"dist/index.js","bin":{"scholarly-research-mcp":"dist/index.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build && node scripts/validate-pack.js","postbuild":"chmod +x dist/index.js 2>/dev/null || true","start":"node dist/index.js","dev":"ts-node src/index.ts","prod":"npm run build && npm start","test":"jest","test:pubmed":"node -e \"const fs=require('fs'); const p='tests/test-pubmed-adapter.js'; if (!fs.existsSync(p)) { console.log('Skipped: '+p+' not found'); process.exit(0); } require('./'+p);\"","test:mcp":"node -e \"const fs=require('fs'); const p='tests/test-mcp-client.js'; if (!fs.existsSync(p)) { console.log('Skipped: '+p+' not found'); process.exit(0); } require('./'+p);\"","test:interactive":"node tests/interactive-test.js","test:citations":"jest tests/test-citations.js --passWithNoTests","test:google-scholar":"node tests/test-google-scholar.js","test:google-scholar-simple":"node tests/test-simple-google-scholar.js","test:unified":"node tests/test-unified-search.js","test:firecrawl":"node tests/test-firecrawl-integration.js","test:firecrawl-arxiv":"node tests/test-firecrawl-arxiv.js","test:arxiv-all":"./tests/run-arxiv-tests.sh","test:arxiv":"node tests/test-arxiv-adapter.js","test:unified-arxiv":"node tests/test-unified-search-with-arxiv.js","test:arxiv-simple":"node tests/test-arxiv-simple.js","test:arxiv-comprehensive":"node tests/test-arxiv-comprehensive.js","test:build":"node tests/test-build.js","test:packaging":"node scripts/validate-pack.js","test:arxiv-mcp-tools":"node tests/test-arxiv-mcp-tools.js","test:arxiv-direct":"node tests/test-arxiv-direct.js","test:all-tools-bash":"./tests/test-all-tools-simple.sh","test:all-tools-python":"python3 tests/test_all_tools.py","test:all-tools-js":"node tests/test-all-tools.js","test:all":"npm run build && npm run test:pubmed && npm run test:mcp && npm run test:citations && npm run test:google-scholar && npm run test:unified && npm run test:arxiv && npm run test:unified-arxiv","test:content":"node -e \"const fs=require('fs'); const p='tests/test-content-extraction.js'; if (!fs.existsSync(p)) { console.log('Skipped: '+p+' not found'); process.exit(0); } require('./'+p);\"","test:preferences":"node tests/test-preferences.js","test:tools":"node tests/run-tool-tests.js","test:firecrawl-parser":"node tests/google-scholar-firecrawl-parser.test.js","cursor":"node scripts/cursor-mcp-client.js","version:patch":"node scripts/version.js patch","version:minor":"node scripts/version.js minor","version:major":"node scripts/version.js major","release:patch":"npm run version:patch && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:minor":"npm run version:minor && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","release:major":"npm run version:major && git add package.json && git commit -m \"Bump version\" && git tag v$(node -p \"require('./package.json').version\") && git push origin main --tags","publish:npm":"npm publish","publish:github":"npm publish --registry=https://npm.pkg.github.com","publish:both":"node scripts/publish-both.js"},"engines":{"node":">=18.17.0"},"dependencies":{"dotenv":"^16.4.5","@modelcontextprotocol/sdk":"^1.17.3","axios":"^1.6.0","cheerio":"~1.0.0","puppeteer-core":"^19.11.1","xml2js":"^0.6.2","zod":"^3.22.0"},"devDependencies":{"@types/cheerio":"^0.22.35","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/xml2js":"^0.4.14","jest":"^29.0.0","ts-node":"^10.9.0","typescript":"^5.0.0"},"jest":{"testMatch":["**/tests/**/*.js","**/tests/**/*.ts"],"testPathIgnorePatterns":["/node_modules/","google-scholar-firecrawl-parser.test.js"],"collectCoverageFrom":["src/**/*.{js,ts}","!src/**/*.d.ts"],"testEnvironment":"node","testTimeout":30000,"setupFilesAfterEnv":["<rootDir>/tests/jest.setup.js"]},"keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/aringadre76/mcp-for-research.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"githubPackages":{"registry":"https://npm.pkg.github.com","scope":"@aringadre76"},"_id":"scholarly-research-mcp@2.0.3","gitHead":"11968cf423ba0440e216a271d6506838b6ce738e","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"homepage":"https://github.com/aringadre76/mcp-for-research#readme","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-OmRxT1TJyohINw3mlfmcTJlUuipPpGHKEP0HZleABGoG6Bnr5JBNM3qPt8zhvi5R4C0db2RCxYziAaziLNAgwA==","shasum":"82e3445fea108e3e7da1d877695116ef940fba01","tarball":"https://registry.npmjs.org/scholarly-research-mcp/-/scholarly-research-mcp-2.0.3.tgz","fileCount":54,"unpackedSize":416728,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCyHG7rPtLpY90Id388yzHH/CeXPecYF0PZgtqnMBj0HgIgLYGr0c0ouBN5YBQAG/BSW0n9ezR8FbJytH6sIkem06Q="}]},"_npmUser":{"name":"arin_gadre","email":"aringadre@gmail.com"},"directories":{},"maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/scholarly-research-mcp_2.0.3_1773100212673_0.5690440792073865"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-21T00:09:52.662Z","modified":"2026-03-09T23:50:12.964Z","1.0.0":"2025-08-21T00:09:52.857Z","1.2.0":"2025-08-21T00:24:11.721Z","1.2.3":"2025-08-21T00:38:32.968Z","1.3.0":"2025-08-21T21:40:55.339Z","1.3.1":"2025-08-21T21:51:17.586Z","1.3.2":"2025-08-23T03:56:03.400Z","1.4.0":"2025-08-24T00:29:59.621Z","1.4.1":"2025-08-24T08:18:11.811Z","1.4.2":"2025-08-24T08:24:04.817Z","2.0.1":"2026-02-26T02:18:01.253Z","2.0.3":"2026-03-09T23:50:12.842Z"},"bugs":{"url":"https://github.com/aringadre76/mcp-for-research/issues"},"license":"MIT","homepage":"https://github.com/aringadre76/mcp-for-research#readme","keywords":["mcp","research","scholarly","pubmed","jstor","google-scholar"],"repository":{"type":"git","url":"git+https://github.com/aringadre76/mcp-for-research.git"},"description":"Consolidated MCP server for scholarly research across PubMed, ArXiv, Google Scholar, and JSTOR (5 powerful tools instead of 24)","maintainers":[{"name":"arin_gadre","email":"aringadre@gmail.com"}],"readme":"# Scholarly Research MCP Server\n\nA powerful, consolidated research tool that helps you find and analyze academic research papers from PubMed, Google Scholar, ArXiv, and JSTOR through just 5 powerful tools.\n\n[![NPM](https://img.shields.io/badge/npm-published-orange)](https://www.npmjs.com/package/scholarly-research-mcp)\n[![GitHub](https://img.shields.io/badge/github-repo-blue)](https://github.com/aringadre76/mcp-for-research)\n[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n\n## What This Tool Does\n\nThis tool helps you:\n- **Find research papers** on any topic from multiple academic databases\n- **Read full papers** when available (not just abstracts)\n- **Extract key information** like quotes, statistics, and findings\n- **Get citations** in the format you need for your work\n- **Search within papers** to find specific information\n- **Organize research** with customizable preferences\n\n## Key Features\n\n- **5 Consolidated Tools**: Powerful, multi-functional tools instead of 24 separate ones\n- **Multi-Source Search**: PubMed, Google Scholar, ArXiv, and JSTOR\n- **User Preferences**: Customizable search and display settings\n- **Content Extraction**: Full-text paper access and analysis\n- **Citation Management**: Multiple citation format support\n- **Error Handling**: Robust fallback mechanisms\n- **Web research (Firecrawl)**: When `FIRECRAWL_API_KEY` is set in the environment (or a Firecrawl client is provided), the `web_research` tool can scrape URLs and run web search. See [Configuration](#configuration) and copy `.env.example` to `.env` to set your key. Get an API key at [firecrawl.dev](https://firecrawl.dev).\n\n## Configuration Overview\n\nConfiguration for environment variables and API keys is documented in more detail in the `docs/` folder and `.env.example`. At a high level, you configure API keys via environment variables and should avoid committing any secret values.\n\n## Project Structure\n\n### **Core Components**\n```\nsrc/\n├── index.ts                           # Main server entry point (consolidated)\n├── adapters/                          # Data source connectors\n│   ├── pubmed.ts                      # PubMed API integration\n│   ├── google-scholar.ts              # Google Scholar web scraping\n│   ├── google-scholar-firecrawl.ts    # Firecrawl integration\n│   ├── arxiv.ts                       # ArXiv integration\n│   ├── unified-search.ts              # Basic multi-source search\n│   ├── enhanced-unified-search.ts     # Advanced multi-source search\n│   └── preference-aware-unified-search.ts # User preference integration\n├── preferences/                       # User preference management\n│   └── user-preferences.ts            # Preference storage and retrieval\n└── models/                            # Data structures and interfaces\n    ├── paper.ts                       # Paper data models\n    ├── search.ts                      # Search parameter models\n    └── preferences.ts                 # Preference models\n```\n\n### **Documentation**\n```\ndocs/\n├── README.md                          # Documentation index and overview\n├── CONSOLIDATION_GUIDE.md             # Complete consolidation guide\n├── TOOL_CONSOLIDATION.md              # Quick tool mapping reference\n├── PROJECT_STRUCTURE.md               # Clean project organization\n├── API_REFERENCE.md                   # Complete API documentation\n├── ARCHITECTURE.md                    # Technical system design\n├── DATA_MODELS.md                     # Data structure definitions\n└── DEVELOPMENT.md                     # Developer setup guide\n```\n\n### **Testing**\n```\ntests/\n├── test-preferences.js                # Preference system tests\n├── test-all-tools-simple.sh           # Bash test runner (recommended)\n├── test_all_tools.py                  # Python test runner\n└── test-all-tools.js                  # JavaScript test runner\n```\n\n### **Configuration**\n```\n├── package.json                       # Project dependencies and scripts\n├── tsconfig.json                      # TypeScript configuration\n├── .env.example                       # Environment variables template\n└── README.md                          # This file\n```\n\n## Quick Start\n\nPick your AI tool below to get started quickly:\n\n[![Add to Cursor](https://img.shields.io/badge/Add_to_Cursor-black?style=for-the-badge)](https://cursor.com/en/install-mcp?name=scholarly-research-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNjaG9sYXJseS1yZXNlYXJjaC1tY3AiXX0%3D)\n[![Add to VS Code](https://img.shields.io/badge/Add_to_VS_Code-black?style=for-the-badge&logo=visualstudiocode&logoColor=007ACC)](#vs-code--copy-configuration)\n[![Add to Claude](https://img.shields.io/badge/Add_to_Claude-black?style=for-the-badge&logo=anthropic&logoColor=white)](#claude-desktop--copy-configuration)\n[![Add to ChatGPT](https://img.shields.io/badge/Add_to_ChatGPT-black?style=for-the-badge&logo=openai&logoColor=white)](#manual--copy-configuration-json)\n[![Add to Codex](https://img.shields.io/badge/Add_to_Codex-black?style=for-the-badge&logo=openai&logoColor=white)](#claude-code--gemini--codex--cli)\n[![Add to Gemini](https://img.shields.io/badge/Add_to_Gemini-black?style=for-the-badge&logo=googlegemini&logoColor=white)](#claude-code--gemini--codex--cli)\n\n> **Cursor** uses Cursor's install page to hand off to the desktop app and open the MCP install prompt. If your system does not register the Cursor URL handler, use the manual config below instead.\n>\n> If Cursor adds the server but startup fails with `npm error could not determine executable to run`, the npm `latest` release is stale. In that case, clone this repo and use the local `node dist/index.js` command below until the refreshed npm publish is live.\n\n### Claude Desktop – Copy configuration\n\nAdd this to your `claude_desktop_config.json` under `mcpServers`:\n\n```json\n{\n  \"mcpServers\": {\n    \"scholarly-research-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"scholarly-research-mcp\"]\n    }\n  }\n}\n```\n\nThen fully restart Claude Desktop.  \nConfig file locations:\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%/Claude/claude_desktop_config.json`\n- **Linux**: `~/.config/Claude/claude_desktop_config.json`\n\n### Cursor IDE – One‑click install\n\nIf you use Cursor, you can install this MCP server with a single click:\n\n[**One‑Click – Add to Cursor**](https://cursor.com/en/install-mcp?name=scholarly-research-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNjaG9sYXJseS1yZXNlYXJjaC1tY3AiXX0%3D)\n\nThis opens Cursor's install handoff page, then launches the Cursor desktop app with an MCP install prompt for `npx -y scholarly-research-mcp`. You’ll need Node.js and npm available on your system.\n\nIf startup fails with `npm error could not determine executable to run`, the currently published npm package is missing its executable metadata. Until the refreshed npm release is published, use the local clone/build path below:\n\n```bash\ngit clone https://github.com/aringadre76/mcp-for-research\ncd mcp-for-research\nnpm install\nnpm run build\nnode dist/index.js\n```\n\n### VS Code – Copy configuration\n\nCreate `.vscode/mcp.json` in your project (or edit your global MCP config) and add:\n\n```json\n{\n  \"servers\": {\n    \"scholarly-research-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"scholarly-research-mcp\"]\n    }\n  }\n}\n```\n\nThen reload VS Code so the Copilot / MCP integration picks it up.\n\n### Claude Code / Gemini / Codex – CLI\n\nIf your tool lets you point at a local MCP server command, use:\n\n```bash\nnpx -y scholarly-research-mcp\n```\n\nor, after cloning this repo and building:\n\n```bash\nnode dist/index.js\n```\n\nConfigure your AI tool to use that command as an MCP server.\n\n### Manual – Copy configuration JSON\n\nFor any MCP-compatible assistant that accepts a JSON config (similar to `mcp.json`), use:\n\n```json\n{\n  \"mcpServers\": {\n    \"scholarly-research-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"scholarly-research-mcp\"]\n    }\n  }\n}\n```\n\nPaste this into the assistant’s MCP configuration and adjust paths/env vars if needed.\n\n## Requirements\n\n- **Node.js >= 18.17** (LTS recommended). Check with `node -v`.\n- **npm** (comes with Node.js).\n- **Google Chrome or Chromium** (optional) – only needed for Google Scholar scraping and ArXiv full-text extraction. If you only use PubMed, ArXiv API search, or Firecrawl-based features, no browser is required. You can point to a custom binary with `PUPPETEER_EXECUTABLE_PATH` or `CHROME_PATH`.\n\n## Local MCP Setup\n\n1. **Download the tool**\n   ```bash\n   git clone https://github.com/aringadre76/mcp-for-research.git\n   cd mcp-for-research\n   ```\n\n2. **Install dependencies**\n   ```bash\n   npm install\n   ```\n\n3. **Build the tool**\n   ```bash\n   npm run build\n   ```\n\n4. **Configure your AI assistant**\n   - Find \"MCP Servers\" or \"Tools\" in your AI assistant's settings\n   - Add a new MCP server\n   - Set the command to: `node dist/index.js`\n   - Set the working directory to your project folder\n\n5. **Test the setup**\n   ```bash\n   npm run test:all-tools-bash\n   ```\n\n6. **Connect from your AI assistant**\n   - Open your assistant's settings and find the section for MCP servers or tools.\n   - Add a new MCP server that runs the command `node dist/index.js` in the `mcp-for-research` folder.\n   - Save the configuration and ask the assistant to list or use the `research_search` tool to confirm it is working.\n\n## Available Tools\n\nThe server provides **5 consolidated MCP tools** that replace the previous 24 individual tools:\n\n### 1. **`research_search`**\nComprehensive research paper search across PubMed, Google Scholar, and ArXiv. Uses the preference-aware adapter: when Firecrawl is configured and the preference is set, Google Scholar can use Firecrawl instead of Puppeteer. JSTOR is accepted in `sources` but not implemented; if requested, a note is appended: \"JSTOR is not implemented; results are from other sources.\"\n\n**Parameters**: Query, sources (pubmed, google-scholar, arxiv, jstor), maxResults, startDate, endDate, journal, author, includeAbstracts, sortBy\n\n### 2. **`paper_analysis`**\nGet comprehensive paper information, full text, and analysis including quotes, statistics, and findings.\n\n**Combines**: Paper retrieval, content extraction, and analysis tools\n**Parameters**: Identifier, analysis type, quote limits, section lengths\n\n### 3. **`citation_manager`**\nGenerate citations in multiple formats and get citation information including counts and related papers.\n\n**Combines**: Citation tools, citation counting, and related paper discovery\n**Parameters**: Identifier, action, format, related paper limits\n\n### 4. **`research_preferences`**\nManage research preferences including source priorities, search settings, display options, and caching.\n\n**Combines**: All preference management tools\n**Parameters**: Action, category, various preference values\n\n### 5. **`web_research`**\nPerform web-based research using Firecrawl for reliable content extraction and analysis.\n\n**Requires**: Set `FIRECRAWL_API_KEY` for scrape and search. Extract, map, and crawl are not implemented; use scrape or search.\n**Parameters**: Action (scrape, search, extract, map, crawl), url, query, maxResults, formats, onlyMainContent, waitFor\n\n## Usage Examples\n\n### Search for Papers\n```json\n{\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"research_search\",\n    \"arguments\": {\n      \"query\": \"machine learning\",\n      \"sources\": [\"pubmed\", \"arxiv\"],\n      \"maxResults\": 15,\n      \"startDate\": \"2020/01/01\"\n    }\n  }\n}\n```\n\n### Analyze a Paper\n```json\n{\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"paper_analysis\",\n    \"arguments\": {\n      \"identifier\": \"12345678\",\n      \"analysisType\": \"complete\",\n      \"maxQuotes\": 20\n    }\n  }\n}\n```\n\n### Get Citations\n```json\n{\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"citation_manager\",\n    \"arguments\": {\n      \"identifier\": \"12345678\",\n      \"action\": \"all\",\n      \"format\": \"apa\"\n    }\n  }\n}\n```\n\n## Migration from Previous Version\n\nThe consolidated tools are **backward compatible** - you can still access the same functionality, just through fewer, more powerful tools. Each consolidated tool accepts parameters that let you specify exactly what you want to do.\n\n| Old Tool | New Tool | Notes |\n|----------|----------|-------|\n| `search_papers` | `research_search` | Use `sources: [\"pubmed\"]` |\n| `get_paper_by_id` | `paper_analysis` | Use `analysisType: \"basic\"` |\n| `get_full_text` | `paper_analysis` | Use `analysisType: \"full-text\"` |\n| `get_citation` | `citation_manager` | Use `action: \"generate\"` |\n| `set_source_preference` | `research_preferences` | Use `action: \"set\", category: \"source\"` |\n\n## Troubleshooting\n\n### Common Issues\n\n**Q: The tool doesn't start**\nA: Make sure you have Node.js >= 18.17 installed (`node -v`). If running from a clone, run `npm install && npm run build` first.\n\n**Q: My AI assistant can't find the tools**\nA: Check that the MCP server path is correct in your AI assistant's settings. After adding the config, fully restart the assistant.\n\n**Q: Google Scholar or ArXiv full-text features fail with a Chrome error**\nA: These features need a local Chrome or Chromium binary. Install Google Chrome, or set `PUPPETEER_EXECUTABLE_PATH=/path/to/chrome`. PubMed, ArXiv API search, and Firecrawl features work without a browser.\n\n**Q: Searches return no results**\nA: Try different search terms or check if your sources are enabled in preferences.\n\n**Q: How do I get papers in a specific format?**\nA: Use the citation tools to get the paper in the format you need (APA, MLA, etc.).\n\n## Development\n\n### Running Tests\n```bash\nnpm run test:all-tools-bash\n```\n\n### Building\n```bash\nnpm run build\n```\n\n### Development Mode\n```bash\nnpm run dev\n```\n\n## Contributing\n\nWe welcome contributions! Please see our contributing guidelines and feel free to submit issues or pull requests.\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Documentation\n\nFor comprehensive documentation, guides, and technical details, see the [`docs/`](./docs/) directory:\n\n- **[Documentation Overview](./docs/README.md)** - Complete documentation index\n- **[Consolidation Guide](./docs/CONSOLIDATION_GUIDE.md)** - Detailed explanation of the new approach\n- **[Tool Reference](./docs/TOOL_CONSOLIDATION.md)** - Quick mapping from old to new tools\n- **[API Reference](./docs/API_REFERENCE.md)** - Complete tool documentation\n- **[Project Structure](./docs/PROJECT_STRUCTURE.md)** - Clean project organization\n\n## Version History\n\n- **v2.0.2**: One-click install buttons, switched to puppeteer-core (no Chromium download), pinned cheerio for Node 18 compatibility, added engines field, security fix for .env in npm package\n- **v2.0.1**: Firecrawl web research and Google Scholar integration improvements, documentation cleanup\n- **v2.0.0**: Consolidated 24 tools into 5 powerful tools\n- **v1.4.x**: Previous version with 24 individual tools\n- **v1.0.x**: Initial release\n\n","readmeFilename":"README.md"}