ServeMyAPI
一个用于在项目中安全存储和访问API密钥的个人MCP(模型上下文协议)服务器,使用macOS Keychain进行安全存储。
重要提示:ServeMyAPI是一个仅适用于macOS的工具,它依赖于macOS Keychain进行安全存储。它不兼容Windows或Linux操作系统。请参阅安全说明部分以获取更多详细信息。
概述
ServeMyAPI允许您在macOS Keychain中安全地存储API密钥,并通过一致的MCP接口访问它们。这使得您可以轻松地:
- 安全地存储API密钥(它们永远不会出现在.env文件或配置文件中)
- 在多个项目中访问相同的密钥
- 使用自然语言来存储和检索密钥(当与Claude等LLM一起使用时)
- 在AI助手需要访问服务时直接提供密钥
为什么选择ServeMyAPI而不是.env文件?
使用ServeMyAPI而不是传统的.env文件可以解决几个常见问题:
-
GitHub安全冲突:
- .env文件需要从Git存储库中排除以进行安全(通过.gitignore)
- 这会创建一个“隐藏上下文”问题,其中重要的配置对协作者和LLM不可见
- 新开发者经常难以设置正确的环境变量
-
LLM集成挑战:
- 由于安全限制,LLM如Claude无法直接访问您的.env文件
- 当LLM需要API密钥来完成任务时,您通常需要手动解决方案
- ServeMyAPI允许您的AI助手通过自然语言请求密钥
-
跨项目一致性:
- 使用.env文件,您通常需要在多个项目中复制API密钥
- 当密钥更改时,您需要更新多个文件
- ServeMyAPI提供了一个中央存储位置,可以从任何项目访问
这种方法让您能够兼顾:安全存储敏感凭证,同时不会牺牲AI工具的可见性和可访问性。
功能
- 在macOS Keychain中安全存储API密钥
- 用于存储、检索、列出和删除密钥的简单MCP工具
- 适用于基于终端的密钥管理的便捷CLI界面
- 支持stdio和HTTP/SSE传输
- 兼容任何MCP客户端(Claude桌面版等)
安装
# 克隆存储库
git clone https://github.com/yourusername/servemyapi.git
cd servemyapi
# 安装依赖项
npm install
# 构建项目
npm run build
使用
CLI界面
ServeMyAPI附带一个命令行界面,可以直接从您的终端进行快速密钥管理:
# 全局安装CLI
npm run build
npm link
# 列出所有存储的API密钥
api-key list
# 获取特定API密钥
api-key get github_token
# 存储新API密钥
api-key store github_token ghp_123456789abcdefg
# 删除API密钥
api-key delete github_token
# 显示帮助
api-key help
以stdio服务器运行
这是使用ServeMyAPI作为MCP服务器的最简单方法,尤其是在使用Claude桌面版时:
npm start
以HTTP服务器运行
对于需要HTTP访问的应用程序:
node dist/server.js
这将启动服务器在端口3000(或在PORT环境变量中指定的端口)。
使用Smithery
ServeMyAPI作为托管服务在Smithery上提供。
import { createTransport } from "@smithery/sdk/transport.js"
const transport = createTransport("https://server.smithery.ai/@Jktfe/servemyapi")
// 创建MCP客户端
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
const client = new Client({
name: "Test client",
version: "1.0.0"
})
await client.connect(transport)
// 使用您的LLM应用程序与服务器工具
const tools = await client.listTools()
console.log(`可用工具: ${tools.map(t => t.name).join(", ")}`)
有关更多详细信息,请参阅Smithery API文档。
配置MCP客户端
ServeMyAPI与任何MCP兼容客户端都兼容。示例配置文件提供在examples目录中。
Claude桌面版
要使用ServeMyAPI与Claude桌面版:
-
定位或创建Claude桌面版配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%AppData%\Claude\claude_desktop_config.json
- macOS:
-
将ServeMyAPI添加到
mcpServers部分(您可以从examples/claude_desktop_config.json复制):{ "mcpServers": { "serveMyAPI": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/servemyapi/dist/index.js" ] } } } -
将
/ABSOLUTE/PATH/TO/servemyapi替换为您的ServeMyAPI实际安装路径。 -
重新启动Claude桌面版。
Windsurf
要使用ServeMyAPI与Windsurf:
- 打开Windsurf编辑器并导航到设置
- 使用
examples/windsurf_config.json中的示例将ServeMyAPI添加到您的MCP服务器配置 - 调整路径以匹配您的本地安装
MCP工具
ServeMyAPI公开以下工具:
store-api-key
将API密钥存储在密钥链中。
参数:
name: API密钥的名称/标识符key: 要存储的API密钥
示例(来自Claude):
使用serveMyAPI,将我的API密钥ABC123XYZ存储为“OpenAI API Key”
get-api-key
从密钥链中检索API密钥。
参数:
name: 要检索的API密钥的名称/标识符
示例(来自Claude):
使用serveMyAPI,获取名为“OpenAI API Key”的API密钥
delete-api-key
从密钥链中删除API密钥。
参数:
name: 要删除的API密钥的名称/标识符
示例(来自Claude):
使用serveMyAPI,删除名为“OpenAI API Key”的API密钥
list-api-keys
列出所有存储的API密钥。
无需参数。
示例(来自Claude):
使用serveMyAPI,列出我所有存储的API密钥
安全说明
- 所有API密钥都安全地存储在macOS Keychain中
- 密钥仅对当前用户可访问
- 密钥链需要身份验证才能访问
- 没有密钥以明文形式存储或记录在任何地方
路线图
ServeMyAPI的未来计划包括:
-
代码扫描工具:一个自动扫描您的代码库中API端点、敏感URL和环境变量的工具,然后建议将它们存储在Keychain中的名称。这将允许开发人员在常规工作流程中继续使用.env文件,同时确保凭证在需要时也可供LLM和其他工具使用。
-
跨平台支持:调查Windows和Linux的安全凭证存储选项,以使ServeMyAPI更广泛地可用。
-
与流行框架集成:提供与Next.js、Express等框架的轻松集成。
-
密钥管理UI:一个简单的Web界面,用于直接管理您的存储API密钥。
欢迎提出其他功能建议或通过打开问题或拉取请求为路线图做出贡献。
开发
# 以开发模式运行,带热重载
npm run dev
# 开发期间使用CLI
npm run cli list
# 代码检查
npm run lint
# 构建生产版本
npm run build
许可证
MIT