ServeMyAPI

ServeMyAPI

一个个人 MCP 服务器,用于安全地存储和访问跨项目的 API 密钥,它使用 macOS 钥匙串,并允许 AI 助手和应用程序通过自然语言检索凭据。

远程shell执行
数据库交互
AI内容生成
访问服务器

README

ServeMyAPI

smithery badge

一个个人 MCP (模型上下文协议) 服务器,用于使用 macOS 钥匙串安全地存储和访问跨项目的 API 密钥。

重要提示: ServeMyAPI 是一个特定于 macOS 的工具,它依赖于 macOS 钥匙串进行安全存储。它与 Windows 或 Linux 操作系统不兼容。有关更多详细信息,请参阅安全说明部分。

概述

ServeMyAPI 允许您将 API 密钥安全地存储在 macOS 钥匙串中,并通过一致的 MCP 接口访问它们。 这使得以下操作变得容易:

  • 安全地存储 API 密钥(它们永远不会在 .env 文件或配置文件中可见)
  • 跨多个项目访问相同的密钥
  • 使用自然语言来存储和检索密钥(当与 Claude 等 LLM 一起使用时)
  • 在 AI 助手需要访问服务时,直接向其提供密钥

为什么选择 ServeMyAPI 而不是 .ENV 文件?

使用 ServeMyAPI 而不是传统的 .ENV 文件可以解决几个常见问题:

  1. GitHub 安全冲突:

    • 出于安全考虑,.ENV 文件需要从 Git 存储库中排除(通过 .gitignore)
    • 这会产生一个“隐藏上下文”问题,即重要的配置对协作者和 LLM 不可见
    • 新开发人员经常难以设置正确的环境变量
  2. LLM 集成挑战:

    • 由于安全限制,像 Claude 这样的 LLM 无法直接访问您的 .ENV 文件
    • 当 LLM 需要 API 密钥来完成任务时,您通常需要手动解决
    • ServeMyAPI 允许您的 AI 助手通过自然语言请求密钥
  3. 跨项目一致性:

    • 使用 .ENV 文件,您通常需要在多个项目中复制 API 密钥
    • 当密钥更改时,您需要更新多个文件
    • ServeMyAPI 提供了一个中央存储位置,可以从任何项目访问

这种方法为您提供了两全其美的优势:安全存储敏感凭据,同时又不牺牲 AI 工具的可见性和可访问性。

特性

  • 在 macOS 钥匙串中安全存储 API 密钥
  • 用于存储、检索、列出和删除密钥的简单 MCP 工具
  • 方便的 CLI 界面,用于基于终端的密钥管理
  • 支持 stdio 和 HTTP/SSE 传输
  • 与任何 MCP 客户端兼容(Claude Desktop 等)

安装

# 克隆存储库
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 Desktop 时:

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(`Available tools: ${tools.map(t => t.name).join(", ")}`)

有关更多详细信息,请参阅 Smithery API 文档

配置 MCP 客户端

ServeMyAPI 适用于任何 MCP 兼容的客户端。 examples 目录中提供了示例配置文件。

Claude Desktop

要将 ServeMyAPI 与 Claude Desktop 一起使用:

  1. 找到或创建 Claude Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %AppData%\Claude\claude_desktop_config.json
  2. 将 ServeMyAPI 添加到 mcpServers 部分(您可以从 examples/claude_desktop_config.json 复制):

    {
      "mcpServers": {
        "serveMyAPI": {
          "command": "node",
          "args": [
            "/ABSOLUTE/PATH/TO/servemyapi/dist/index.js"
          ]
        }
      }
    }
    
  3. /ABSOLUTE/PATH/TO/servemyapi 替换为 ServeMyAPI 安装的实际路径。

  4. 重新启动 Claude Desktop。

Windsurf

要将 ServeMyAPI 与 Windsurf 一起使用:

  1. 打开 Windsurf 编辑器并导航到设置
  2. 使用 examples/windsurf_config.json 中的示例将 ServeMyAPI 添加到您的 MCP 服务器配置
  3. 调整路径以适应您的本地安装

MCP 工具

ServeMyAPI 公开以下工具:

store-api-key

在钥匙串中存储 API 密钥。

参数:

  • name: API 密钥的名称/标识符
  • key: 要存储的 API 密钥

示例(来自 Claude):

Using serveMyAPI, store my API key ABC123XYZ as "OpenAI API Key"

get-api-key

从钥匙串中检索 API 密钥。

参数:

  • name: 要检索的 API 密钥的名称/标识符

示例(来自 Claude):

Using serveMyAPI, get the API key named "OpenAI API Key"

delete-api-key

从钥匙串中删除 API 密钥。

参数:

  • name: 要删除的 API 密钥的名称/标识符

示例(来自 Claude):

Using serveMyAPI, delete the API key named "OpenAI API Key"

list-api-keys

列出所有存储的 API 密钥。

无需参数。

示例(来自 Claude):

Using serveMyAPI, list all my stored API keys

安全说明

  • 所有 API 密钥都安全地存储在 macOS 钥匙串中
  • 密钥仅对当前用户可访问
  • 钥匙串需要身份验证才能访问
  • 没有密钥以明文形式存储或记录在任何地方

路线图

ServeMyAPI 的未来计划包括:

  • 代码扫描器工具: 一种自动扫描您的代码库以查找 API 端点、敏感 URL 和环境变量的工具,然后建议将它们存储在钥匙串中的名称。 这将允许开发人员继续在其常规工作流程中使用 .ENV 文件,同时确保凭据也可供 LLM 和其他工具在需要时使用。

  • 跨平台支持: 调查 Windows 和 Linux 的安全凭据存储选项,以使 ServeMyAPI 更广泛地访问。

  • 与流行框架集成: 提供与 Next.js、Express 等框架的轻松集成。

  • 密钥管理 UI: 一个简单的 Web 界面,用于直接管理您存储的 API 密钥。

欢迎提出其他功能或通过打开 issue 或 pull request 来为路线图做出贡献。

开发

# 在具有热重载的开发模式下运行
npm run dev

# 在开发期间使用 CLI
npm run cli list

# 检查代码
npm run lint

# 构建用于生产
npm run build

许可证

MIT

推荐服务器

e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

MCP server for interacting with Neon Management API and databases

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
AIO-MCP Server

AIO-MCP Server

🚀 All-in-one MCP server with AI search, RAG, and multi-service integrations (GitLab/Jira/Confluence/YouTube) for AI-enhanced development workflows. Folk from

精选
本地
Knowledge Graph Memory Server

Knowledge Graph Memory Server

为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。

精选
本地
Hyperbrowser

Hyperbrowser

欢迎来到 Hyperbrowser,人工智能的互联网。Hyperbrowser 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:

精选
本地
https://github.com/Streen9/react-mcp

https://github.com/Streen9/react-mcp

react-mcp 与 Claude Desktop 集成,能够根据用户提示创建和修改 React 应用程序。

精选
本地
any-chat-completions-mcp

any-chat-completions-mcp

将 Claude 与任何 OpenAI SDK 兼容的聊天完成 API 集成 - OpenAI、Perplexity、Groq、xAI、PyroPrompts 等。

精选
Exa MCP Server

Exa MCP Server

一个模型上下文协议服务器,它使像 Claude 这样的人工智能助手能够以安全和受控的方式,使用 Exa AI 搜索 API 执行实时网络搜索。

精选
AI 图像生成服务

AI 图像生成服务

可用于cursor 集成 mcp server

精选