An MCP server for seamless integration with the Kick.com API.
{{ message }}
NosytLabs / KickMCP Public
Kick API MCP
MIT license
1 star0 forksBranches Tags Activity
Star
Notifications
main
BranchesTags
Go to file
Code
Name | Name | Last commit message | Last commit date |
---|---|---|---|
1 Commit | |||
scripts | scripts | ||
src | src | ||
.dockerignore | .dockerignore | ||
.env.example | .env.example | ||
.eslintrc.json | .eslintrc.json | ||
.gitignore | .gitignore | ||
.prettierrc | .prettierrc | ||
Dockerfile | Dockerfile | ||
LICENSE | LICENSE | ||
README.md | README.md | ||
package-lock.json | package-lock.json | ||
package.json | package.json | ||
smithery.yaml | smithery.yaml | ||
tsconfig.json | tsconfig.json | ||
View all files |
A high-performance Model Context Protocol (MCP) server implementation for the Kick streaming platform API. This server provides a robust, secure, and standardized interface for AI models to interact with Kick's services.
The server implements the Model Context Protocol (MCP) specification, providing a standardized interface for AI models to interact with Kick's services:
// Model Request { "jsonrpc": "2.0", "method": "getUserProfile", "params": { "access_token": "user_access_token" }, "id": 1 }
// Server Response { "jsonrpc": "2.0", "result": { "username": "example_user", "profile_picture": "https://example.com/avatar.jpg", "followers": 1000 }, "id": 1 }
This MCP server enables a wide range of applications with the Kick API. Here are some practical use cases:
Each of these use cases can be implemented using the MCP server's comprehensive set of tools for interacting with the Kick API in a secure, standardized way.
If you're new to programming, APIs, or Kick, don't worry! This guide will walk you through everything step by step, just like following a recipe.
v18.0.0
or highergit version 2.x.x
client_id
(like your username)client_secret
(like your password)api_key
(your main access card)npx -y @smithery/cli install @NosytLabs/kickmcp --client claude
This is like ordering a pre-made meal - everything is set up for you!
git clone https://github.com/NosytLabs/KickMCP.git
cd KickMCP
npm install
cp .env.example .env
KICK_API_KEY=your_api_key_here # Paste your API key here KICK_CLIENT_ID=your_client_id # Paste your client ID here KICK_CLIENT_SECRET=your_client_secret # Paste your client secret here
PORT=3000 # The door number for your app NODE_ENV=development # Set to 'production' when ready LOG_LEVEL=info # How much detail you want to see
WEBHOOK_URL=https://your-domain.com/webhooks/kick # Your public webhook endpoint WEBHOOK_SECRET=your_webhook_secret # Secret for webhook validation
npm run mcp
This is like setting up a robot chef that follows instructions.
npm start
This is like opening a restaurant where people can visit.
npm run dev
This is like having a helper who automatically fixes mistakes.
curl http://localhost:3000/health
If everything is working, you'll see a message like:
{ "status": "ok", "version": "1.0.0", "timestamp": "2023-04-15T12:34:56Z" }
To use this MCP server with Kick, you'll need to create a Kick app:
http://localhost:3000/auth/callback
client_id
and client_secret
.env.example
to .env
KICK_API_KEY=your_api_key_here
KICK_CLIENT_ID=your_client_id_here
KICK_CLIENT_SECRET=your_client_secret_here
KICK_REDIRECT_URI=http://localhost:3000/auth/callback
npm run mcp
Think of authentication like a special key card system:
client_id
(like your employee ID)client_secret
(like your PIN number)api_key
(your main access card)curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
https://kick.com/api/v2/user/profile
2. What to Do When Your Token Expires (Like Renewing Your Key Card)
{
"jsonrpc": "2.0",
"method": "refreshAccessToken",
"params": {
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"refresh_token": "your_refresh_token"
},
"id": 3
}
Scopes are like different areas your key card can access:
Scope | What it lets you do | Example Use | Like Having Access To... |
---|---|---|---|
user:read | See user information | Show user profile | The user directory |
channel:read | See channel details | Display channel info | The channel listings |
channel:write | Change channel settings | Update stream title | The control room |
chat:write | Send chat messages | Create chat bot | The chat system |
streamkey:read | Get stream URLs | Show stream link | The streaming room |
events:subscribe | Get notifications | Alert when stream starts | The notification system |
Method | Description | Parameters | Notes |
---|---|---|---|
getOAuthUrl | Get OAuth authorization URL | client_id: Your application IDredirect_uri: URL to redirect after authscope: Space-separated scopesstate: Random state stringcode_challenge: Code challengecode_challenge_method: Code challenge method | Returns a URL that your users should visit to authorize your app |
getAccessToken | Exchange code for token | client_id: Your application IDclient_secret: Your secret keycode: Auth code from redirectredirect_uri: Redirect URIcode_verifier: Code verifier | Exchange the temporary code for a long-lived access token |
refreshAccessToken | Refresh expired token | client_id: Your application IDclient_secret: Your secret keyrefresh_token: Token for refreshing | Use when access_token expires to get a new one |
validateToken | Validate access token | access_token: Token to validate | Check if a token is still valid and get its associated scopes |
revokeToken | Revoke access token | access_token: Token to revoke | Immediately invalidate a token for security |
getAppAccessToken | Get app access token | client_id: Your application IDclient_secret: Your secret key | Generate app access token for public data |
Example: Getting an OAuth URL
{ "jsonrpc": "2.0", "method": "getOAuthUrl", "params": { "client_id": "your_client_id", "redirect_uri": "https://your-app.com/callback", "scope": "user:read channel:read", "state": "random_state_string", "code_challenge": "your_code_challenge", "code_challenge_method": "S256" }, "id": 1 }
Example: Exchanging a code for a token
{ "jsonrpc": "2.0", "method": "getAccessToken", "params": { "client_id": "your_client_id", "client_secret": "your_client_secret", "code": "authorization_code_from_redirect", "redirect_uri": "https://your-app.com/callback", "code_verifier": "your_code_verifier" }, "id": 2 }
Method | Description | Parameters | Notes |
---|---|---|---|
getUserProfile | Get user profile | access_token: User's access token | Returns the authenticated user's profile |
updateUserProfile | Update user profile | access_token: User's access tokendata: Object with profile fields | Update user profile information |
getUserSubscriptions | Get subscriptions | access_token: User's access token | List channels the user is subscribed to |
getUserEmotes | Get user emotes | access_token: User's access token | Emotes the user has access to |
getUserBadges | Get user badges | access_token: User's access token | Badges earned by the user |
getUserFollows | Get followed channels | access_token: User's access token | Channels the user follows |
getUserBlockedUsers | Get blocked users | access_token: User's access token | Users blocked by this user |
getUserClips | Get user clips | access_token: User's access token | Clips created by the user |
getUserVideos | Get user videos | access_token: User's access token | Videos uploaded by the user |
getUserHighlights | Get user highlights | access_token: User's access token | Stream highlights |
getUserScheduledStreams | Get scheduled streams | access_token: User's access token | Upcoming streams |
getUserNotifications | Get notifications | access_token: User's access token | User's notification feed |
getUserWallet | Get wallet info | access_token: User's access token | User's balance and transactions |
getUserGifts | Get gift history | access_token: User's access token | Gifts sent and received |
Example: Getting a user profile
{ "jsonrpc": "2.0", "method": "getUserProfile", "params": { "access_token": "user_access_token" }, "id": 3 }
Method | Description | Parameters | Notes |
---|---|---|---|
getChatMessages | Get chat messages | access_token: User's access tokenchannel_id: Channel ID | Recent messages in the channel |
sendChatMessage | Send chat message | access_token: User's access tokenchannel_id: Channel IDmessage: Message content | Requires chat:write scope |
getChatSettings | Get chat settings | access_token: User's access tokenchannel_id: Channel ID | Chat configuration |
banUser | Ban user from chat | access_token: User's access tokenchannel_id: Channel IDuser_id: User to ban | Requires moderator privileges |
unbanUser | Unban user from chat | access_token: User's access tokenchannel_id: Channel IDuser_id: User to unban | Requires moderator privileges |
timeoutUser | Timeout user | access_token: User's access tokenchannel_id: Channel IDuser_id: User to timeoutduration: Timeout duration in seconds | Requires moderator privileges |
deleteMessage | Delete chat message | access_token: User's access tokenchannel_id: Channel IDmessage_id: Message to delete | Requires moderator privileges |
clearChat | Clear all chat messages | access_token: User's access tokenchannel_id: Channel ID | Requires moderator privileges |
getChatUserInfo | Get chat user info | access_token: User's access tokenchannel_id: Channel IDuser_id: User to query | User's chat privileges |
Example: Sending a chat message
{ "jsonrpc": "2.0", "method": "sendChatMessage", "params": { "access_token": "user_access_token", "channel_id": "123456", "message": "Hello, Kick chat!" }, "id": 4 }
Method | Description | Parameters | Notes |
---|---|---|---|
getChannelInfo | Get channel info | access_token: User's access tokenchannel_id: Channel ID | Basic channel information |
getChannelFollowers | Get followers | access_token: User's access tokenchannel_id: Channel ID | Users following the channel |
getChannelSubscribers | Get subscribers | access_token: User's access tokenchannel_id: Channel ID | Requires channel ownership |
getChannelEmotes | Get channel emotes | access_token: User's access tokenchannel_id: Channel ID | Custom channel emotes |
getChannelBadges | Get channel badges | access_token: User's access tokenchannel_id: Channel ID | Loyalty and subscriber badges |
getChannelModerators | Get moderators | access_token: User's access tokenchannel_id: Channel ID | Requires channel ownership |
getChannelBans | Get banned users | access_token: User's access tokenchannel_id: Channel ID | Requires moderator privileges |
getChannelVips | Get VIP users | access_token: User's access tokenchannel_id: Channel ID | Users with VIP status |
getChannelClips | Get channel clips | access_token: User's access tokenchannel_id: Channel ID | Popular clips from channel |
getChannelVideos | Get channel videos | access_token: User's access tokenchannel_id: Channel ID | VODs and uploads |
getChannelHighlights | Get highlights | access_token: User's access tokenchannel_id: Channel ID | Highlighted moments |
getChannelScheduledStreams | Get schedule | access_token: User's access tokenchannel_id: Channel ID | Upcoming streams |
getChannelChatRules | Get chat rules | access_token: User's access tokenchannel_id: Channel ID | Channel's chat guidelines |
getChannelChatCommands | Get commands | access_token: User's access tokenchannel_id: Channel ID | Custom chat commands |
getChannelCategories | Get categories | access_token: User's access tokenchannel_id: Channel ID | Categories used by channel |
getChannelTags | Get channel tags | access_token: User's access tokenchannel_id: Channel ID | Tags used by the channel |
getChannelGifts | Get gift history | access_token: User's access tokenchannel_id: Channel ID | Gift transactions |
getChannelRaids | Get raid history | access_token: User's access tokenchannel_id: Channel ID | Incoming/outgoing raids |
getChannelHosts | Get host history | access_token: User's access tokenchannel_id: Channel ID | Host events |
Example: Getting channel information
{ "jsonrpc": "2.0", "method": "getChannelInfo", "params": { "access_token": "user_access_token", "channel_id": "123456" }, "id": 5 }
Method | Description | Parameters | Notes |
---|---|---|---|
startStream | Start streaming | access_token: User's access tokenchannel_id: Channel ID | Requires channel:write scope |
endStream | End stream | access_token: User's access tokenchannel_id: Channel ID | Requires channel:write scope |
updateStreamInfo | Update stream info | access_token: User's access tokenchannel_id: Channel IDdata: Stream metadata | Update title, category, etc. |
updateStreamSettings | Update settings | access_token: User's access tokenchannel_id: Channel IDdata: Settings object | Technical stream settings |
getStreamInfo | Get stream info | access_token: User's access tokenchannel_id: Channel ID | Current stream details |
getStreamViewers | Get viewers | access_token: User's access tokenchannel_id: Channel ID | Current viewer count and list |
getStreamCategories | Get categories | access_token: User's access tokenchannel_id: Channel ID | Categories of current stream |
getStreamTags | Get stream tags | access_token: User's access tokenchannel_id: Channel ID | Tags of current stream |
getStreamStats | Get statistics | access_token: User's access tokenchannel_id: Channel ID | Performance metrics |
createPoll | Create poll | access_token: User's access tokenchannel_id: Channel IDtitle: Poll titleoptions: Array of optionsduration: Duration in seconds | Start a new viewer poll |
endPoll | End active poll | access_token: User's access tokenchannel_id: Channel IDpoll_id: Poll to end | End poll early |
createPrediction | Create prediction | access_token: User's access tokenchannel_id: Channel IDtitle: Prediction titleoptions: Array of outcomesduration: Duration in seconds | Start a channel prediction |
endPrediction | End prediction | access_token: User's access tokenchannel_id: Channel IDprediction_id: Prediction ID | End prediction early |
The server configuration is managed through environment variables and a configuration file.
PORT
: The port on which the server runsNODE_ENV
: The environment in which the server is running (e.g., development
, production
)LOG_LEVEL
: The level of detail in server logsKICK_API_KEY
: Your Kick API keyKICK_CLIENT_ID
: Your Kick client IDKICK_CLIENT_SECRET
: Your Kick client secretWEBHOOK_URL
: Your webhook URLWEBHOOK_SECRET
: Your webhook secretThe configuration file is located at .env
.
The server implements several security features to protect against common threats:
The server includes built-in monitoring capabilities to help you keep track of its performance and health:
The server is designed to be highly performant and efficient:
The server includes built-in debugging capabilities to help you diagnose and fix issues:
We welcome contributions from the community! If you're interested in contributing to the project, please follow these steps:
This project is licensed under the MIT License. See the LICENSE file for more information.
We would like to thank the following individuals and organizations for their contributions to this project:
Thank you for using Kick MCP Server! We hope you find it useful and enjoyable.
Kick API MCP
Readme
MIT license
Activity
1 star
1 watching
0 forks
Report repository
No releases published
No packages published
An email processing server that uses MongoDB for semantic search and SQLite for efficient storage and retrieval.
A server for interacting with LinkedIn, including authentication and posting capabilities.
A server for interacting with Apache RocketMQ, a distributed messaging and streaming platform, requiring environment variables for configuration.
A Node.js service for interacting with the LnExchange API for spot trading.
integrates with Bluesky API to query and search feeds and posts.
Connect to any function, any language, across network boundaries using AgentRPC.
Make voice calls and send SMS messages using the Vonage API.
Sends emails using the Resend API. Requires a Resend API key.
Network access with the ability to run commands like ping, traceroute, mtr, http, dns resolve.
Provides access to Intercom conversations and chats. Requires an Intercom API key.