Pubmed_Search

YOUNGSUK81/Pubmed_Search

3.2

If you are the rightful owner of Pubmed_Search and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The PubMed Search MCP Server analyzes medical queries to search for related papers on PubMed, providing results based on relevance and journal Impact Factor in EndNote format.

Tools
2
Resources
0
Prompts
0

PubMed Search MCP Server

Model Context Protocol(MCP) ์„œ๋ฒ„๋กœ, ์˜ํ•™ ์ฃผ์ œ์— ๊ด€ํ•œ ์งˆ๋ฌธ์„ ๋ถ„์„ํ•˜์—ฌ PubMed์—์„œ ๊ด€๋ จ ๋…ผ๋ฌธ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์—ฐ๊ด€์„ฑ ๋ฐ ์ €๋„ Impact Factor์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ EndNote ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ ๋ถ„์„: ์˜ํ•™ ๊ด€๋ จ ์งˆ๋ฌธ์„ ๋ถ„์„ํ•˜์—ฌ, PubMed API๋ฅผ ํ†ตํ•ด ์˜ํ•™ ๋…ผ๋ฌธ ๊ฒ€์ƒ‰
  • ์—ฐ๊ด€์„ฑ ๋ถ„์„: ๋…ผ๋ฌธ์˜ ์ œ๋ชฉ, ์ดˆ๋ก, MeSH ์šฉ์–ด ๋“ฑ์„ ๋ถ„์„ํ•˜์—ฌ ์งˆ๋ฌธ๊ณผ ๊ฐ€์žฅ ๊ด€๋ จ์„ฑ ๋†’์€ ๋…ผ๋ฌธ ์„ ๋ณ„
  • Impact Factor ๊ธฐ๋ฐ˜ ์ •๋ ฌ: ์ €๋„์˜ Impact Factor์— ๋”ฐ๋ผ ๋…ผ๋ฌธ์„ ์ •๋ ฌํ•˜์—ฌ ์˜ํ–ฅ๋ ฅ ๋†’์€ ์—ฐ๊ตฌ ์ œ๊ณต
  • EndNote ํ˜•์‹ ์ถœ๋ ฅ: ์„ ๋ณ„๋œ ๋…ผ๋ฌธ์„ EndNote ํ˜ธํ™˜ ํฌ๋งท์œผ๋กœ ์ถœ๋ ฅํ•˜์—ฌ ๋ฌธํ—Œ ๊ด€๋ฆฌ ์šฉ์ด
  • ๊ฒฐ๊ณผ ๋ถ„๋ฅ˜: ์„ธ ๊ฐ€์ง€ ํŒŒ์ผ๋กœ ๊ฒฐ๊ณผ ์ œ๊ณต
    • ์—ฐ๊ด€์„ฑ์ด ๋†’์€ ๋…ผ๋ฌธ ๋ชฉ๋ก
    • Impact Factor๊ฐ€ ๋†’์€ ๋…ผ๋ฌธ ๋ชฉ๋ก
    • Impact Factor ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—†๋Š” ์ €๋„์˜ ๋…ผ๋ฌธ ๋ชฉ๋ก

๋„๊ตฌ ์„ค๋ช…

  • pubmed_search: PubMed์—์„œ ์˜ํ•™ ๋…ผ๋ฌธ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„

    • ์ž…๋ ฅ:
      • query (string, ํ•„์ˆ˜): ์˜ํ•™ ๊ด€๋ จ ์งˆ๋ฌธ ๋˜๋Š” ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ
      • maxResults (number, ์„ ํƒ, ๊ธฐ๋ณธ๊ฐ’: 10): ๋ฐ˜ํ™˜ํ•  ์ตœ๋Œ€ ๊ฒฐ๊ณผ ์ˆ˜
      • outputDir (string, ์„ ํƒ, ๊ธฐ๋ณธ๊ฐ’: "./output"): ๊ฒฐ๊ณผ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ
  • load_impact_factor: Impact Factor ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋กœ๋“œ

    • ์ž…๋ ฅ:
      • filePath (string, ํ•„์ˆ˜): Impact Factor ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ฒฝ๋กœ

์„ค์น˜ ๋ฐ ์„ค์ •

ํ•„์ˆ˜ ์กฐ๊ฑด

Impact Factor ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜

PDF ํ˜•์‹์˜ Impact Factor ๋ฐ์ดํ„ฐ๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜:

# ๋ณ€ํ™˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
node impact-factor-converter.js impact-factor.pdf impact_factor_data.json

์„ค์น˜

# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/YOUNGSUK81/Pubmed_Search.git
cd Pubmed_Search

# ์˜์กด์„ฑ ์„ค์น˜
npm install

# ๋นŒ๋“œ
npm run build

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

# NCBI API ํ‚ค ์„ค์ •
export NCBI_API_KEY=your_api_key_here

# Impact Factor ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ ์„ค์ •(์„ ํƒ ์‚ฌํ•ญ)
export IMPACT_FACTOR_PATH=./path/to/impact_factor_data.json

# ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ •(์„ ํƒ ์‚ฌํ•ญ)
export OUTPUT_DIR=./output

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

Claude Desktop๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ

Claude Desktop ์„ค์ • ํŒŒ์ผ(claude_desktop_config.json)์— ๋‹ค์Œ์„ ์ถ”๊ฐ€:

{
  "mcpServers": {
    "pubmed-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-pubmed-search"],
      "env": {
        "NCBI_API_KEY": "9585a3fc07ce86e32a3f42169e2c571a5708",
        "IMPACT_FACTOR_PATH": "./impact_factor_data.json",
        "OUTPUT_DIR": "./output"
      }
    }
  }
}

Docker ์‚ฌ์šฉ

{
  "mcpServers": {
    "pubmed-search": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "NCBI_API_KEY=9585a3fc07ce86e32a3f42169e2c571a5708",
        "-v",
        "/path/to/impact_factor_data.json:/data/impact_factor_data.json",
        "-v",
        "/path/to/output:/data/output",
        "mcp/pubmed-search"
      ]
    }
  }
}

VS Code์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

VS Code ์„ค์ • ํŒŒ์ผ(.vscode/settings.json ๋˜๋Š” User Settings)์— ๋‹ค์Œ ์ถ”๊ฐ€:

{
  "mcp": {
    "servers": {
      "pubmed-search": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-pubmed-search"],
        "env": {
          "NCBI_API_KEY": "9585a3fc07ce86e32a3f42169e2c571a5708",
          "IMPACT_FACTOR_PATH": "./impact_factor_data.json",
          "OUTPUT_DIR": "./output"
        }
      }
    }
  }
}

๋„์ปค ๋นŒ๋“œ

์ง์ ‘ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด:

docker build -t mcp/pubmed-search .

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

pubmed-search-mcp-server/
โ”œโ”€โ”€ package.json                   # ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ ์ •๋ณด
โ”œโ”€โ”€ tsconfig.json                  # TypeScript ์„ค์ •
โ”œโ”€โ”€ Dockerfile                     # Docker ๋นŒ๋“œ ์„ค์ •
โ”œโ”€โ”€ README.md                      # ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ
โ”œโ”€โ”€ impact-factor-converter.js     # PDF โ†’ JSON ๋ณ€ํ™˜ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ impact_factor_data.json        # Impact Factor ๋ฐ์ดํ„ฐ (์ƒ์„ฑ๋จ)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts                   # ๋ฉ”์ธ ์„œ๋ฒ„ ํŒŒ์ผ
โ”‚   โ””โ”€โ”€ pubmed-service.ts          # PubMed API ๋ฐ ๋ถ„์„ ์„œ๋น„์Šค
โ””โ”€โ”€ output/                        # ๊ฒฐ๊ณผ ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ (์ƒ์„ฑ๋จ)
    โ”œโ”€โ”€ relevance-results.txt      # ์—ฐ๊ด€์„ฑ ๋†’์€ ๋…ผ๋ฌธ ๊ฒฐ๊ณผ
    โ”œโ”€โ”€ impact-factor-results.txt  # Impact Factor ๋†’์€ ๋…ผ๋ฌธ ๊ฒฐ๊ณผ
    โ””โ”€โ”€ unknown-impact-factor.txt  # Impact Factor ๋ฏธ์ƒ ๋…ผ๋ฌธ ๋ชฉ๋ก

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

ํ”„๋กœ์ ํŠธ ํ™•์žฅ ์‹œ ๊ณ ๋ คํ•  ์‚ฌํ•ญ:

  1. pubmed-service.ts: PubMed API ์š”์ฒญ ๋ฐ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ ๋กœ์ง์ด ํฌํ•จ๋œ ํ•ต์‹ฌ ๋ชจ๋“ˆ
  2. index.ts: MCP ์„œ๋ฒ„ ์ดˆ๊ธฐํ™” ๋ฐ ๋„๊ตฌ ์ •์˜, ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ชจ๋“ˆ
  3. impact-factor-converter.js: Impact Factor ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ์Šคํฌ๋ฆฝํŠธ (PDF โ†’ JSON)

์ƒˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด:

  1. pubmed-service.ts์— ํ•„์š”ํ•œ ํ•จ์ˆ˜ ๊ตฌํ˜„
  2. index.ts์˜ ListToolsRequestSchema ํ•ธ๋“ค๋Ÿฌ์— ๋„๊ตฌ ์ •์˜ ์ถ”๊ฐ€
  3. CallToolRequestSchema ํ•ธ๋“ค๋Ÿฌ์— ๋„๊ตฌ ์ฒ˜๋ฆฌ ๋กœ์ง ์ถ”๊ฐ€

๋ผ์ด์„ผ์Šค

MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.