A personal MCP (Model Context Protocol) server for securely storing and accessing API keys across projects using the macOS Keychain.
A personal MCP (Model Context Protocol) server for securely storing and accessing API keys across projects using the macOS Keychain.
IMPORTANT: ServeMyAPI is a macOS-specific tool that relies on the macOS Keychain for secure storage. It is not compatible with Windows or Linux operating systems. See the security notes section for more details.
ServeMyAPI allows you to store API keys securely in the macOS Keychain and access them through a consistent MCP interface. This makes it easy to:
Using ServeMyAPI instead of traditional .ENV files solves several common problems:
GitHub Security Conflicts:
LLM Integration Challenges:
Cross-Project Consistency:
This approach gives you the best of both worlds: secure storage of sensitive credentials without sacrificing visibility and accessibility for your AI tools.
# Clone the repository
git clone https://github.com/yourusername/servemyapi.git
cd servemyapi
# Install dependencies
npm install
# Build the project
npm run build
This is the simplest way to use ServeMyAPI, especially when working with Claude Desktop:
npm start
For applications that require HTTP access:
node dist/server.js
This will start the server on port 3000 (or the port specified in the PORT environment variable).
ServeMyAPI is available as a hosted service on Smithery.
import { createTransport } from "@smithery/sdk/transport.js"
const transport = createTransport("https://server.smithery.ai/@Jktfe/servemyapi")
// Create MCP client
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
const client = new Client({
name: "Test client",
version: "1.0.0"
})
await client.connect(transport)
// Use the server tools with your LLM application
const tools = await client.listTools()
console.log(`Available tools: ${tools.map(t => t.name).join(", ")}`)
For more details, see the Smithery API documentation.
ServeMyAPI works with any MCP-compatible client. Example configuration files are provided in the examples
directory.
To use ServeMyAPI with Claude Desktop:
Locate or create the Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
%AppData%\Claude\claude_desktop_config.json
Add ServeMyAPI to the mcpServers
section (you can copy from examples/claude_desktop_config.json
):
{
"mcpServers": {
"serveMyAPI": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/servemyapi/dist/index.js"
]
}
}
}
Replace /ABSOLUTE/PATH/TO/servemyapi
with the actual path to your ServeMyAPI installation.
Restart Claude Desktop.
To use ServeMyAPI with Windsurf:
examples/windsurf_config.json
ServeMyAPI exposes the following tools:
Store an API key in the keychain.
Parameters:
name
: The name/identifier for the API keykey
: The API key to storeExample (from Claude):
Using serveMyAPI, store my API key ABC123XYZ as "OpenAI API Key"
Retrieve an API key from the keychain.
Parameters:
name
: The name/identifier of the API key to retrieveExample (from Claude):
Using serveMyAPI, get the API key named "OpenAI API Key"
Delete an API key from the keychain.
Parameters:
name
: The name/identifier of the API key to deleteExample (from Claude):
Using serveMyAPI, delete the API key named "OpenAI API Key"
List all stored API keys.
No parameters required.
Example (from Claude):
Using serveMyAPI, list all my stored API keys
Future plans for ServeMyAPI include:
Code Scanner Tool: A tool that automatically scans your codebase for API endpoints, sensitive URLs, and environment variables, then suggests names to store them in the Keychain. This would allow developers to continue using .ENV files in their regular workflow while ensuring credentials are also available to LLMs and other tools when needed.
Cross-Platform Support: Investigating secure credential storage options for Windows and Linux to make ServeMyAPI more widely accessible.
Integration with Popular Frameworks: Providing easy integration with frameworks like Next.js, Express, and others.
UI for Key Management: A simple web interface for managing your stored API keys directly.
Feel free to suggest additional features or contribute to the roadmap by opening an issue or pull request.
# Run in development mode with hot reload
npm run dev
# Lint the code
npm run lint
# Build for production
npm run build
MIT