Model Context Protocol (MCP) tools organized by service. Each tool is a standalone Python function that can be imported and used directly.
mcp_registry/
├── github/ # GitHub operations
│ ├── create_or_update_file.py
│ ├── push_files.py
│ ├── create_repository.py
│ ├── fork_repository.py
│ ├── create_branch.py
│ ├── create_issue.py
│ ├── create_pull_request.py
│ ├── list_issues.py
│ ├── search_repositories.py
│ ├── search_code.py
│ ├── search_issues.py
│ ├── search_users.py
│ ├── get_file_contents.py
│ └── list_repository_files.py
└── slack/ # Slack operations
├── list_channels.py
├── post_message.py
├── reply_to_thread.py
├── add_reaction.py
├── get_channel_history.py
├── get_thread_replies.py
├── get_users.py
└── get_user_profile.py
All GitHub tools require an authenticated Github client:
from github import Github
# Initialize client with token
client = Github("your_github_token")
# Or use environment variable
import os
client = Github(os.getenv("GITHUB_TOKEN"))create_or_update_file: Create or update a single filepush_files: Commit multiple files simultaneouslycreate_repository: Create a new repositoryfork_repository: Fork an existing repositorycreate_branch: Create a new branch
create_issue: Create a new issuecreate_pull_request: Create a pull requestlist_issues: List repository issues with filtering
search_repositories: Search for repositoriessearch_code: Search for code across repositoriessearch_issues: Search for issuessearch_users: Search for users
get_file_contents: Get contents of a filelist_repository_files: List files in a directory
from github import Github
from mcp_registry.github import create_issue, push_files
client = Github("your_token")
# Create an issue
result = create_issue(
client=client,
owner="username",
repo="repository",
title="Bug report",
body="Description of the bug",
labels=["bug"]
)
# Push multiple files
result = push_files(
client=client,
owner="username",
repo="repository",
branch="main",
files=[
{"path": "file1.py", "content": "print('hello')"},
{"path": "file2.py", "content": "print('world')"}
],
message="Add new files"
)All Slack tools require an authenticated WebClient:
from slack_sdk import WebClient
# Initialize client with bot token
client = WebClient(token="xoxb-your-bot-token")
# Or use environment variable
import os
client = WebClient(token=os.getenv("SLACK_BOT_TOKEN"))list_channels: List public or pre-defined channelsget_channel_history: Get recent messages from a channel
post_message: Post a message to a channelreply_to_thread: Reply to a message threadadd_reaction: Add emoji reaction to a message
get_thread_replies: Get all replies in a thread
get_users: Get workspace users' profilesget_user_profile: Get detailed profile for a specific user
from slack_sdk import WebClient
from mcp_registry.slack import post_message, list_channels
client = WebClient(token="xoxb-your-token")
# List channels
result = list_channels(
client=client,
limit=50
)
# Post a message
result = post_message(
client=client,
channel_id="C1234567890",
text="Hello from MCP tools!"
)
# Reply to a thread
from mcp_registry.slack import reply_to_thread
result = reply_to_thread(
client=client,
channel_id="C1234567890",
thread_ts="1234567890.123456",
text="This is a reply"
)All tools return a dictionary with a success field:
result = create_issue(...)
if result["success"]:
print(f"Issue created: {result['url']}")
else:
print(f"Error: {result['error']}")GITHUB_TOKEN: Personal access token with appropriate permissions
SLACK_BOT_TOKEN: Bot token (starts withxoxb-)SLACK_TEAM_ID: Workspace team ID (optional)
Install dependencies:
uv add PyGithub slack-sdk pydanticThis registry follows the "Code Execution with MCP" pattern:
- Minimal Token Usage: Tools are presented as code APIs, not extensive schemas
- Progressive Discovery: Load tool definitions only when needed
- Direct Execution: Tools are simple Python functions, not wrapped services
- Result Filtering: Tools return structured data for easy filtering
These tools are designed to be used with Amazon Bedrock AgentCore Code Interpreter:
# In AgentCore sandbox
from github import Github
from mcp_registry.github import create_issue
client = Github(os.getenv("GITHUB_TOKEN"))
# Create issue and filter result
result = create_issue(
client=client,
owner="myorg",
repo="myrepo",
title="Feature request",
body="Add new feature"
)
# Return only relevant data to model
return {
"issue_number": result["issue_number"],
"url": result["url"]
}