风险投资数据查询代理

一个基于Vercel AI SDK和Fundable MCP服务器的命令行AI代理,用于通过自然语言查询风险投资数据集(公司、投资者、人员、融资轮次)。

  • by Jklionsky
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Jklionsky/fundable_mcp_example

使用说明

MCP AI基本代理示例

概述

该项目演示了如何使用Vercel的AI SDK构建命令行AI代理,该SDK连接到Fundable MCP服务器,使用自然语言查询全面的VC数据集(公司、投资者、人员、融资轮次)。

主要目的: 这是一个简单明了的例子,显示了您可以使用Fundable MCP完成什么,而无需复杂的提示、多工具使用或大量的代码修改。这种简单性展示了MCP的强大功能- 下游用户应考虑更先进的生产技术 (见下文生产注意事项)。

目录

关于Fundable MCP

Fundable MCP服务器公开 5工具 查询我们的BigQuery实例,该实例包含9万多家公司、6万名投资者和80万人。

工具 目的 参数
getDatasetContext 会话开始时呼叫。 返回完整的数据集文档:表模式(DBML)、业务规则(以百万计的货币值)和连接模式。 无
listDatasetTables 快速浏览数据集中的所有可用表。 无
getQuery示例 按类别访问20多个示例查询。在不确定如何构建查询或尝试失败后非常有用。 category:查询类别(例如,“资金分析”、“人员和关系”)
getTableDetails 获取特定表的列名、类型和约束。 tableName:检查表
查询VC数据 ⭐ 执行只读BigQuery SQL。验证查询(阻止写入、检查表/列),通过BigQueryRESTneneneba API执行,返回带有统计数据的JSON结果。 sql:SQL查询
maxResults:结果限制(可选,最大10000)

快速开始

# 1. Install dependencies
npm install

# 2. Configure environment
cp .env.example .env
# Edit .env with your MCP API key and AI provider key

# 3. Get an MCP API key (required)
# Contact jacob@tryfundable.ai to request an API key

# 4. Test connection
npm run test:connection

# 5. Start the agent
npm run dev

先决条件和设置

先决条件

  • Node.js 18+ 必需的
  • MCP API密钥 用于Fundable服务器访问
    • 联系 jacob@tryfundable.ai 请求API密钥
  • API密钥 至少一家人工智能提供商(OpenAI、Anthropic或谷歌)

安装

# 1. Install dependencies
npm install

# 2. Configure environment
cp .env.example .env
# Edit .env with your configuration (see below)

环境配置

编辑您的 .env 文件:

# ===========================================
# MCP Server Authentication (API Key - Recommended)
# ===========================================
MCP_SERVER_URL=https://fundable_mcp.jacob-57a.workers.dev/api-mcp
MCP_API_KEY=fundable_mcp_your-api-key-here

# ===========================================
# AI Provider (choose one)
# ===========================================
OPENAI_API_KEY=sk-your-api-key-here
OPENAI_MODEL=gpt-5-mini 

# GOOGLE_GENERATIVE_AI_API_KEY=your-api-key-here
# GOOGLE_MODEL=gemini-3-flash

# ANTHROPIC_API_KEY=sk-your-api-key-here
# ANTHROPIC_MODEL=claude-sonnet-4-5-20250929

身份验证选项

方法 端点 最适合
API密钥 (推荐) /api-mcp AI代理、脚本、程序化访问
OAuth /mcp 基于浏览器的工具(Claude Desktop、MCP Inspector)

API密钥:设置 MCP_API_KEY 在你的 .env -无需浏览器交互。

OAuth (替代):删除 MCP_API_KEY 从 .env 并使用 /mcp 终点。第一个连接将打开一个用于GitHub登录的浏览器。

运行代理

CLI选项

代理支持以下命令行选项:

  • --provider=<name> -指定AI提供者: openai, anthropic,或 google
    • 默认值:基于可用API密钥的自动检测(优先级:Google→ 开放人工智能→ 人类学)
    • 所使用的特定模型在env变量中定义
  • -v, --verbose -启用详细日志记录以查看工具调用和推理
    • 违约: false
  • -h, --help -显示带有使用示例的帮助消息

CLI命令示例

# Test MCP server connection
npm run test:connection

# Run interactive CLI (auto-detects provider)
npm run dev

# Run with specific provider
npm run dev -- --provider=openai
npm run dev -- --provider=anthropic
npm run dev -- --provider=google

# Run with verbose logging of tool calls and results
npm run dev -- -v

# Combine options
npm run dev -- --provider=openai -v

# Show all available options
npm run dev -- --help

# Build for production
npm run build

可用文本命令

  • 自然问题 -询问公司、投资者、融资轮次等。
  • clear -重置对话历史记录
  • exit 或 quit -退出CLI

使用示例

npm run dev

运行后,使用自然语言与VC数据集交互:

You: What tables are available?
Agent: [calls getDatasetContext] The database contains tables for organizations,
deals, institutional_investments, people, and more...

You: Who are the top investors in fintech companies?
Agent: [calls queryVCData] Based on the data, the top fintech investors are...

You: Clear
Agent: Conversation history cleared.

You: Exit
Agent: Goodbye!

存储库结构

mcp-ai-agent-example/
├── src/
│   ├── index.ts              # Main CLI entry point
│   ├── agent.ts              # AIAgent class (Vercel AI SDK + MCP)
│   ├── helpers.ts            # CLI argument parsing & model selection
│   ├── prompt-loader.ts      # Prompt management system
│   └── test-connection.ts    # MCP connection test utility
├── tests/
│   ├── test-runner.ts        # Test orchestration engine
│   ├── test-suite/           # Test cases by difficulty
│   └── helpers/              # LLM-based evaluation system
├── prompts.yaml              # ⭐ Agent system prompts
└── .env.example              # Environment template

关键文件:

  • prompts.yaml:代理行为、查询预算、推理方法
  • src/agent.ts:Vercel AI SDK+MCP集成
  • src/helpers.ts:CLI参数解析和AI提供程序配置
  • tests/test-runner.ts:代理质量评估框架

测试与评估

运行测试

# Connection test
npm run test:connection

# Run all test suites
npm run test:eval

# Run specific suite
npm run test:eval -- --suite=easy

# Run specific test
npm run test:eval -- --suite=easy --id=5

# Run with specific AI provider
npm run test:eval -- --suite=medium --provider=openai

# Combine options
npm run test:eval -- --suite=hard --provider=google

测试框架

三个难度级别:

  • 简单:简单查找、基本查询
  • 中等:多步骤发现、聚合
  • 困难:复杂连接,实体消歧

法学硕士作为评委评估 (holistic-evaluator.ts):

  1. 逻辑方法 -查询策略有意义吗?
  2. 答案正确性 -答案准确吗?
  3. 效率 -在预期的查询预算范围内(+2容差)?

结果: 存储在 tests/results/ 作为带有时间戳的JSON,带有通过/失败成绩、推理和完整跟踪。

AI提供商性能

所有型号都实现了类似的整体精度,但在速度、成本和工具效率方面有所不同:

  • 谷歌双子座Flash 3:推理速度最快,成本最低,工具使用效率最低,尤其是在棘手的问题上
  • OpenAI(gpt-5-mini):成本与Gemini相似,但工具使用速度慢2倍,效率更高
  • 人物摄影(克劳德·十四行诗4.5):最有效的工具使用,与OpenAI类似的延迟,更高的成本

看 /tests/results 用于跨难度级别的样本测试输出

⚠️ 生产注意事项

这个例子使用相对简单的提示来演示MCP的核心功能。 对于生产使用,您应该实施更高级的提示技术:

提示增强功能:

  • 返回格式特殊性: 添加对精确输出模式(JSON模式、markdown表、结构化数据)的提示
  • 处理缺失信息: 设置护栏,以便代理知道何时停止搜索数据集中不存在的信息(例如,我们数据集中的一些人有linkedin网址,但不包含教育/就业历史——代理应该知道何时停止查找)
  • 发现问题: 实现消歧流程(例如,“a16z”可能意味着a16z加密货币、a16z速跑或a16z主基金)

其他注意事项:

  • 针对失败查询和API超时的错误处理
  • 速率限制和查询限制
  • 对话持续/恢复
  • 结构化日志记录和成本监控

许可证

麻省理工学院