A wrapper around the GitHub API to provide some focused tools to LLMs via the Model Context Protocol.
Cloning and running the server locally.
git clone --recurse-submodules [email protected]:timescale/tiger-gh-mcp-server.git
This project uses git submodules to include the mcp boilerplate code. If you cloned the repo without the --recurse-submodules
flag, run the following command to initialize and update the submodules:
git submodule update --init --recursive
You may also need to run this command if you pull changes that update a submodule. You can simplify this process by changing you git configuration to automatically update submodules when you pull:
git config --global submodule.recurse true
Run npm i
to install dependencies and build the project. Use npm run watch
to rebuild on changes.
You will need a GitHub token with the correct scopes. Here is a direct link to create such a new token.
Create a .env
file based on the .env.sample
file.
cp .env.sample .env
Then update the GITHUB_TOKEN
value in .env
.
The project includes a VS Code debug profile called "Debug Github MCP" that:
- Installs dependencies (
npm i
) - Builds the project (
npm run build
) - Launches the server in HTTP mode with full debugging support
To use it:
- Open the project in VS Code
- Go to the Debug panel (Ctrl/Cmd + Shift + D)
- Select "Debug Github MCP" from the dropdown
- Press F5 or click the play button
Breakpoints will work properly in TypeScript source files thanks to source map support.
The MCP Inspector is very handy.
npx @modelcontextprotocol/inspector
Field | Value |
---|---|
Transport Type | STDIO |
Command | node |
Arguments | dist/index.js |
Create/edit the file ~/Library/Application Support/Claude/claude_desktop_config.json
to add an entry like the following, making sure to use the absolute path to your local tiger-gh-mcp-server
project, and use a valid GitHub token.
{
"mcpServers": {
"tiger-gh": {
"command": "node",
"args": ["/absolute/path/to/tiger-gh-mcp-server/dist/index.js", "stdio"],
"env": {
"GITHUB_TOKEN": "ghp_whatever",
"GITHUB_ORG": "timescale"
}
}
}
}
We use a Helm chart to deploy to Kubernetes. See the chart/
directory for details.
Run the following to create a sealed secret for the GitHub credentials. Be sure to fill in the correct values.
kubectl -n savannah-system create secret generic tiger-gh-mcp-server-github \
--dry-run=client \
--from-literal=token="ghp_abc123" \
-o yaml | kubeseal -o yaml
kubectl -n savannah-system create secret generic tiger-gh-mcp-server-logfire \
--dry-run=client \
--from-literal=token="pylf_v1_us_" \
-o yaml | kubeseal -o yaml
kubectl -n savannah-system create secret generic tiger-gh-mcp-server-tailscale \
--dry-run=client \
--from-literal=authkey="tskey-auth-" \
-o yaml | kubeseal -o yaml
Update ./chart/values/dev.yaml
with the output.