Skip to main content
Glama

Scholarly Research MCP Server

by aringadre76
test-arxiv-adapter.js4.75 kB
const { ArXivAdapter } = require('../dist/adapters/arxiv'); async function testArXivAdapter() { console.log('Testing ArXiv Adapter...\n'); const adapter = new ArXivAdapter(); try { console.log('1. Testing adapter creation...'); console.log('✓ ArXiv adapter created successfully'); console.log('\n2. Testing search papers...'); const searchResults = await adapter.searchPapers({ query: 'machine learning', maxResults: 5, startYear: 2023, endYear: 2024, sortBy: 'relevance' }); if (searchResults && searchResults.length > 0) { console.log(`✓ Search returned ${searchResults.length} papers`); console.log(` - First paper: ${searchResults[0].title}`); console.log(` - ArXiv ID: ${searchResults[0].id}`); console.log(` - Authors: ${searchResults[0].authors.join(', ')}`); console.log(` - Categories: ${searchResults[0].categories.join(', ')}`); console.log(` - PDF URL: ${searchResults[0].pdfUrl}`); console.log(` - Abstract URL: ${searchResults[0].absUrl}`); } else { console.log('⚠ Search returned no results (this might be expected)'); } console.log('\n3. Testing get paper by ID...'); if (searchResults && searchResults.length > 0) { const paperId = searchResults[0].id; const paper = await adapter.getPaperById(paperId); if (paper) { console.log(`✓ Retrieved paper: ${paper.title}`); console.log(` - ArXiv ID: ${paper.id}`); console.log(` - Authors: ${paper.authors.join(', ')}`); console.log(` - Abstract length: ${paper.abstract.length} characters`); console.log(` - Categories: ${paper.categories.join(', ')}`); } else { console.log('⚠ Failed to retrieve paper by ID'); } } else { console.log('⚠ Skipping paper retrieval test (no search results)'); } console.log('\n4. Testing related papers...'); if (searchResults && searchResults.length > 0) { const paperId = searchResults[0].id; const relatedPapers = await adapter.getRelatedPapers(paperId, 3); if (relatedPapers && relatedPapers.length > 0) { console.log(`✓ Found ${relatedPapers.length} related papers`); relatedPapers.forEach((paper, index) => { console.log(` ${index + 1}. ${paper.title} (${paper.id})`); }); } else { console.log('⚠ No related papers found'); } } else { console.log('⚠ Skipping related papers test (no search results)'); } console.log('\n5. Testing PDF download...'); if (searchResults && searchResults.length > 0) { const paperId = searchResults[0].id; try { const pdfBuffer = await adapter.getPaperPDF(paperId); if (pdfBuffer) { console.log(`✓ PDF downloaded successfully (${(pdfBuffer.length / 1024 / 1024).toFixed(2)} MB)`); } else { console.log('⚠ PDF download returned null'); } } catch (error) { console.log(`⚠ PDF download failed: ${error.message}`); } } else { console.log('⚠ Skipping PDF download test (no search results)'); } console.log('\n6. Testing advanced search options...'); const advancedResults = await adapter.searchPapers({ query: 'deep learning', maxResults: 3, startYear: 2024, endYear: 2024, sortBy: 'submittedDate', sortOrder: 'descending', categories: ['cs.AI', 'cs.LG'] }); if (advancedResults && advancedResults.length > 0) { console.log(`✓ Advanced search returned ${advancedResults.length} papers`); console.log(` - Categories filter applied: ${advancedResults[0].categories.join(', ')}`); } else { console.log('⚠ Advanced search returned no results'); } console.log('\n7. Testing error handling...'); try { await adapter.getPaperById('invalid-id-12345'); console.log('⚠ Should have thrown error for invalid ID'); } catch (error) { console.log('✓ Error handling works correctly for invalid ID'); } console.log('\n8. Testing adapter cleanup...'); await adapter.close(); console.log('✓ Adapter closed successfully'); console.log('\n✅ All ArXiv adapter tests completed!'); } catch (error) { console.error('❌ Test failed:', error.message); console.error('Stack trace:', error.stack); try { await adapter.close(); } catch (closeError) { console.error('Failed to close adapter:', closeError.message); } } } if (require.main === module) { testArXivAdapter().catch(console.error); } module.exports = { testArXivAdapter };

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/aringadre76/mcp-for-research'

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