groupme-mcp-server
An MCP server that exposes the GroupMe API v3 to MCP clients, built with FastMCP and hosted on Prefect Horizon.
Status: scaffolding. The project structure, tooling, and CI/CD are in place. No GroupMe tools are implemented yet.
Quick start
uvx groupme-mcp-server
Or point an MCP client at it directly:
{
"mcpServers": {
"groupme": {
"command": "uvx",
"args": ["groupme-mcp-server"],
"env": {
"GROUPME_MCP_LOG_LEVEL": "INFO"
}
}
}
}
Configuration
All settings are read from the environment with the GROUPME_MCP_ prefix, or
from a local .env file. See .env.example.
| Variable | Default | Description |
|---|---|---|
GROUPME_MCP_LOG_LEVEL |
INFO |
DEBUG, INFO, WARNING, ERROR, or CRITICAL. |
Development
Requires uv and Python 3.13+.
git clone https://github.com/oddrationale/groupme-mcp-server.git
cd groupme-mcp-server
uv sync --all-groups
uv run lefthook install # install the git hooks
Common tasks:
| Command | What it does |
|---|---|
uv run ruff format . |
Format. |
uv run ruff check --fix . |
Lint and autofix. |
uv run ty check |
Type check. |
uv run pytest |
Run tests. Fails below 100% coverage. |
uv run pytest --no-cov -k name |
Run a subset without the coverage gate. |
uv run fastmcp inspect src/groupme_mcp_server/server.py:mcp |
See what Horizon sees. |
Coverage is enforced at 100% (branch coverage included). If a line is
genuinely untestable, exclude it deliberately with # pragma: no cover and say
why in the PR — do not lower the threshold.
Deployment
The server is live at https://groupme.fastmcp.app/mcp, deployed on Prefect Horizon, which builds directly from this repository via its GitHub App.
- Entrypoint:
src/groupme_mcp_server/server.py:mcp - Dependencies: installed with
uv sync --frozen --no-dev, souv.lockmust be committed and current or the build fails - Environment variables: registered in the Horizon UI
- Auth: Horizon's built-in OAuth — clients must present a bearer token
The production target tracks main and deploys only after CI passes; every
pull request gets its own preview deployment. There is no deploy step in GitHub
Actions — CI gates quality and security, Horizon does the shipping.
Contributing
See CONTRIBUTING.md. Security issues go through private vulnerability reporting, not public issues — see SECURITY.md.
License
MIT © Dariel Dato-on
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file groupme_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: groupme_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e6bce8dfdccd1d2d59c667da4416a0f3dbc38677dbef32cf316d336840592d6
|
|
| MD5 |
72cc6107aa531e0b0b13d93b69063318
|
|
| BLAKE2b-256 |
6a38f64edb40b681e65798bbe3e66612e631b3432e6061c13b0f0f0eac1aa289
|
Provenance
The following attestation bundles were made for groupme_mcp_server-0.1.0.tar.gz:
Publisher:
release.yml on oddrationale/groupme-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
groupme_mcp_server-0.1.0.tar.gz -
Subject digest:
1e6bce8dfdccd1d2d59c667da4416a0f3dbc38677dbef32cf316d336840592d6 - Sigstore transparency entry: 2633704679
- Sigstore integration time:
-
Permalink:
oddrationale/groupme-mcp-server@b186d98703935a4ea349a1df651bcb3a8b965701 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/oddrationale
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b186d98703935a4ea349a1df651bcb3a8b965701 -
Trigger Event:
push
-
Statement type:
File details
Details for the file groupme_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: groupme_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e7ba88db1381342a08c4bd37d75bfff32a74b6d05e70824d4b3189d9bd4d352
|
|
| MD5 |
14e63923cedaeb54c206416b20e8b53a
|
|
| BLAKE2b-256 |
5e5b40d3c13870587a2eafb73b4c2945c2a982ccf6fa772159bb3f98d3ba0aba
|
Provenance
The following attestation bundles were made for groupme_mcp_server-0.1.0-py3-none-any.whl:
Publisher:
release.yml on oddrationale/groupme-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
groupme_mcp_server-0.1.0-py3-none-any.whl -
Subject digest:
9e7ba88db1381342a08c4bd37d75bfff32a74b6d05e70824d4b3189d9bd4d352 - Sigstore transparency entry: 2633704750
- Sigstore integration time:
-
Permalink:
oddrationale/groupme-mcp-server@b186d98703935a4ea349a1df651bcb3a8b965701 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/oddrationale
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b186d98703935a4ea349a1df651bcb3a8b965701 -
Trigger Event:
push
-
Statement type: