MCP Terminal Server
by dillip285
# Getting Started
!!! note
If you're a user of Firebase Genkit and landed here,
this is engineering documentation that someone contributing
to Genkit would use, not necessarily only use it.
For more information about how to get started with using
Firebase Genkit, please see: [User Guide](.)
## Preparing your account
### Create a GitHub account
1. [Sign up](https://github.com/signup) for an account.
2. Please [enable 2 factor authentication
(2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa)
after having created a GitHub account.
1. Use the [Google Authenticator
app](https://support.google.com/accounts/answer/1066447?hl=en&co=GENIE.Platform%3DAndroid)
for your device.
=== "Android"
[Google Authenticator app for Android](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&pli=1)
=== "iOS"
[Google Authenticator app for iOS](https://apps.apple.com/us/app/google-authenticator/id388497605)
2. Use a physical security key such as the [Google
Titan](https://store.google.com/product/titan_security_key?hl=en-US).
4. [Generate an SSH
key](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)
for your workstation to associate it with your GitHub account.
!!! tip
You can consider using a script such as the following to easily identify
your key.
```bash
#!/usr/bin/env bash
UNAME_MRS=$(uname -mrs || echo 'unknown')
UNAME_OS="$(uname -s | tr '[:upper:]' '[:lower:]' || echo 'unknown')"
OS_TYPE="$(echo $OSTYPE | tr '[:upper:]' '[:lower:]' || echo 'unknown')"
CPU_ARCH="$(uname -m || echo 'unknown')"
OS_DISTRO="$(cat /etc/os-release 2>/dev/null | grep -E '^ID=.*' | sed -e 's/^ID=\(.*\)/\1/g')"
ssh-keygen -vvvv -t ed25519 -C "ssh://${USER}@$(hostname)/?arch=${CPU_ARCH}&os=${OS_TYPE}&distro=${OS_DISTRO}×tamp=$(date +'%Y-%m-%dT%H:%M:%S')"
cat ~/.ssh/id_ed25519.pub >> "${HOME}/.ssh/authorized_keys"
cat ~/.ssh/id_ed25519.pub
```
Save this to a file called `gen_ssh_key.sh` and run it as follows after
changing to its container directory:
```bash
chmod a+x gen_ssh_key.sh
./gen_ssh_key.sh
```
5. [Associate your SSH key with your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).
6. If you're a Googler, also [associate your `@google.com` email
address](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account)
with your GitHub account and follow any other requirements to complete this
process.
### GitHub Organization Membership
Please talk to the Genkit Dec team (on [discord](https://discord.gg/qXt5zzQKpc))
to get yourself added to the appropriate groups for your GitHub organization
membership.
### CLA
* Ensure you have [signed the
CLA](https://github.com/firebase/genkit/blob/main/CONTRIBUTING.md#sign-our-contributor-license-agreement).
* For corporate CLAs, please ask the appropriate channels for help.
## Preparing your workstation
!!! note
=== "macOS"
Install [Homebrew](https://brew.sh/) before proceeding.
=== "Debian"
Your system should have the required software ready to go.
=== "Fedora"
Your system should have the required software ready to go.
### Install the GitHub CLI tool
=== "macOS"
We're assuming you have [Homebrew](https://brew.sh/) installed
already.
```bash
brew install gh
```
=== "Debian/Ubuntu"
```bash
sudo apt install gh
```
=== "Fedora"
```bash
sudo dnf install gh
```
### Authenticate the CLI with GitHub
```bash
gh auth login
```
### Check out project-related repositories
Consider setting up your workspace to mimic the paths found on GitHub for easier
disambiguation of forks:
```bash
mkdir -p $HOME/code/github.com/firebase/
cd $HOME/code/github.com/firebase
gh repo clone https://github.com/firebase/genkit.git
```
This should allow you to produce a directory structure similar to the following:
```bash
zsh❯ tree -L 3 code
code
└── github.com
├── firebase
│ └── genkit
├── google
│ └── dotprompt
└── yesudeep
├── dotprompt
└── genkit
```
### Configure Git with your legal name and email address.
!!! note inline end
Googlers should use their `@google.com` email address
to make commits.
```bash
git config user.email "{username}@domain.com"
git config user.Name "Your Legal Name."
```
### Engineering workstations
Run the following command from the `code/github.com/firebase/genkit` repository
working tree and it should install the required tools for you.
```bash
py/bin/setup
```
### CI/CD
The following is the equivalent used for CI/CD systems.
```bash
py/bin/setup -a ci
```