Frank Goortani CV MCP Server

Frank Goortani CV MCP Server

好的,明白了。 这是一台提供关于弗兰克·古尔塔尼的简历的静态答案的 MCP 服务器。 (Zhè shì yī tái tígōng guānyú Fúlánkè Gǔ'ěrtǎní de jiǎnlì de jìngtài dá'àn de MCP fúwùqì.)

FrankGoortani

研究与数据
访问服务器

README

Frank Goortani CV MCP 服务器

License: MIT TypeScript FastMCP Cloudflare Workers

一个专门用于提供 Frank Goortani 简历信息的模型上下文协议 (MCP) 服务器。该服务器提供对简历数据的结构化访问,使 AI 助手和其他 MCP 兼容的客户端能够以标准化格式检索、搜索和呈现专业信息。

项目概述

目的

本项目实现了一个 MCP 服务器,通过标准化接口公开 Frank Goortani 的简历信息。该服务器允许 AI 助手和 MCP 兼容的应用程序访问结构化的简历数据,包括专业简介、技能、工作经验等。

架构概述

该项目使用 FastMCP 框架构建,并遵循模型上下文协议规范。它采用模块化架构设计:

  • 核心模块: 包含数据结构、工具实现和资源定义
  • 服务器模块: 提供 stdio 和 HTTP 通信的传输处理程序
  • 部署: 配置为无缝部署到 Cloudflare Workers
graph TD
    LLM[LLM 系统] -->|MCP 协议| API[CV MCP API]
    API -->|工具| CV[简历数据]
    API -->|资源| MD[简历 Markdown]

    subgraph "Frank Goortani CV MCP 服务器"
        API
        subgraph "数据源"
            CV
            MD
        end
    end

    API -->|部署| CFW[Cloudflare Workers]

主要特性

  • 简历数据访问: 结构化访问个人资料信息、技能、兴趣和工作经验
  • Markdown 资源: 完整的简历以 markdown 资源的形式提供
  • 搜索功能: 跨所有简历部分进行文本搜索
  • 公司经验过滤: 定向检索特定公司的工作经验
  • 媒体访问: 直接链接到简历 PDF 和个人资料图片
  • 部署就绪: 配置为 Cloudflare Workers 部署
  • 双重传输: 支持 stdio(本地)和 HTTP(远程)通信

资源和工具

可用资源

URI 描述 类型
cv://frankgoortani Frank Goortani 的完整简历,markdown 格式 text/markdown

可用工具

get_profile

返回 Frank Goortani 的个人资料信息,包括姓名、职称和专业描述。

  • 参数: 无
  • 返回: 包含个人资料信息的 JSON 对象

示例:

// 请求
const result = await client.callTool("get_profile", {});

// 响应
{
  "name": "Frank Goortani",
  "title": "实践型解决方案架构师 | LLM, Web, Cloud, Mobile, Strategy",
  "certifications": ["TOGAF", "PMP"],
  "email": "frank@goortani.com",
  "description": "具有超过 25 年经验的有远见的技术主管和 AI 领导者..."
}

get_skills

返回 Frank Goortani 的专业技能列表。

  • 参数: 无
  • 返回: 技能的 JSON 数组

示例:

// 请求
const result = await client.callTool("get_skills", {});

// 响应
[
  "分布式系统、API 平台、微服务、集成、工作流系统",
  "生成式 AI、大型语言模型 (LLM)、AI 代理、AI 自动化、机器学习",
  "Go、Python、Java、Swift、Typescript 和 JavaScript 中的反应式和函数式编程",
  // ...其他技能
]

get_interests

返回 Frank Goortani 的专业兴趣列表。

  • 参数: 无
  • 返回: 兴趣的 JSON 数组

示例:

// 请求
const result = await client.callTool("get_interests", {});

// 响应
[
  "初创公司", "GoLang", "Python", "Typescript", "LangChain", "LLMs", "微服务", "MCPs"
]

search_cv

在整个简历中搜索特定术语并返回匹配的部分。

  • 参数:
    • query (string): 要在简历中查找的搜索词
  • 返回: 包含匹配部分的 JSON 对象

示例:

// 请求
const result = await client.callTool("search_cv", {
  query: "generative ai"
});

// 响应
{
  "matches": [
    {
      "section": "profile",
      "content": "具有超过 25 年经验的有远见的技术主管和 AI 领导者,在生成式 AI 领域推动战略创新..."
    },
    {
      "section": "skills",
      "content": "生成式 AI、大型语言模型 (LLM)、AI 代理、AI 自动化、机器学习"
    }
    // ...其他匹配项
  ]
}

get_company_experience

检索在特定公司的工作经验。

  • 参数:
    • company (string): 要获取经验的公司名称
  • 返回: 包含匹配经验的 JSON 对象

示例:

// 请求
const result = await client.callTool("get_company_experience", {
  company: "Uber"
});

// 响应
{
  "found": true,
  "experiences": [
    {
      "company": "Uber",
      "period": "2021-now",
      "title": "解决方案架构师",
      "highlights": [
        "致力于 UDE(用户数据提取)和 DSAR(数据主体访问请求)自动化...",
        // ...其他亮点
      ]
    }
  ]
}

get_resume_link

返回 Frank Goortani 的简历 PDF 的 URL。

  • 参数: 无
  • 返回: 包含简历 URL 的 JSON 对象

示例:

// 请求
const result = await client.callTool("get_resume_link", {});

// 响应
{
  "resumeLink": "media/Frank Goortani Resume--solution-architect-2024.pdf"
}

get_profile_picture

返回 Frank Goortani 的个人资料图片的 URL。

  • 参数: 无
  • 返回: 包含个人资料图片 URL 的 JSON 对象

示例:

// 请求
const result = await client.callTool("get_profile_picture", {});

// 响应
{
  "pictureLink": "media/frankgoortani.png"
}

部署说明

前提条件

本地开发

  1. 克隆存储库

    git clone <repository-url>
    cd cv-mcp
    
  2. 安装依赖项

    # 使用 Bun (推荐)
    bun install
    # 或者使用 npm
    npm install
    
  3. 使用 stdio 传输在本地启动服务器(用于 CLI 工具)

    # 使用 Bun
    bun start
    # 或者使用 npm
    npm start
    
  4. 使用 HTTP 传输在本地启动服务器(用于 Web 应用程序)

    # 使用 Bun
    bun run start:http
    # 或者使用 npm
    npm run start:http
    
  5. 用于自动重新加载的开发

    # 使用 Bun 和 stdio 传输
    bun run dev
    # 使用 Bun 和 HTTP 传输
    bun run dev:http
    

Cloudflare 部署

  1. 登录到您的 Cloudflare 帐户

    wrangler login
    
  2. 如果需要,更新 wrangler.toml

    配置已在 wrangler.toml 文件中设置。 您可能想要自定义:

    • 自定义域名路由
    • 环境变量
    • KV 命名空间连接
  3. 部署到 Cloudflare

    # 部署到生产环境
    npm run deploy
    
    # 或者部署到开发环境
    npm run deploy:dev
    
  4. 用于本地测试 Cloudflare Worker

    npm run dev:cf
    

环境配置

该项目使用以下可以配置的环境变量:

  • PORT: 用于本地开发的 HTTP 端口(默认值:3001)
  • HOST: 用于 HTTP 服务器的主机绑定(默认值:0.0.0.0)
  • ENVIRONMENT: 当前环境(开发/生产)

在 Cloudflare 中,这些变量在 wrangler.toml 文件中配置:

[vars]
ENVIRONMENT = "production"

[env.dev.vars]
ENVIRONMENT = "development"

使用示例

连接到服务器

从 CLI MCP 客户端连接

# 通过 stdio 传输连接
npx fastmcp dev "bun run start"

# 通过 HTTP 传输连接
npx fastmcp connect http://localhost:3001/sse

从 Cursor 连接

  1. 打开 Cursor 并转到设置
  2. 单击左侧边栏中的“Features”
  3. 向下滚动到“MCP Servers”部分
  4. 单击“Add new MCP server”
  5. 输入以下详细信息:
    • Server name: frank-cv-mcp
    • 对于 stdio 模式:
      • Type: command
      • Command: bun run start
    • 对于 SSE 模式:
      • Type: url
      • URL: http://localhost:3001/sse
  6. 单击“Save”

将 mcp.json 与 Cursor 一起使用

{
  "mcpServers": {
    "frank-cv-stdio": {
      "command": "bun",
      "args": ["run", "start"],
      "env": {
        "NODE_ENV": "development"
      }
    },
    "frank-cv-sse": {
      "url": "http://localhost:3001/sse"
    }
  }
}

示例请求流程

检索基本信息

// 获取个人资料信息
const profile = await client.callTool("get_profile", {});

// 获取技能列表
const skills = await client.callTool("get_skills", {});

// 将简历作为 markdown 文档获取
const cvMarkdown = await client.accessResource("cv://frankgoortani");

搜索特定经验

// 搜索 AI 经验
const aiExperience = await client.callTool("search_cv", {
  query: "ai"
});

// 获取特定公司经验
const uberExperience = await client.callTool("get_company_experience", {
  company: "Uber"
});

获取媒体链接

// 获取简历 PDF 链接
const resumeLink = await client.callTool("get_resume_link", {});

// 获取个人资料图片链接
const pictureLink = await client.callTool("get_profile_picture", {});

许可证

本项目根据 MIT 许可证获得许可。

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python