🔌 API注册表MCP服务器
Databricks应用程序,通过AI聊天界面和MCP服务器帮助您发现、注册和管理外部API端点。
这是什么?
这是一个完整的API发现和管理平台,运行在Databricks应用程序上。它结合了:
- 🤖 AI聊天界面:自然语言API注册由Claude提供支持
- 📊 API注册表:外部API终结点的数据库支持目录
- 🔍 智能发现:自动端点测试和验证
- 📚 文档解析器:从API文档URL中提取终结点
- 🛠️ MCP服务器:程序化API管理工具
快速开始
先决条件
工作空间要求:
- 已启用copula应用程序(公开预览)
- API基础模型
databricks-claude-sonnet-4端点 - 至少一个SQL仓库 (工作台操作和MCP工具所需)
- 如何创建SQL仓库 - 建议使用无服务器SQL仓库以获得最佳性能
- Unity目录,带有可访问的Catalog.schema
看 工作空间_要求.md 了解详细的工作空间设置要求和故障排除。
地方发展:
- Python 3.12+
uv包管理器 - copula命令行界面(
databricks)v0.260.0+
身份验证设置:
- 推荐: 个人访问令牌(PAT)身份验证
- 如何创建个人访问令牌
- 在设置过程中,您需要您的PAT
1.克隆和设置
注: 所有部署命令都在本地计算机上运行,而不是在ViewModel中运行。
# On your local machine (not in Databricks):
git clone https://github.com/lucamilletti99/mcp_server_api_registry.git
cd mcp_server_api_registry
# Run interactive setup
# When prompted, press Enter to use default values shown in brackets
./setup.sh设置提示:
- 使用 个人访问令牌(PAT) 出现提示时进行身份验证
- 按Enter键接受默认值(如括号所示)
- 默认源代码路径:
/Workspace/Users/your-email@company.com/app-name - MCP服务器名称将默认为您的应用程序名称
这将:
- 安装
uv如果不存在(在您的本地计算机上) - 配置copula CLI身份验证
- 配置您的应用程序名称 (必须以
mcp-) - 在本地安装所有Python依赖项
- 创建
.env.local配置文件
重要提示: 您在安装过程中选择的应用程序名称将保存在 .env.local 并由以下人员自动使用 ./deploy.sh。您可以在部署时用以下命令覆盖它 --app-name 如有需要,请标记。
2.创建API注册表表
重要提示:在继续之前,请确保已完成步骤1(./setup.sh)!
此步骤的先决条件:
- ✅ 您必须在工作区中至少创建一个SQL仓库
- ✅ 仓库必须正在运行或可以启动
- 📖 如何创建SQL仓库
该应用程序需要一个表来存储注册的API。您可以使用以下任一方法创建它:
选项1:使用Python脚本(推荐)
# The script automatically loads your .env.local configuration
uv run python setup_table.py your_catalog your_schema
# Optional: specify a warehouse ID
uv run python setup_table.py your_catalog your_schema --warehouse-id abc123选项2:通过copula SQL编辑器手动操作
您也可以直接在copula中运行SQL:
- 打开 copula SQL编辑器 在您的工作空间中
- 复制以下内容
setup_api_registry_table.sql - 替换
{catalog}使用您的目录名称(例如。,lucam_ws_demo) - 替换
{schema}使用您的模式名称(例如。,custom_mcp_server) - 运行查询
-- Example SQL (replace placeholders):
CREATE TABLE IF NOT EXISTS your_catalog.your_schema.api_registry (
api_id STRING NOT NULL,
api_name STRING NOT NULL,
description STRING,
api_endpoint STRING NOT NULL,
documentation_url STRING,
http_method STRING,
auth_type STRING,
token_info STRING,
request_params STRING,
status STRING,
validation_message STRING,
user_who_requested STRING,
created_at TIMESTAMP,
modified_date TIMESTAMP,
CONSTRAINT api_registry_pk PRIMARY KEY (api_id)
)
COMMENT 'Registry of external API endpoints for discovery and management'
TBLPROPERTIES (
'delta.enableChangeDataFeed' = 'true'
);Python脚本的作用:
- ✅ 自动加载
DATABRICKS_HOST从.env.local - ✅ 自动检测并使用可用的SQL仓库
- ✅ 创建
api_registry具有正确模式的表 - ✅ 验证表是否已成功创建
故障排除:
- “DATABRICKS_HOST未设置” → Run
./setup.sh第一 - “未找到SQL仓库” → 使用创建一个 本指南
- “权限被拒绝” → 确保你有
CAN_USE仓库许可 - 您还可以从以下位置手动运行SQL
setup_api_registry_table.sql在ConnectionSQL编辑器中
3.部署到copula
从本地计算机部署到copula Apps。
首次部署(应用程序尚不存在)
一步创建和部署应用程序:
# First time deployment - creates the app and deploys
./deploy.sh --create
# OR with a custom app name
./deploy.sh --app-name mcp-my-api-registry --create这 --create 标志:
- 如果不存在,则创建copula应用程序
- 然后将代码部署到其中
- 将其用于您的首次部署
后续部署(应用程序已存在)
创建应用程序后,只需部署更新:
# Update existing app with latest code
./deploy.sh
# OR update with verbose output for debugging
./deploy.sh --verbose常见部署场景:
# First time: Create app with default name from .env.local
./deploy.sh --create
# First time: Create app with custom name
./deploy.sh --app-name mcp-prod-registry --create
# Update existing app after code changes
./deploy.sh
# Deploy to different app name (must exist already)
./deploy.sh --app-name mcp-dev-registry
# Debug deployment issues
./deploy.sh --verbose应用程序命名规则:
- 应用程序名称 必须从以下内容开始
mcp- - 仅使用小写字母、数字和连字符
- 示例:
mcp-api-registry,mcp-prod-registry,mcp-dev-1
部署脚本的作用:
- 显示配置摘要
- 验证应用程序名称(必须以开头
mcp-) - 构建前端
- 打包Python后端
- 将所有内容上传到您的copula工作区
- 部署为copula应用程序
您的应用程序将在以下网址提供: https://your-app.databricksapps.com
故障排除:
- “找不到应用程序” → Use
--create标记以先创建它 - 构建错误 → Use
--verbose查看详细输出 - 认证失败 → Run
./setup.sh重新配置
4.访问您的应用程序
部署后,您的应用程序将在部署输出中显示的URL上可用:
✅ Deployment complete!
Your app is available at:
https://your-app.databricksapps.com在浏览器中打开此URL以访问web界面并开始注册API!
特性
网页用户界面
通过您的应用程序URL访问web界面:
- 聊天游乐场:AI推动API注册
- 自然语言:“注册AlphaVantage股票API” - 自动端点发现和测试 - 文档URL解析 - 智能图案匹配
- API注册表:查看和管理已注册的API
- 编辑API详细信息和文档URL - 测试API健康状况 - 删除API - 筛选和搜索
- MCP信息:查看可用的MCP工具和提示
- 查看所有暴露的工具 - 复制安装说明 - 查看架构图
- 痕迹:调试AI代理执行
- 查看工具调用和响应 - 检查跟踪详细信息 - 监测性能
后端功能
该应用程序通过其MCP服务器界面提供编程工具:
- API智能注册:具有自动发现功能的一步API注册
- 手动注册:详细的API配置和注册
- 注册表管理:列出并管理所有已注册的API
- 文档发现:从API文档URL中提取终结点
- 端点测试:使用自定义标头验证和测试API终结点
- SQL集成:对copula仓库运行SQL查询
- 仓库管理:列出并配置SQL仓库
配置
环境变量(.env.local)
DATABRICKS_HOST=https://your-workspace.cloud.databricks.com
DATABRICKS_TOKEN=your-personal-access-token # For local development
DATABRICKS_SQL_WAREHOUSE_ID=your-warehouse-id # Optional default warehouse应用程序配置(app.yaml)
该应用程序已预先配置了代表(OBO)身份验证:
# On-Behalf-Of user authorization is enabled by default
# The app acts with the identity of the authenticated user
scopes:
- "all-apis" # Foundation Model API access
- "sql" # SQL warehouse and query execution
- "files.files" # DBFS file operations这意味着:
- ✅ 默认情况下启用OBO -无需额外设置
- ✅ 用户在访问应用程序时使用他们的copula凭据进行身份验证
- ✅ 所有操作都使用用户的权限(不是服务主体)运行
- ✅ 适当的访问控制和审计日志记录
在UI中验证OBO:
部署后,您可以验证OBO是否正常工作:
- 在浏览器中打开已部署的应用程序URL
- 系统将提示您使用copula(OAuth)进行身份验证
- 登录后,应用程序将显示您的用户身份
- 所有API操作都将使用您的权限运行
备选方案:服务负责人回退
如果用户没有SQL仓库访问权限,应用程序会自动恢复使用服务主体进行数据库操作,同时仍为其他操作维护用户上下文。
部署提示
多次部署
您可以为不同的目的(开发、暂存、生产)部署应用程序的多个实例:
# Development instance
./deploy.sh --app-name mcp-dev-api-registry --create
# Staging instance
./deploy.sh --app-name mcp-staging-api-registry --create
# Production instance
./deploy.sh --app-name mcp-prod-api-registry --create每个部署都有自己的:
- 唯一URL
- 独立数据库(如果使用不同的目录/模式)
- 单独的身份验证范围
- 独立的API注册表数据
最佳实践
- 使用描述性名称:
mcp-{environment}-{purpose}(例如。,mcp-prod-customer-apis) - 测试用
--verbose:如果出现故障,请查看详细的部署日志 - 使用
--create:如果不存在,则自动创建应用程序 - 保持名字简短:在MCP设置命令中更容易参考
发展
地方发展
# Start dev server (frontend + backend with hot reload)
./watch.sh
# Access at:
# - Frontend: http://localhost:5173
# - Backend: http://localhost:8000
# - API Docs: http://localhost:8000/docs代码格式化
./fix.sh # Format Python (ruff) and TypeScript (prettier)调试
# Check app status
./app_status.sh
# Stream app logs
uv run python dba_logz.py https://your-app.databricksapps.com --duration 60
# Test API endpoints
uv run python dba_client.py https://your-app.databricksapps.com /api/user/me项目结构
├── server/ # FastAPI backend
│ ├── app.py # Main application + MCP server
│ ├── tools.py # MCP tools implementation
│ └── routers/ # API endpoints
│ ├── agent_chat.py # AI chat endpoint
│ ├── registry.py # API registry CRUD
│ └── db_resources.py # Databricks resources
├── client/ # React TypeScript frontend
│ └── src/
│ ├── pages/ # Page components
│ └── components/ # Reusable UI components
├── prompts/ # MCP prompts (markdown)
├── dba_mcp_proxy/ # MCP proxy for Claude CLI
├── setup_table.py # Database table setup script
├── setup_api_registry_table.sql # Table schema
├── deploy.sh # Deploy to Databricks Apps
├── watch.sh # Local development server
└── pyproject.toml # Python dependencies认证
该应用程序使用 代表(OBO)身份验证:
- 用户的OAuth令牌从copula Apps转发
- 如果用户没有SQL仓库访问权限,则回退到服务主体
- 所有操作都在适当的用户上下文中运行
使用示例
通过聊天注册API
User: Register the Alpha Vantage stock API, here's the docs: https://www.alphavantage.co/documentation/
AI: I'll register the Alpha Vantage API for you.
[Fetches documentation, discovers endpoints, tests them, registers the best one]
✅ Successfully registered "alphavantage_stock" with validation: HTTP 200 OK发现新端点
User: Can you check the SEC API documentation and find more endpoints?
AI: Let me review the SEC API documentation for new endpoints.
[Fetches stored documentation URL, parses it, tests discovered endpoints]
Found 5 working endpoints:
1. /search/filings
2. /company/{CIK}
3. /facts/{CIK}
...查询注册表
User: Show me all registered APIs
AI: Here are your registered APIs:
- alphavantage_stock: Alpha Vantage stock market data
- fred_series_api: Federal Reserve Economic Data
- sec_api: SEC filings and company data
...故障排除
有关详细的工作空间要求和设置问题,请参阅 工作空间_要求.md
找不到表错误:
- 创建
api_registry所选catalog.schema中的表 - 或者使用具有该表的其他catalog.schema
身份验证失败:
- 确保使用了以下方式对Rancher CLI进行身份验证:
databricks current-user me - 检查
.env.local有正确DATABRICKS_HOST
应用程序无法访问:
- 验证应用程序是否已部署:
./app_status.sh - 检查应用程序日志:访问
https://your-app.databricksapps.com/logz浏览器中 - 确保您可以访问工作区的网络
API注册失败:
- 检查应用程序日志:
uv run python dba_logz.py YOUR_APP_URL --search "ERROR" - 验证仓库是否可以访问所需的目录
- 尝试手动注册
register_api_in_registry
未启用copula应用程序:
- 看 工作空间_要求.md 用于启用预览功能
基础模型端点错误:
- 验证
databricks-claude-sonnet-4在您所在的地区可用 - 检查 工作空间_要求.md 区域可用性
许可证
看 许可证.md
安全
看 安全.md 用于报告安全漏洞。
