Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2245a8e
SWI-8019 First Pass at MCP
ckoegel Jul 15, 2025
44a5ee1
switch from filtering apis to tools and update server
ckoegel Jul 17, 2025
97bcf3e
move for `uv` and update readme
ckoegel Aug 6, 2025
3a95fbe
refactor
ckoegel Aug 7, 2025
57b8d79
cleanup
ckoegel Aug 8, 2025
555ece5
update gitignore
ckoegel Aug 12, 2025
3907b8b
add pytest
ckoegel Aug 12, 2025
53f452a
changes for tests
ckoegel Aug 12, 2025
70172f3
servers unit tests
ckoegel Aug 12, 2025
c4ea5ca
add test workflow
ckoegel Aug 12, 2025
8224798
pytest-asyncio not necessary for now
ckoegel Aug 12, 2025
cb8047e
remove some unnecessary error handling
ckoegel Aug 20, 2025
0da14cd
add pytest-httpx
ckoegel Aug 20, 2025
d49b507
use mocking and update unit tests
ckoegel Aug 20, 2025
d8c033d
test wf
ckoegel Aug 20, 2025
500e196
add black for code formatting
ckoegel Aug 20, 2025
91820a3
format src with black
ckoegel Aug 20, 2025
c4ac973
format test with black
ckoegel Aug 20, 2025
a87d9e5
add use cases guide
ckoegel Aug 21, 2025
a9f2eb8
period
ckoegel Aug 21, 2025
2a3eb10
fix imports for tests
ckoegel Aug 22, 2025
c6ce99a
add eums
ckoegel Aug 22, 2025
bc6aaec
update use cases guide
ckoegel Aug 22, 2025
8781b7e
update config
ckoegel Aug 22, 2025
33d3218
readme updates
ckoegel Aug 26, 2025
bdce27e
readme
ckoegel Aug 26, 2025
f095a5c
readme and use cases updates
ckoegel Aug 29, 2025
9c6c0b6
update test command in wf
ckoegel Aug 29, 2025
38c3a14
add pytest async req
ckoegel Aug 29, 2025
7d8bfa3
add encoding to file open for mocks
ckoegel Aug 29, 2025
ead710a
format
ckoegel Aug 29, 2025
fc4b29d
update links to repo
ckoegel Sep 2, 2025
84543fd
remove untested hint
ckoegel Sep 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .bandwidth/catalog-info.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
schemaVersion: v1.0.0
name: bandwidth-mcp-server-location
description: Links to additional entities in the bandwidth-mcp-server repository.
name: mcp-server-location
description: Links to additional entities in the mcp-server repository.
annotations:
github.com/project-slug: Bandwidth/bandwidth-mcp-server
github.com/project-slug: Bandwidth/mcp-server
spec:
targets:
- ./component.yaml
Expand Down
4 changes: 2 additions & 2 deletions .bandwidth/component.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
schemaVersion: v1.0.0
name: bandwidth-mcp-server
name: mcp-server
description: Official Bandwidth MCP Server
annotations:
github.com/project-slug: Bandwidth/bandwidth-mcp-server
github.com/project-slug: Bandwidth/mcp-server
organization: BW
costCenter: Development - Software Infra
platformType:
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/test-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Test PR

on:
pull_request:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true

jobs:
test:
name: Test PR
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-2025, ubuntu-24.04]
python-version: ['3.10', '3.11', '3.12', '3.13']
fail-fast: false
env:
PYTHON_VERSION: ${{ matrix.python-version }}
OPERATING_SYSTEM: ${{ matrix.os }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Packages and Test
run: |
pip install -r requirements.txt
pip install -r dev-requirements.txt
python -m pytest -v
93 changes: 93 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[codz]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py.cover
.hypothesis/
.pytest_cache/
cover/

# uv
uv.lock

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
#poetry.toml

# Environments
.env
.envrc
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/
Loading