About portkey-mcp-server
portkey-mcp-server connects AI tools to Portkey through MCP. It is for users who need Portkey prompt operations in MCP clients, with tools for creating, rendering, and listing prompts and support for stdio and SSE transports.
Key features
- 01Create prompts
- 02Render prompts
- 03List prompts
- 04stdio and SSE transports
Use cases
- 01Create Portkey prompts from an MCP client
- 02Render prompts for later use
- 03Check available prompts
MCP support
The server exposes Portkey prompt tools to MCP clients, including create, render, and list operations. It supports stdio and SSE transports.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEportkey-mcp-server
A Model Context Protocol (MCP) server implementation for Portkey. This application serves as a bridge for connecting various AI tools and services to Portkey through the Model Context Protocol.
Table of Contents
Supported MCP Features
Tools
Installation
Quick Start: For immediate integration with AI tools, jump directly to the Cursor IDE or Claude Desktop usage sections. These provide ready-to-use setup instructions for each tool.
Docker
The easiest way to get started is with the pre-built Docker image from Docker Hub:
# Run the container with the latest image (PORTKEY_API_KEY is required)
docker run -p 8080:8080 \
-e TRANSPORT=sse \
-e TRANSPORT_SSE_ADDRESS=:8080 \
-e PORTKEY_API_KEY=your-api-key \
ericmccaleb/portkey-mcp-server:latest
You can also build and run it locally using the Make targets:
# Clone the repository
git clone https://github.com/rvoh-emccaleb/portkey-mcp-server.git
cd portkey-mcp-server
# Build the Docker image locally (optional)
make docker-build
# Run the container (PORTKEY_API_KEY is required)
make docker-run PORTKEY_API_KEY=your-api-key
# Run with additional non-default settings
make docker-run PORT=9000 TRANSPORT=sse PORTKEY_API_KEY=your-api-key
You can also use the Docker commands directly:
# From repo root
# Build the Docker image
docker build --build-arg APP_VERSION=$(git rev-parse --short HEAD) -t portkey-mcp-server .
# Run in SSE mode (HTTP server)
docker run -p 8080:8080 \
-e TRANSPORT=sse \
-e TRANSPORT_SSE_ADDRESS=:8080 \
-e PORTKEY_API_KEY=your-api-key \
portkey-mcp-server
Binary
To build a standalone binary:
# From repo root
make build
This will create a binary named portkey-mcp-server in the root directory that you can execute directly.
To run the binary, you'll need to provide the required environment variables:
# From repo root
# Run in SSE mode (HTTP server)
PORTKEY_API_KEY=your-api-key \
TRANSPORT=sse \
TRANSPORT_SSE_ADDRESS=:8080 \
./portkey-mcp-server
# Run in stdio mode
PORTKEY_API_KEY=your-api-key \
TRANSPORT=stdio \
./portkey-mcp-server
From Source
To run the app directly with Go tooling:
# From repo root
go run -ldflags="-X main.appVersion=$(git rev-parse --short HEAD)" cmd/portkey-mcp-server/main.go
Configuration
The server supports different transport configurations:
stdio(Standard Input/Output) transport for command-line interfacessse(Server-Sent Events) transport for HTTP-based communication
Configuration is handled through environment variables loaded at startup. .env.example can be used as a reference, but the source-of-truth is always the config package.
For running outside of Docker, you can configure the application by creating a .env file based on the variables expected by the config package. For Docker, environment variables should be set by other means.
Usage
With Cursor IDE
Create a .cursor/mcp.json file in your home directory (for global-level config) or in your repo root (for project-level config).
Using stdio Mode
With Docker (using the Docker Hub image):
{
"mcpServers": {
"Portkey": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "PORTKEY_API_KEY",
"-e", "TRANSPORT",
"ericmccaleb/portkey-mcp-server:latest"
],
"env": {
"PORTKEY_API_KEY": "your-api-key",
"TRANSPORT": "stdio"
}
}
}
}
Or with binary:
{
"mcpServers": {
"Portkey": {
"command": "/path/to/portkey-mcp-server-binary",
"env": {
"PORTKEY_API_KEY": "your-api-key",
"TRANSPORT": "stdio"
}
}
}
}
Using SSE Mode
If the server is already running locally, or elsewhere:
{
"mcpServers": {
"Portkey": {
"url": "http://localhost:8080/sse"
}
}
}
With Claude Desktop
Claude Desktop only supports stdio mode. Create a claude_desktop_config.json file in:
- macOS:
~/Library/Application Support/Claude/ - Windows:
%APPDATA%\Claude\
With Docker (using the Docker Hub image):
{
"mcpServers": {
"Portkey": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "PORTKEY_API_KEY",
"-e", "TRANSPORT",
"ericmccaleb/portkey-mcp-server:latest"
],
"env": {
"PORTKEY_API_KEY": "your-api-key",
"TRANSPORT": "stdio"
}
}
}
}
Or with binary:
{
"mcpServers": {
"Portkey": {
"command": "/path/to/portkey-mcp-server-binary",
"env": {
"PORTKEY_API_KEY": "your-api-key",
"TRANSPORT": "stdio"
}
}
}
}
Manual SSE Requests
When running in SSE mode, you can access the server using HTTP requests. Following the MCP protocol requires these steps:
# 1. First establish the SSE connection to get a session
curl http://localhost:8080/sse
# This will return something like:
# event: endpoint
# data: /message?sessionId=abc123
# 2. Initialize the session (using the URL from #1, above)
curl -X POST "http://localhost:8080/message?sessionId=abc123" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"clientInfo": {
"name": "curl-client",
"version": "1.0.0"
},
"capabilities": {}
}
}'
# 3. Now you can make tool calls
curl -X POST "http://localhost:8080/message?sessionId=abc123" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "2",
"method": "call_tool",
"params": {
"name": "prompt_render",
"arguments": {
"prompt_id": "your_prompt_id",
"variables": {
"your_prompt_variable": "some_value"
}
}
}
}'
Note: The SSE connection in step 1 must remain open during your session. Run it in a separate terminal window and do not close it until you're done with the session.
Contributing
We welcome contributions! Please see our Contributing Guidelines for details on how to get started.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.