Skip to content

Commit 754faa9

Browse files
feat: add fastmcp based MCP server (#54)
* chore: delete all previous ts based mcp server * feat: add new mcp server in python using fastmcp - Supports both self-hosted (using stdio) and cloud using stdio and http transports. - Stdio supports PAT based auth and http transport uses OAuth * delete old node github actions * add gh action to publish to pypi * use workspace_slug from env or oauth token * fix fetching installation flow * add docker files * feat: add support to run oauth, header and stdio based mcp servers * refactor code for each of the mcp server * fix env variables in stdio transport * update docker command to use http transport * add info logs in oauth provider * fix: downgrade mcp to 1.22.0 version * formatting changes * use /api-key as path for header based mcp * update README with instructions on using python mcp * remove rest of the node files * upgrade fastmcp to latest version * Update server name and icon * add SSE transport for backward compatibility * add intake tools * add docs for intake tools * add sse documentation * set version as 0.2.0
1 parent c598a3f commit 754faa9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+4689
-5268
lines changed

.dockerignore

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
*.egg-info/
8+
dist/
9+
build/
10+
.venv/
11+
venv/
12+
ENV/
13+
env/
14+
15+
# IDE
16+
.vscode/
17+
.idea/
18+
*.swp
19+
*.swo
20+
*~
21+
22+
# Testing
23+
.pytest_cache/
24+
.coverage
25+
htmlcov/
26+
.tox/
27+
28+
# Git
29+
.git/
30+
.gitignore
31+
32+
# Documentation
33+
*.md
34+
!README.md
35+
36+
# Other
37+
.DS_Store
38+
*.log
39+
.codacy/
40+
.cursor/
41+
test_client.py
42+

.github/workflows/build_check.yml

Lines changed: 0 additions & 24 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 0 additions & 30 deletions
This file was deleted.

.github/workflows/publish-pypi.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Publish to PyPI
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: write
8+
9+
jobs:
10+
publish:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
17+
- name: Set up Python
18+
uses: actions/setup-python@v4
19+
with:
20+
python-version: "3.10"
21+
22+
- name: Install dependencies
23+
run: |
24+
python -m pip install --upgrade pip
25+
pip install build twine
26+
27+
- name: Build package
28+
run: |
29+
python -m build
30+
31+
- name: Check package
32+
run: twine check dist/*
33+
34+
- name: Publish to PyPI
35+
env:
36+
TWINE_USERNAME: __token__
37+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
38+
run: |
39+
python -m twine upload dist/*
40+
41+
- name: Get version from pyproject.toml
42+
id: package-version
43+
run: |
44+
VERSION=$(grep "version = " pyproject.toml | cut -d'"' -f2 | head -1)
45+
if [ -z "$VERSION" ]; then
46+
echo "Error: Could not extract version from pyproject.toml"
47+
exit 1
48+
fi
49+
echo "current-version=$VERSION" >> $GITHUB_OUTPUT
50+
51+
- name: Create GitHub Release
52+
uses: softprops/action-gh-release@v2
53+
with:
54+
tag_name: v${{ steps.package-version.outputs.current-version }}
55+
name: v${{ steps.package-version.outputs.current-version }}
56+
draft: false
57+
prerelease: false
58+
generate_release_notes: true

.github/workflows/publish.yml

Lines changed: 0 additions & 54 deletions
This file was deleted.

.gitignore

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,57 @@
1-
# Dependencies
2-
node_modules/
3-
yarn.lock
4-
5-
# Environment
6-
.env
7-
.env.local
8-
.env.*.local
9-
10-
# Build output
11-
dist/
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
127
build/
13-
out/
14-
15-
# Logs
16-
logs/
17-
*.log
18-
npm-debug.log*
19-
yarn-debug.log*
20-
yarn-error.log*
21-
22-
# IDE and editor files
23-
.idea/
8+
develop-eggs/
9+
dist/
10+
downloads/
11+
eggs/
12+
.eggs/
13+
lib/
14+
lib64/
15+
parts/
16+
sdist/
17+
var/
18+
wheels/
19+
pip-wheel-metadata/
20+
share/python-wheels/
21+
*.egg-info/
22+
.installed.cfg
23+
*.egg
24+
MANIFEST
25+
26+
# Virtual environments
27+
venv/
28+
env/
29+
ENV/
30+
.venv
31+
32+
# IDE
2433
.vscode/
34+
.idea/
2535
*.swp
2636
*.swo
37+
*~
2738
.DS_Store
2839

29-
# TypeScript
30-
*.tsbuildinfo
40+
# Testing
41+
.pytest_cache/
42+
.coverage
43+
htmlcov/
44+
.tox/
45+
.hypothesis/
3146

32-
# Coverage directory used by tools like istanbul
33-
coverage/
47+
# Mypy
48+
.mypy_cache/
49+
.dmypy.json
50+
dmypy.json
3451

35-
# Optional npm cache directory
36-
.npm
52+
# Environment variables
53+
.env
54+
.env.local
3755

38-
# Optional eslint cache
39-
.eslintcache
56+
# Ignore cursor AI rules
57+
.cursor/rules/codacy.mdc

.prettierrc

Lines changed: 0 additions & 9 deletions
This file was deleted.

Dockerfile

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Use Python 3.11 as base image
2+
FROM python:3.11-slim
3+
4+
# Set working directory
5+
WORKDIR /app
6+
7+
# Install system dependencies
8+
RUN apt-get update && apt-get install -y \
9+
curl \
10+
&& rm -rf /var/lib/apt/lists/*
11+
12+
# Install uv for faster package management
13+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
14+
15+
# Copy dependency files and application code
16+
COPY pyproject.toml ./
17+
COPY uv.lock* ./
18+
COPY plane_mcp/ ./plane_mcp/
19+
20+
# Install the package and dependencies using uv
21+
RUN uv pip install --system --no-cache .
22+
23+
# Expose port for HTTP transports (SSE, streamable-http, http)
24+
EXPOSE 8211
25+
26+
# Set environment variables with defaults
27+
ENV FASTMCP_PORT=8211
28+
29+
# Default to streamable-http transport, but allow override via command
30+
# Users can override by passing different transport as CMD
31+
ENTRYPOINT ["python", "-m", "plane_mcp"]
32+
CMD ["http"]
33+

LICENSE

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2025 Plane
3+
Copyright (c) 2025 Plane MCP Server Contributors
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
SOFTWARE.
22+

0 commit comments

Comments
 (0)