These steps will run the MCP GitHub server and a chatbot agent inside a Meshagent Room for short-term or testing use. When the Meshagent Room closes, both the MCP server tool and chatbot are automatically removed. Environment Variables:
Set these for GitHub MCP server integration:
  • GITHUB_PERSONAL_ACCESS_TOKEN: Your GitHub Personal Access Token

Steps

  1. Install Meshagent CLI:
    pip install "meshagent[all]"
    
  2. Sign Up and Authenticate
    Follow the Meshagent CLI getting started docs to sign up and log in.
  3. Launch MCP GitHub Agent in a Test Room:
    meshagent service test --room=test --role=agent --image=meshagent/mcp-github:latest \
      --env GITHUB_PERSONAL_ACCESS_TOKEN=<YOUR_TOKEN> \
      --env MESHAGENT_PORT=8001 \
      --port="num=8001 path=/webhook liveness=/ type=meshagent.callable" \
      --name=mcp-github-service-test
    
    • This starts a Meshagent Room with a GitHub MCP server available in the room.
    • Rooms close if inactive.
  4. Start a Chatbot in the Room:
    meshagent chatbot join --room=test --agent-name=mcp-github --name=mcp-github --toolkit=mcp-github
    
    • This runs a chatbot in the same Meshagent Room that can use the GitHub toolkit.
    • You can use multiple toolkits with the same agent.
    A link to the Room will be provided in the output. Open it in your browser.
  5. Interact!
    • Visit the Room link in your browser.
    • Send messages to the agent to interact with the MCP GitHub tools.

Project Level Deployment

To automatically provide your MCP server and chatbot to every Meshagent Room in your project—ideal for production or persistent automation—deploy services at the project level. This ensures agents join all new rooms consistently, with no manual launches or local processes required.

Steps

  1. Create Persistent MCP GitHub Agent Service:
    meshagent service create --role=agent --image=meshagent/mcp-github:latest \
      --env GITHUB_PERSONAL_ACCESS_TOKEN=<YOUR_TOKEN> \
      --env MESHAGENT_PORT=8001 \
      --port="num=8001 path=/webhook liveness=/ type=meshagent.callable" \
      --name=mcp-github-service
    
  2. Create Persistent Chatbot Service:
    meshagent service create --image="meshagent/cli:latest" \
      --port="num=9001 path=/agent liveness=/ type=meshagent.callable participant_name=mcp-github-chatbot" \
      --env="MESHAGENT_PORT=9001" \
      --name="mcp-github-chatbot-service" \
      --command="meshagent chatbot service --agent-name=mcp-github-chatbot --toolkit=mcp-github"
    
These services will automatically join every new room in your Meshagent project, making the MCP server tools available everywhere, on demand.

Tools Available

Tools for interacting with the GitHub API: file operations, repo management, search, issues, PRs, and more.

Available Tools (26)

ToolShort Description
add_issue_commentAdd a comment to an existing issue
create_branchCreate a new branch in a GitHub repository
create_issueCreate a new issue in a GitHub repository
create_or_update_fileCreate or update a single file in a GitHub repository
create_pull_requestCreate a new pull request in a GitHub repository
create_pull_request_reviewCreate a review on a pull request
create_repositoryCreate a new GitHub repository in your account
fork_repositoryFork a GitHub repository
get_file_contentsGet file or directory contents from a repository
get_issueGet details of a specific issue
get_pull_requestGet details of a specific pull request
get_pull_request_commentsGet review comments on a pull request
get_pull_request_filesList files changed in a pull request
get_pull_request_reviewsGet reviews on a pull request
get_pull_request_statusGet combined status for a pull request
list_commitsList commits of a branch
list_issuesList issues in a repository
list_pull_requestsList and filter pull requests in a repo
merge_pull_requestMerge a pull request
push_filesPush multiple files in a single commit
search_codeSearch for code across repositories
search_issuesSearch for issues and PRs
search_repositoriesSearch for repositories
search_usersSearch for users
update_issueUpdate an existing issue
update_pull_request_branchUpdate a PR branch with base changes

Tools Details

add_issue_comment

Add a comment to an existing issue
Parameters:
  • body: string
  • issue_number: number
  • owner: string
  • repo: string

create_branch

Create a new branch in a GitHub repository
Parameters:
  • branch: string (new branch name)
  • owner: string
  • repo: string
  • from_branch: string (optional)

create_issue

Create a new issue in a GitHub repository
Parameters:
  • owner: string
  • repo: string
  • title: string
  • assignees: array (optional)
  • body: string (optional)
  • labels: array (optional)
  • milestone: number (optional)

create_or_update_file

Create or update a single file in a GitHub repository
Parameters:
  • branch: string
  • content: string
  • message: string
  • owner: string
  • path: string
  • repo: string
  • sha: string (optional)

create_pull_request

Create a new pull request
Parameters:
  • base: string (target branch)
  • head: string (source branch)
  • owner: string
  • repo: string
  • title: string
  • body: string (optional)
  • draft: boolean (optional)
  • maintainer_can_modify: boolean (optional)

create_pull_request_review

Create a review on a pull request
Parameters:
  • body: string
  • event: string
  • owner: string
  • pull_number: number
  • repo: string
  • comments: array (optional)
  • commit_id: string (optional)

create_repository

Create a new GitHub repository
Parameters:
  • name: string
  • autoInit: boolean (optional)
  • description: string (optional)
  • private: boolean (optional)

fork_repository

Fork a GitHub repository
Parameters:
  • owner: string
  • repo: string
  • organization: string (optional)

get_file_contents

Get contents of a file or directory
Parameters:
  • owner: string
  • path: string
  • repo: string
  • branch: string (optional)

get_issue

Get details of a specific issue
Parameters:
  • issue_number: number
  • owner: string
  • repo: string

get_pull_request

Get pull request details
Parameters:
  • owner: string
  • pull_number: number
  • repo: string

get_pull_request_comments

Get review comments on a pull request
Parameters:
  • owner: string
  • pull_number: number
  • repo: string

get_pull_request_files

List files changed in a pull request
Parameters:
  • owner: string
  • pull_number: number
  • repo: string

get_pull_request_reviews

Get reviews on a pull request
Parameters:
  • owner: string
  • pull_number: number
  • repo: string

get_pull_request_status

Get status checks for a pull request
Parameters:
  • owner: string
  • pull_number: number
  • repo: string

list_commits

List commits of a branch
Parameters:
  • owner: string
  • repo: string
  • page: number (optional)
  • perPage: number (optional)
  • sha: string (optional)

list_issues

List issues in a repository
Parameters:
  • owner: string
  • repo: string
  • …additional filters (see above)…

list_pull_requests

List and filter pull requests
Parameters:
  • owner: string
  • repo: string
  • …filters (see above)…

merge_pull_request

Merge a pull request
Parameters:
  • owner: string
  • pull_number: number
  • repo: string
  • commit_message: string (optional)
  • commit_title: string (optional)
  • merge_method: string (optional)

push_files

Push multiple files in a commit
Parameters:
  • branch: string
  • files: array
  • message: string
  • owner: string
  • repo: string

search_code

Search for code across repositories
Parameters:
  • q: string (query)
  • order: string (optional)
  • page: number (optional)
  • per_page: number (optional)

search_issues

Search for issues and PRs
Parameters:
  • q: string
  • order: string (optional)
  • page: number (optional)
  • per_page: number (optional)
  • sort: string (optional)

search_repositories

Search for repos
Parameters:
  • query: string
  • page: number (optional)
  • perPage: number (optional)

search_users

Search for users
Parameters:
  • q: string
  • order: string (optional)
  • page: number (optional)
  • per_page: number (optional)
  • sort: string (optional)

update_issue

Update an issue
Parameters:
  • issue_number: number
  • owner: string
  • repo: string
  • …additional fields to update…

update_pull_request_branch

Update a pull request branch with the latest base changes
Parameters:
  • owner: string
  • pull_number: number
  • repo: string
  • expected_head_sha: string (optional)

Meshagent Resources