PubMed文章搜索服务

基于Python的PubMed MCP服务器,部署在Azure Functions上,提供PubMed文章搜索功能,支持HTTP请求返回文章标题和摘要。

  • by brown-tech-info
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 brown-tech-info/pubmed-mcp-azure-function

使用说明

PubMed MCP Azure功能

该项目是PubMed的基于Python的MCP(模型上下文协议)服务器,作为Azure函数托管,并与Azure AI Foundry集成。

特性

  • 通过HTTP请求搜索PubMed文章并返回标题和摘要。
  • 使用带有API密钥和电子邮件的PubMed Entrez API进行身份验证。
  • 部署在Azure函数(Linux、Python 3.11)上。
  • 匿名公共端点(不需要功能密钥)。
  • OpenAPI 3.0.1代理/工具集成规范。

设置

先决条件

  • Python 3.11
  • Azure功能核心工具
  • Azure命令行界面
  • Azure订阅
  • PubMed API密钥和注册电子邮件

地方发展

  1. 克隆存储库。
  2. 安装依赖项:
    pip install -r requirements.txt
    
  3. 将您的PubMed API密钥和电子邮件添加到 local.settings.json:
    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "python",
        "PUBMED_API_KEY": "<your_pubmed_api_key>",
        "PUBMED_EMAIL": "<your_email>"
      }
    }
    
  4. 在本地启动该功能:
    func start
    
  5. 本地测试:
    curl "http://localhost:7071/api/pubmed_mcp?query=cancer"
    

Azure部署

  1. 登录到Azure:
    az login
    
  2. 创建资源组:
    az group create --name <ResourceGroup> --location <Region>
    
  3. 创建存储帐户:
    az storage account create --name <StorageAccount> --location <Region> --resource-group <ResourceGroup> --sku Standard_LRS
    
  4. 创建函数应用程序(Linux,Python 3.11):
    az functionapp create --resource-group <ResourceGroup> --consumption-plan-location <Region> --runtime python --runtime-version 3.11 --functions-version 4 --name <FunctionAppName> --storage-account <StorageAccount> --os-type Linux
    
  5. 发布您的代码:
    func azure functionapp publish <FunctionAppName>
    
  6. 在Azure中设置环境变量:
    az functionapp config appsettings set --name <FunctionAppName> --resource-group <ResourceGroup> --settings PUBMED_API_KEY="<your_pubmed_api_key>" PUBMED_EMAIL="<your_email>"
    
  7. 测试已部署的功能(无需按键):
    curl "https://<FunctionAppName>.azurewebsites.net/api/pubmed_mcp?query=cancer"
    

代理和工具集成

  • 该功能与Azure AI Foundry代理和其他基于OpenAPI的工具兼容。
  • OpenAPI规范(openapi.json)描述了代理集成的端点。
  • 代理提示示例:

    查找PubMed最近关于癌症的文章,并返回它们的标题和摘要。

安全

  • 不要将您的真实API密钥或敏感信息提交给源代码管理。
  • 使用环境变量作为机密。

日志记录

  • 该函数将请求、错误和PubMed API响应记录到Azure日志流。

定制

  • 您可以扩展MCP服务器以支持更多PubMed功能或自定义端点。

许可证

麻省理工学院