com um clique
ieee-search
// Searches for academic papers on IEEE Xplore. Use when the user wants to find papers by keyword on IEEE Xplore.
// Searches for academic papers on IEEE Xplore. Use when the user wants to find papers by keyword on IEEE Xplore.
Performs advanced search on IEEE Xplore with filters like author, title, publication, year, DOI. Use when the user wants filtered academic paper search.
Downloads PDF from IEEE Xplore articles. Requires institutional or subscriber access. Use when the user wants to download a paper PDF by article number.
Exports citations from IEEE Xplore in RIS, BibTeX, or plain text format. Supports pushing to Zotero. Use when the user wants to export or save citation data for papers.
Browses a journal or conference on IEEE Xplore — views info, impact factor, latest articles, and specific issues. Use when the user asks about a journal/conference or wants to browse its contents.
Navigates pages, changes sort order, or adjusts results per page on IEEE Xplore search results. Use when the user wants to go to the next page, sort by date or citations, or change results per page.
Extracts full metadata from an IEEE Xplore article page (abstract, authors, keywords, DOI, references, PDF link). Use when the user wants details about a specific paper.
| name | ieee-search |
| description | Searches for academic papers on IEEE Xplore. Use when the user wants to find papers by keyword on IEEE Xplore. |
| argument-hint | [search keywords] |
Search for academic papers on IEEE Xplore using Chrome DevTools MCP.
Before the first operation, check the current browser page URL to determine which IEEE Xplore domain the user is accessing. Store it as BASE_URL. Common patterns:
https://ieeexplore.ieee.orgieeexplore in the hostname (e.g. WebVPN or EZProxy)Use whatever origin the user's browser is currently on. If no IEEE Xplore page is open, ask the user which URL to use.
Use navigate_page to go to:
{BASE_URL}/search/searchresult.jsp?queryText={QUERY}&highlight=true&returnFacets=ALL&returnType=SEARCH&matchPubs=true&rowsPerPage=25&pageNumber=1
Where {QUERY} is the URL-encoded search keywords from $ARGUMENTS.
Important: Always include initScript to prevent bot detection:
initScript: "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
After navigation, verify the page loaded correctly:
ieeexplore, the user may have been redirected to a login page. Tell the user: "页面被重定向,请在浏览器中完成登录或认证后告知我。" Then wait.Use evaluate_script with built-in waiting. Do NOT use wait_for — it returns the full page snapshot which can exceed token limits.
async () => {
// Wait for results to load (up to 15s)
for (let i = 0; i < 30; i++) {
if (document.querySelectorAll('.List-results-items .result-item').length > 0 ||
document.querySelector('.Dashboard-header span')) break;
await new Promise(r => setTimeout(r, 500));
}
const items = document.querySelectorAll('.List-results-items .result-item');
const papers = [];
for (let i = 0; i < items.length; i++) {
const item = items[i];
const titleLink = item.querySelector('h3 a[href*="/document/"]');
const authors = [...item.querySelectorAll('.author a[href*="/author/"]')].map(a => a.textContent.trim());
const pubLink = item.querySelector('.description a[href*="/xpl/"]');
const publisherInfo = item.querySelector('.publisher-info-container');
const infoText = publisherInfo?.textContent?.trim() || '';
const yearMatch = infoText.match(/Year:\s*(\d{4})/);
const docNumber = titleLink?.href?.match(/\/document\/(\d+)/)?.[1] || '';
const abstractSnippet = item.querySelector('.js-displayer-content span')?.textContent?.trim() || '';
// Cited by: extract from full text content using regex (DOM selector varies across pages)
const itemText = item.textContent || '';
// Two formats: "Cited by: 70" (default sort) and "Cited by: Papers (190)" (citation sort)
const citedByMatch = itemText.match(/Cited by:.*?(\d+)/);
const citedBy = citedByMatch ? citedByMatch[1] : '';
papers.push({
rank: i + 1,
title: titleLink?.textContent?.trim()?.replace(/<[^>]+>/g, '') || '',
arnumber: docNumber,
authors,
publication: pubLink?.textContent?.trim() || '',
year: yearMatch ? yearMatch[1] : '',
info: infoText,
citedBy,
abstract: abstractSnippet.substring(0, 200),
});
}
const resultCount = document.querySelector('.Dashboard-header span')?.textContent?.trim() || '';
const noResults = resultCount.includes('No results') || items.length === 0;
return { papers, resultCount, noResults };
}
If noResults is true:
ieee-standards-search.Format results as a numbered list:
{resultCount}
1. {title}
Authors: {authors}
Publication: {publication} | {year}
Info: {info}
Cited by: {citedBy} | Article #: {arnumber}
2. ...
| Element | Selector |
|---|---|
| Result items | .List-results-items .result-item |
| Title link | h3 a[href*="/document/"] |
| Authors | .author a[href*="/author/"] |
| Publication link | .description a[href*="/xpl/"] |
| Publisher info | .publisher-info-container |
| Abstract snippet | .js-displayer-content span |
| Cited by | Regex Cited by:\s*(\d+) on item text (DOM selector unreliable) |
| Result count | .Dashboard-header span |
| Checkbox | input[type="checkbox"][aria-label="Select search result"] |
| Param | Description | Example |
|---|---|---|
queryText | Query string | deep learning |
rowsPerPage | Results per page | 25, 50, 75, 100 |
pageNumber | Page number (1-based) | 1, 2, 3 |
sortType | Sort order | newest, oldest, paper-citations, patent-citations, most-popular |
highlight | Highlight matches | true |
returnFacets | Return facets | ALL |
returnType | Return type | SEARCH |
matchPubs | Match publications | true |
Quoting matters: IEEE Xplore treats unquoted words as individual tokens joined by OR. Always quote multi-word phrases.
| Query | Results | Quality |
|---|---|---|
coupling capacitor power line carrier | ~12,000+ | Terrible — each word matches independently |
"coupling capacitor" "power line carrier" | 4 | Excellent — exact phrases, both required |
"coupling capacitor" OR "capacitor divider" | Moderate | OK — OR between synonyms of same concept |
"coupling capacitor" OR "power line carrier" | ~12,000+ | Bad — OR between different concepts |
Rules:
"drain coil" OR "line trap")"HVDC" or "high voltage" to prevent cross-domain noiseieee-advanced-search with matchBoolean=true for full boolean controlarnumber) needed for detail extraction, PDF download, and citation export.navigate_page + evaluate_script.evaluate_script handles this.ieee-standards-search.citedBy field is extracted via regex from the item's text content, not a specific DOM element, because IEEE Xplore's cited-by markup varies.