A Model Context Protocol (MCP) server for the Ghost Security API, providing secure access to security findings and repository data through standardized tools.
- Security Findings Management: Query, retrieve, and update security findings
- Repository Analysis: Access repository data and associated findings
- Universal MCP Compatibility: Works with any MCP-compatible client or application
- Bundled CLI Chatbot: Includes a simple chatbot for quick interaction
- Comprehensive API Coverage: Full support for Ghost Security API (V2) endpoints
- Type Safety: Complete TypeScript implementation with proper typing
- Error Handling: Robust error handling and validation
Option 1: Interactive Installer (Easiest)
# Clone and build
git clone https://github.com/ghostsecurity/ghost-mcp-server
cd ghost-mcp-server
npm install && npm run build
# Run interactive installer (prompts for API key)
npm run install:interactiveOption 2: Automated Setup Script
# Clone and build
git clone https://github.com/ghostsecurity/ghost-mcp-server
cd ghost-mcp-server
npm install && npm run build
# Run setup script with your API key
./setup-claude-code.sh YOUR_API_KEY
# Optional: Scope to a specific repository
./setup-claude-code.sh YOUR_API_KEY YOUR_REPO_IDOption 3: Manual Setup
# Clone and build
git clone https://github.com/ghostsecurity/ghost-mcp-server
cd ghost-mcp-server
npm install && npm run build
# Add to Claude Code
claude mcp add --transport stdio --scope user ghost-security -- node $(pwd)/dist/index.js
# Then edit ~/.claude.json and add under mcpServers.ghost-security.env:
# {
# "GHOST_SECURITY_API_KEY": "your-api-key",
# "GHOST_SECURITY_BASE_URL": "https://api.ghostsecurity.ai/v2"
# }Option 4: From npm (Coming Soon)
Once published to npm, installation will be even simpler:
claude mcp add --transport stdio --scope user ghost-security -- npx ghostsecurity-mcpThen add your API key to ~/.claude.json:
{
"mcpServers": {
"ghost-security": {
"env": {
"GHOST_SECURITY_API_KEY": "your-api-key-here",
"GHOST_SECURITY_BASE_URL": "https://api.ghostsecurity.ai/v2"
}
}
}
}- Clone this repository:
git clone <repository-url>
cd ghost-mcp-server- Install dependencies:
npm install- Build the project:
npm run buildThe server requires a Ghost Security API key to be provided at startup. You can provide it in two ways:
export GHOST_SECURITY_API_KEY="your-ghost-security-api-key"
export GHOST_SECURITY_BASE_URL="https://api.ghostsecurity.ai/v2" # optional, defaults to v2
export GHOST_SECURITY_REPO_ID="your-repository-id" # optional - scope to specific reponode dist/index.js "your-ghost-security-api-key" "your-repository-id"Note: Repository ID is optional. If provided, all operations will be scoped to that repository.
For development:
# Set environment variable first
export GHOST_SECURITY_API_KEY="your-api-key"
npm run devFor production:
# Either with environment variable
export GHOST_SECURITY_API_KEY="your-api-key"
npm start
# Or with command line argument
npm run build
node dist/index.js "your-api-key"This project includes a simple CLI chatbot powered by Anthropic's Claude API that can interact with the MCP server.
export ANTHROPIC_API_KEY="your-anthropic-api-key"
export GHOST_SECURITY_API_KEY="your-ghost-api-key"
npm run chatThis server follows the standard MCP configuration format. Here are examples for different clients:
{
"mcpServers": {
"ghostsecurity": {
"command": "node",
"args": ["/path/to/ghost-mcp-server/dist/index.js"],
"env": {
"GHOST_SECURITY_API_KEY": "your-ghost-security-api-key",
"GHOST_SECURITY_REPO_ID": "your-repository-id"
}
}
}
}For any MCP client that supports environment variables:
export GHOST_SECURITY_API_KEY="your-ghost-security-api-key"
export GHOST_SECURITY_BASE_URL="https://api.ghostsecurity.ai/v2"
export GHOST_SECURITY_REPO_ID="your-repository-id"When a repository ID is configured via GHOST_SECURITY_REPO_ID environment variable or CLI argument:
ghostsecurity_get_findingsreturns findings only for that repositoryghostsecurity_get_repositoriesreturns only the configured repositoryghostsecurity_get_repository_findingsuses the configured repository as default (repoId parameter becomes optional)
Get security findings with optional filtering and pagination.
Parameters:
cursor(string, optional): Pagination cursorsort(string, optional): Sort field (created_at,updated_at)order(string, optional): Sort order (asc,desc)size(number, optional): Page size (1-1000)status(string, optional): Filter by statusrepo_id(string, optional): Filter by repository IDproject_id(string, optional): Filter by project ID
Get a specific security finding by ID.
Parameters:
id(string, required): Finding IDrepoId(string, required): Repository ID associated with the findingprojectId(string, required): Project ID associated with the finding
Update the status of a security finding.
Parameters:
id(string, required): Finding IDrepoId(string, required): Repository ID associated with the findingprojectId(string, required): Project ID associated with the findingstatus(string, required): New status for the finding
Get repositories with optional filtering and pagination.
Parameters:
cursor(string, optional): Pagination cursorsort(string, optional): Sort field (created_at,updated_at,last_committed_at)order(string, optional): Sort order (asc,desc)size(number, optional): Page size (1-1000)
Get a specific repository by ID.
Parameters:
id(string, required): Repository ID
Get security findings for a specific repository.
Parameters:
repoId(string, optional*): Repository ID (*required unlessGHOST_SECURITY_REPO_IDis configured)cursor(string, optional): Pagination cursorsort(string, optional): Sort field (created_at,updated_at)order(string, optional): Sort order (asc,desc)size(number, optional): Page size (1-1000)
This server is configured for publishing to the MCP Registry.
-
Install Publisher CLI:
brew install mcp-publisher
-
Login:
mcp-publisher login github
-
Publish:
mcp-publisher publish
The server.json file contains the necessary metadata. Ensure you have published the package to NPM before publishing to the registry.
npm run dev: Run in development mode with hot reloadnpm run build: Build TypeScript to JavaScriptnpm start: Run the built servernpm run chat: Run the CLI chatbot
src/
├── index.ts # Main MCP server implementation
├── ghost-client.ts # Ghost Security API client (V2)
├── types.ts # TypeScript type definitions
└── chatbot.ts # CLI Chatbot implementation
This MCP server provides a complete interface to the Ghost Security API V2. For detailed API documentation, visit: https://docs.ghostsecurity.ai/api-reference/introduction
MIT