Skip to content

Latest commit

ย 

History

History
538 lines (409 loc) ยท 15.5 KB

File metadata and controls

538 lines (409 loc) ยท 15.5 KB

PubMed Search MCP Server - ้ ็ซฏๆœๅ‹™้ƒจ็ฝฒๆŒ‡ๅ—

๐Ÿ“‹ ็›ฎ้Œ„


๐ŸŽฏ ้ƒจ็ฝฒๆจกๅผ็ธฝ่ฆฝ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                           Deployment Options                                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   HTTP (Dev)    โ”‚   Streamable    โ”‚   MCP stdio     โ”‚   HTTPS (Production)   โ”‚
โ”‚   (Port 8765)   โ”‚   HTTP (8765)   โ”‚   (Local)       โ”‚   (Nginx + TLS)        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โœ… Quick test   โ”‚ โœ… Copilot      โ”‚ โœ… Claude       โ”‚ โœ… Production deploy   โ”‚
โ”‚                 โ”‚    Studio       โ”‚    Desktop      โ”‚ โœ… Secure connections  โ”‚
โ”‚                 โ”‚ โœ… M365 Copilot โ”‚ โœ… VS Code      โ”‚ โœ… Rate limiting       โ”‚
โ”‚                 โ”‚ โœ… Docker/Cloud โ”‚    Copilot      โ”‚ โœ… TLS 1.2/1.3         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Mode Protocol Port Best For
stdio MCP stdio - Local Claude Desktop, VS Code Copilot
streamable-http Streamable HTTP 8765 Microsoft Copilot Studio, M365 Copilot โญ
sse MCP over SSE 8765 Other remote MCP clients (deprecated in some platforms)
https HTTPS (Nginx) 443 Production with TLS encryption ๐Ÿ”’

๐Ÿข Microsoft Copilot Studio ๆ•ดๅˆ

ๅฐ‡ PubMed Search MCP ๆ•ดๅˆๅˆฐ Microsoft 365 Copilot (Word, Teams, etc.)๏ผ

ๆžถๆง‹

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Microsoft 365                                 โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”‚
โ”‚  โ”‚  Word   โ”‚  โ”‚  Teams  โ”‚  โ”‚ Outlook โ”‚  โ”‚ Copilot โ”‚            โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜            โ”‚
โ”‚       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ”‚
โ”‚                           โ”‚                                      โ”‚
โ”‚                    Copilot Studio                                โ”‚
โ”‚                    (Declarative Agent)                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚ Streamable HTTP
                            โ–ผ
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚   PubMed Search MCP      โ”‚
              โ”‚   /mcp endpoint          โ”‚
              โ”‚                          โ”‚
              โ”‚ โ€ข 35+ Tools              โ”‚
              โ”‚ โ€ข PICO Analysis          โ”‚
              โ”‚ โ€ข Full Text Access       โ”‚
              โ”‚ โ€ข Citation Export        โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

้œ€ๆฑ‚

้ …็›ฎ ้œ€ๆฑ‚
Transport Streamable HTTP (SSE ๅทฒๆ–ผ 2025/8 ่ตทๅœ็”จ)
URL ๅ…ฌ้–‹ๅฏ่จชๅ•็š„ HTTPS URL
Endpoint /mcp
่ช่ญ‰ None, API Key, ๆˆ– OAuth 2.0

ๅฟซ้€Ÿ้–‹ๅง‹

ๆ–นๆณ• 1๏ผšไฝฟ็”จ ngrok ๅฟซ้€Ÿๆธฌ่ฉฆ

# ๅ•Ÿๅ‹•่…ณๆœฌ (ๅซ ngrok)
./scripts/start-copilot-studio.sh --with-ngrok

# ่ผธๅ‡บ้กžไผผ๏ผš
# โœ… Server ready for Copilot Studio!
# Server URL: https://abc123.ngrok.io/mcp

ๆ–นๆณ• 2๏ผš้ƒจ็ฝฒๅˆฐ้›ฒ็ซฏ

# Railway (ๆŽจ่–ฆ๏ผŒๆœ‰ๅ…่ฒป้กๅบฆ)
railway up

# ๆˆ– Azure Container Apps
az containerapp create \
  --name pubmed-mcp \
  --resource-group myRG \
  --image u9401066/pubmed-search-mcp \
  --target-port 8765 \
  --env-vars MCP_TRANSPORT=streamable-http

Copilot Studio ่จญๅฎšๆญฅ้ฉŸ

  1. ๅ‰ๅพ€ Copilot Studio
  2. ๅ‰ตๅปบๆˆ–้ธๆ“‡ Agent โ†’ Tools โ†’ Add a tool โ†’ New tool
  3. ้ธๆ“‡ Model Context Protocol
  4. ๅกซๅ…ฅ๏ผš
ๆฌ„ไฝ ๅ€ผ
Server name PubMed Search
Server description ๆœๅฐ‹ PubMed ้†ซๅญธๆ–‡็ป (3300่ฌ+)ใ€MeSH ๆ“ดๅฑ•ใ€PICO ่‡จๅบŠๅˆ†ๆžใ€Europe PMC/CORE ๅ…จๆ–‡ใ€ๅŸบๅ› /ๅŒ–ๅˆ็‰ฉ็ ”็ฉถใ€ๅผ•็”จๅŒฏๅ‡บ
Server URL https://your-server.com/mcp
Authentication None (ๆˆ–้…็ฝฎ API Key)
  1. Create โ†’ Add to agent โ†’ Publish

ๅœจ Word Copilot ไธญไฝฟ็”จ

็™ผๅธƒๅพŒ๏ผŒๅœจ Word ไธญ๏ผš

  1. ๆ‰“้–‹ Copilot ๅด้‚Šๆฌ„
  2. ้ธๆ“‡ PubMed Search Agent
  3. ้–‹ๅง‹ๅฐ่ฉฑ๏ผš
    • ใ€Œๆœๅฐ‹ diabetes treatment ็š„ๆœ€ๆ–ฐ็ ”็ฉถใ€
    • ใ€Œๅˆ†ๆž้€™ๅ€‹่‡จๅบŠๅ•้กŒ๏ผšAspirin vs Clopidogrel ้ ้˜ฒไธญ้ขจใ€
    • ใ€Œๆ‰พๅ‡บ BRCA1 ๅŸบๅ› ็›ธ้—œ็š„ๆ–‡็ปใ€

ๅฏ็”จๅทฅๅ…ท (35+)

Copilot Studio ๆœƒ่‡ชๅ‹•็™ผ็พๆ‰€ๆœ‰ๅทฅๅ…ท๏ผš

้กžๅˆฅ ๅทฅๅ…ท
ๆœๅฐ‹ search_literature, search_europe_pmc, search_core
ๅˆ†ๆž parse_pico, generate_search_queries, merge_search_results
็™ผ็พ find_related_articles, find_citing_articles, build_citation_tree
ๅ…จๆ–‡ get_fulltext, get_fulltext_xml, get_core_fulltext
NCBI search_gene, search_compound, search_clinvar
ๅŒฏๅ‡บ prepare_export (RIS, BibTeX, CSV)

ๅฟซ้€Ÿ้–‹ๅง‹

1. ๅฎ‰่ฃ

# Clone repo
git clone https://github.com/u9401066/pubmed-search-mcp.git
cd pubmed-search-mcp

# ๅปบ็ซ‹่™›ๆ“ฌ็’ฐๅขƒ
python3 -m venv .venv
source .venv/bin/activate

# ๅฎ‰่ฃๅฅ—ไปถ
pip install -e ".[all]"

2. ๅ•Ÿๅ‹•ๆœๅ‹™

# Streamable HTTP ๆจกๅผ (ๆŽจ่–ฆ - Copilot Studio ็›ธๅฎน)
python run_server.py --transport streamable-http --port 8765 --email your@email.com

# SSE ๆจกๅผ (โš ๏ธ ๅทฒๆ–ผ 2025/8 ่ตทๅœจ Copilot Studio ๆฃ„็”จ)
python run_server.py --transport sse --port 8765 --email your@email.com

3. ๆธฌ่ฉฆ้€ฃๆŽฅ

# Streamable HTTP ๆจกๅผ
curl -X POST http://localhost:8765/mcp

# SSE ๆจกๅผ
curl http://localhost:8765/sse

้ƒจ็ฝฒ้ธ้ …

้ธ้ … 1: ็›ดๆŽฅ้‹่กŒ (้–‹็™ผ/ๆธฌ่ฉฆ)

# ่จญ็ฝฎ็’ฐๅขƒ่ฎŠๆ•ธ
export NCBI_EMAIL="your@email.com"
export NCBI_API_KEY="your_api_key"  # ๅฏ้ธ๏ผŒๆ้ซ˜่ซ‹ๆฑ‚้™ๅˆถ

# ๅ•Ÿๅ‹•ๆœๅ‹™ (้ ่จญ streamable-http)
python run_server.py --port 8765

้ธ้ … 2: ไฝฟ็”จ systemd (็”Ÿ็”ข็’ฐๅขƒ)

ๅ‰ตๅปบ /etc/systemd/system/pubmed-mcp.service:

[Unit]
Description=PubMed Search MCP Server
After=network.target

[Service]
Type=simple
User=your_user
WorkingDirectory=/path/to/pubmed-search-mcp
Environment=NCBI_EMAIL=your@email.com
Environment=NCBI_API_KEY=your_api_key
ExecStart=/path/to/pubmed-search-mcp/.venv/bin/python run_server.py --transport streamable-http --port 8765
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

ๅ•Ÿๅ‹•ๆœๅ‹™:

sudo systemctl daemon-reload
sudo systemctl enable pubmed-mcp
sudo systemctl start pubmed-mcp

้ธ้ … 3: ไฝฟ็”จ Docker

ๅ‰ตๅปบ Dockerfile:

FROM python:3.11-slim

WORKDIR /app
COPY . .

RUN pip install -e ".[all]"

EXPOSE 8765

ENV NCBI_EMAIL=pubmed-search@example.com

CMD ["python", "run_server.py", "--transport", "sse", "--port", "8765"]

ๆง‹ๅปบไธฆ้‹่กŒ:

docker build -t pubmed-mcp .
docker run -d -p 8765:8765 -e NCBI_EMAIL=your@email.com pubmed-mcp

๐Ÿ”’ HTTPS ้ƒจ็ฝฒ | HTTPS Deployment

็‚บ็”Ÿ็”ข็’ฐๅขƒๆไพ›ๅฎ‰ๅ…จ็š„ HTTPS ้€ฃ็ทš๏ผŒไฝฟ็”จ Nginx ๅๅ‘ไปฃ็†่™•็† TLS ็ต‚ๆญขใ€‚

ๆžถๆง‹ | Architecture

                    HTTPS (TLS 1.2/1.3)
                          โ”‚
                          โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Nginx Reverse Proxy                     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ โ€ข TLS Termination (SSL Certificates)           โ”‚ โ”‚
โ”‚  โ”‚ โ€ข Rate Limiting (30 req/s)                     โ”‚ โ”‚
โ”‚  โ”‚ โ€ข Security Headers (XSS, CSRF protection)      โ”‚ โ”‚
โ”‚  โ”‚ โ€ข SSE Optimization (24h timeout, no buffer)    โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚ HTTP (internal)
                            โ–ผ
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚   PubMed Search MCP      โ”‚
              โ”‚   (Port 8765)            โ”‚
              โ”‚                          โ”‚
              โ”‚ โ€ข /sse                   โ”‚
              โ”‚ โ€ข /messages              โ”‚
              โ”‚ โ€ข /exports               โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅฟซ้€Ÿ้–‹ๅง‹ | Quick Start

Option 1: Docker Deployment (ๆŽจ่–ฆ)

# Step 1: ็”Ÿๆˆ SSL ๆ†‘่ญ‰
chmod +x scripts/generate-ssl-certs.sh
./scripts/generate-ssl-certs.sh

# Step 2: ๅ•Ÿๅ‹• HTTPS ๆœๅ‹™
./scripts/start-https-docker.sh up

# ๅ…ถไป–ๅ‘ฝไปค
./scripts/start-https-docker.sh down     # ๅœๆญขๆœๅ‹™
./scripts/start-https-docker.sh logs     # ๆŸฅ็œ‹ๆ—ฅ่ชŒ
./scripts/start-https-docker.sh restart  # ้‡ๅ•Ÿๆœๅ‹™
./scripts/start-https-docker.sh status   # ๆŸฅ็œ‹็‹€ๆ…‹

็ซฏ้ปž | Endpoints:

Service URL Description
MCP SSE https://localhost/ MCP Server root
MCP SSE https://localhost/sse SSE connection
Health https://localhost/health Health check
Exports https://localhost/exports Export files

Option 2: Local Development (็„ก Docker)

ไฝฟ็”จ Uvicorn ๅŽŸ็”Ÿ SSL ๆ”ฏๆด้€ฒ่กŒๆœฌๅœฐๆธฌ่ฉฆใ€‚

# Step 1: ็”Ÿๆˆ SSL ๆ†‘่ญ‰
./scripts/generate-ssl-certs.sh

# Step 2: ๅ•Ÿๅ‹• HTTPS ๆœๅ‹™
./scripts/start-https-local.sh

# ๅœๆญขๆœๅ‹™
./scripts/start-https-local.sh stop

็ซฏ้ปž | Endpoints:

Service URL Description
MCP SSE https://localhost:8443/ MCP Server
MCP SSE https://localhost:8443/sse SSE connection

Claude Desktop ่จญๅฎš (HTTPS)

{
  "mcpServers": {
    "pubmed-search": {
      "url": "https://localhost/sse"
    }
  }
}

็”Ÿ็”ข็’ฐๅขƒไฝฟ็”จๅฏฆ้š›็ถฒๅŸŸ๏ผš

{
  "mcpServers": {
    "pubmed-search": {
      "url": "https://mcp.your-domain.com/sse"
    }
  }
}

ไฟกไปป่‡ช็ฐฝๆ†‘่ญ‰ | Trust Self-Signed Certificates

Linux (Ubuntu/Debian):

sudo cp nginx/ssl/ca.crt /usr/local/share/ca-certificates/pubmed-mcp-dev.crt
sudo update-ca-certificates

macOS:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain nginx/ssl/ca.crt

Windows:

้›™ๆ“Š ca.crt โ†’ ๅฎ‰่ฃๆ†‘่ญ‰ โ†’ ๆœฌๆฉŸ้›ป่…ฆ โ†’ ๅ—ไฟกไปป็š„ๆ นๆ†‘่ญ‰ๆŽˆๆฌŠ

็›ธ้—œๆช”ๆกˆ | Files

File Description
nginx/nginx.conf Nginx ่จญๅฎš (TLS, rate limiting, SSE optimization)
docker-compose.https.yml Docker Compose for HTTPS deployment
scripts/generate-ssl-certs.sh ็”Ÿๆˆ่‡ช็ฐฝ SSL ๆ†‘่ญ‰
scripts/start-https-docker.sh Docker HTTPS ๅ•Ÿๅ‹•่…ณๆœฌ
scripts/start-https-local.sh ๆœฌๅœฐ HTTPS ๅ•Ÿๅ‹•่…ณๆœฌ

๐Ÿณ Docker ้ƒจ็ฝฒ

Docker Compose (HTTP)

# ๅ•Ÿๅ‹•ๆœๅ‹™
docker-compose up -d

# ๆŸฅ็œ‹ๆ—ฅ่ชŒ
docker-compose logs -f

# ๅœๆญขๆœๅ‹™
docker-compose down

ๅฎขๆˆถ็ซฏ้…็ฝฎ

VS Code MCP ้…็ฝฎ (้ ็ซฏ้€ฃๆŽฅ)

ๅœจๅ…ถไป–ไธปๆฉŸ็š„ .vscode/mcp.json ไธญๆทปๅŠ :

{
  "servers": {
    "pubmed-search": {
      "type": "sse",
      "url": "http://YOUR_SERVER_IP:8765/sse"
    }
  }
}

Claude Desktop ้…็ฝฎ

ๅœจ claude_desktop_config.json ไธญๆทปๅŠ :

{
  "mcpServers": {
    "pubmed-search": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://YOUR_SERVER_IP:8765/sse"
      ]
    }
  }
}

Python ๅฎขๆˆถ็ซฏ

from mcp.client.sse import sse_client
from mcp import ClientSession
import asyncio

async def main():
    async with sse_client("http://YOUR_SERVER_IP:8765/sse") as streams:
        async with ClientSession(*streams) as session:
            await session.initialize()

            # ๆœๅฐ‹ๆ–‡็ป
            result = await session.call_tool(
                "search_literature",
                arguments={
                    "query": "diabetes treatment",
                    "limit": 5
                }
            )
            print(result.content[0].text)

asyncio.run(main())

ๅฏ็”จๅทฅๅ…ท

ๅทฅๅ…ทๅ็จฑ ่ชชๆ˜Ž
search_literature ๆœๅฐ‹ PubMed ๆ–‡็ป
find_related_articles ๅฐ‹ๆ‰พ็›ธ้—œๆ–‡็ซ 
find_citing_articles ๅฐ‹ๆ‰พๅผ•็”จๆ–‡็ซ 
fetch_article_details ็ฒๅ–ๆ–‡็ซ ่ฉณ็ดฐ่ณ‡่จŠ
generate_search_queries ็”Ÿๆˆๅคšๅ€‹ๆœๅฐ‹ๆŸฅ่ฉข
merge_search_results ๅˆไฝตๆœๅฐ‹็ตๆžœ
expand_search_queries ๆ“ดๅฑ•ๆœๅฐ‹ๆŸฅ่ฉข

็ถฒ่ทฏ้…็ฝฎ

้˜ฒ็ซ็‰†่จญๅฎš

# UFW
sudo ufw allow 8765/tcp

# iptables
sudo iptables -A INPUT -p tcp --dport 8765 -j ACCEPT

ๅๅ‘ไปฃ็† (Nginx)

server {
    listen 443 ssl;
    server_name mcp.yourdomain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:8765;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 86400;  # SSE ้œ€่ฆ้•ท้€ฃๆŽฅ
    }
}

ๆ•…้šœๆŽ’้™ค

้€ฃๆŽฅๅ•้กŒ

  1. ็ขบ่ชๆœๅ‹™ๆญฃๅœจ้‹่กŒ:

    curl http://localhost:8765/sse
  2. ๆชขๆŸฅ้˜ฒ็ซ็‰†่จญๅฎš

  3. ็ขบ่ช IP ๅœฐๅ€ๅฏ้”

ๆœๅฐ‹้Œฏ่ชค

  1. ็ขบ่ช NCBI_EMAIL ๅทฒ่จญๅฎš
  2. ๅฆ‚ๆžœ่ซ‹ๆฑ‚้ ป็น๏ผŒ่€ƒๆ…ฎ็”ณ่ซ‹ NCBI API Key

ๅฎ‰ๅ…จๅปบ่ญฐ

  1. ไฝฟ็”จ HTTPS: ๅœจ็”Ÿ็”ข็’ฐๅขƒไธญ๏ผŒ้€้Žๅๅ‘ไปฃ็†ๅ•Ÿ็”จ SSL/TLS
  2. ้™ๅˆถ่จชๅ•: ไฝฟ็”จ้˜ฒ็ซ็‰†้™ๅˆถๅฏ้€ฃๆŽฅ็š„ IP
  3. API Key: ไฝฟ็”จ NCBI API Key ๆ้ซ˜่ซ‹ๆฑ‚้™ๅˆถไธฆ่ฟฝ่นคไฝฟ็”จ
  4. ็›ฃๆŽง: ่จญๅฎšๆ—ฅ่ชŒ็›ฃๆŽง็•ฐๅธธๆดปๅ‹•