gary-mcp
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"gary-mcp": {
"args": [
"run",
"--directory",
"/Users/gary/Documents/workspace/gary-mcp",
"python",
"-m",
"src.server"
],
"command": "uv",
"env": {
"AWS_PROFILE": "jongmun",
"SHELL_RC_PATH": "/Users/gary/.zshrc",
"WORKSPACE_PATH": "/Users/gary/Documents/workspace"
}
}
}
}
服务介绍
Gary MCP Server
MCP (Model Context Protocol) . Cursor IDE AI Agent Token , , AWS/Fly.io , PDF , .
- ** **: .
- **AWS **: AWS CLI jongmun AWS .
- **Fly.io **: Fly.io , , .
- ** PDF **: PDF .
- ** **: , / .
- **MCP **: Cursor MCP .
- sequential-thinking:
- chrome-devtools: Chrome
** MCP ** . Docker , .
- aws-mcp: AWS CLI
- flyio-mcp: Fly.io
- github-mcp: GitHub CLI
- db-mcp:
- pdf-mcp: PDF
- official-docs-mcp:
- Python 3.12
- Docker
- AWS CLI (jongmun )
- Fly.io CLI ()
1: Docker Compose ()
# MCP
docker-compose -f docker-compose.mcp.yml up -d
#
docker-compose -f docker-compose.mcp.yml up -d aws-mcp db-mcp
#
docker-compose -f docker-compose.mcp.yml down
2: Docker
:
# AWS
docker build -f docker/aws-cli-mcp.Dockerfile -t aws-mcp .
docker run -it --rm \
-v ~/.aws:/root/.aws:ro \
-v ~/.zshrc:/root/.zshrc:ro \
-e AWS_PROFILE=jongmun \
-e SHELL_RC_PATH=/root/.zshrc \
aws-mcp
/ :
-
/Users/gary/Documents/workspace:/workspace:ro: -
~/.aws:/root/.aws:ro: AWS -
~/.zshrc:/root/.zshrc:ro: zshrc (AWS/Fly.io ) -
WORKSPACE_PATH: -
SHELL_RC_PATH: CLI shell rc (/root/.zshrc) -
WORKSPACE_PATH: MCP . Docker--build-arg,-e.SHELL_RC_PATH: AWS/Fly.io CLI shell rc ..zshrcCLIexport AWS_*,export FLY_*.AWS_PROFILE,FLY_*:-e.zshrcexport.
3. (Docker )
# uv
pip install uv
#
uv pip install -e .
#
python -m src.server
Cursor IDE
Cursor IDE MCP :
- macOS:
~/.cursor/mcp.json~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
1: Docker ()
Docker . .
{
"mcpServers": {
"gary-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/Users/gary/Documents/workspace:/workspace:ro",
"-v", "/Users/gary/.aws:/root/.aws:ro",
"-v", "/Users/gary/.zshrc:/root/.zshrc:ro",
"-v", "/Users/gary/Documents/workspace/gary-mcp/.env:/app/.env:ro",
"-e", "WORKSPACE_PATH=/workspace",
"-e", "AWS_PROFILE=jongmun",
"-e", "SHELL_RC_PATH=/root/.zshrc",
"gary-mcp-server"
]
}
}
}
:
- Docker :
docker build -t gary-mcp-server . .env.
2: Python
. Docker .
{
"mcpServers": {
"gary-mcp": {
"command": "python3",
"args": [
"-m",
"src.server"
],
"cwd": "/Users/gary/Documents/workspace/gary-mcp",
"env": {
"WORKSPACE_PATH": "/Users/gary/Documents/workspace",
"AWS_PROFILE": "jongmun",
"SHELL_RC_PATH": "/Users/gary/.zshrc"
}
}
}
}
:
-
: `uv pip install -e .` WORKSPACE_PATH.
3: uv
uv .
{
"mcpServers": {
"gary-mcp": {
"command": "uv",
"args": [
"run",
"--directory", "/Users/gary/Documents/workspace/gary-mcp",
"python",
"-m",
"src.server"
],
"env": {
"WORKSPACE_PATH": "/Users/gary/Documents/workspace",
"AWS_PROFILE": "jongmun",
"SHELL_RC_PATH": "/Users/gary/.zshrc"
}
}
}
}
- ** JSON **:
~/.cursor/mcp.json. - **Cursor IDE **: Cursor IDE .
- ** **: Cursor MCP
gary-mcp. - ** **: AI
list_databases,run_query,read_document.
WORKSPACE_PATH:- Docker: (:
/workspace) - : (:
/Users/gary/Documents/workspace)
- Docker: (:
AWS
AWS_PROFILE: AWS (:jongmun)- AWS
~/.aws.zshrc.
Fly.io
- Fly.io
.zshrcFLY_*.
GitHub
- GitHub CLI
GH_*/GITHUB_*(GH_TOKEN,GITHUB_TOKEN) . gh auth login.
LLM docs/manifest.yaml . type: git, type: archive type: http AWS/Python/FastAPI/Docker/Kubernetes/Fly.io/PostgreSQL/Redis/Next.js/Tailwind CSS URL .
1.
#
python scripts/sync_docs.py
# ()
python scripts/sync_docs.py python fastapi aws-main docker-main
- Python, FastAPI, React, TypeScript, Go, AWS, Docker, Kubernetes, Fly.io, PostgreSQL, Redis, Next.js, Tailwind CSS .
docs/mirror/<>/<>,.gitignore.
2. HTTP
type: http URL .
- name: python-main
type: http
version: "3.x"
target: python/main
pages:
- url: https://docs.python.org/3/
pages: manifest URL .pathURL .pages_file:docs/JSON/YAML URL . (docs/pages/python-main.yaml)-
`url` (`path`) . URL `index.html` . - HTTP
aws-main: https://docs.aws.amazon.com/python-main: https://docs.python.org/3/fastapi-main: https://fastapi.tiangolo.com/docker-main: https://docs.docker.com/kubernetes-main: https://kubernetes.io/docs/home/flyio-main: https://fly.io/docs/postgresql-main: https://www.postgresql.org/docs/current/index.htmlredis-main: https://redis.io/docs/latest/nextjs-main: https://nextjs.org/docstailwindcss-main: https://tailwindcss.com/docs
3. MCP
sync_official_docs: MCP (names).list_official_docs: .search_official_docs: (name).
4. DocumentService
WORKSPACE_PATH=/Users/gary/Documents/workspace docs/mirror read_document/search_documents . docs/manifest.yaml scripts/sync_docs.py .
read_document
.
:
file_path():
:
{
"file_path": "/workspace/my-project/README.md"
}
list_workspace_projects
.
:
{}
search_documents
.
:
query():project_name():
:
{
"query": "FastAPI",
"project_name": "my-api-project"
}
AWS
aws_cli_execute
AWS CLI (jongmun ).
:
service(): AWS (: s3, ec2, lambda)operation(): (: list, describe-instances)additional_args():
:
{
"service": "s3",
"operation": "ls"
}
aws_list_resources
AWS .
:
service(): AWSresource_type():
:
{
"service": "ec2",
"resource_type": "instances"
}
aws_get_account_info
AWS .
:
{}
Fly.io
flyio_list_apps
Fly.io .
:
{}
flyio_get_app_status
Fly.io .
:
app_name():
:
{
"app_name": "my-app"
}
flyio_get_app_logs
Fly.io .
:
app_name():lines(): (: 50)
:
{
"app_name": "my-app",
"lines": 100
}
GitHub
github_cli_execute
GitHub CLI .
:
command(): (:"repo","issue","pr")args():
github_list_repos
.
:
owner(): /visibility():public,private,internallimit(): ( 20)sort(): (updated)
github_list_pull_requests
PR .
:
repo():owner/repostate():open,closed,all(open)limit(): ( 20)
github_list_issues
.
:
repo()state():open,closed,alllimit(): ( 20)
markdown_to_pdf
PDF .
:
markdown_path():output_path(): PDFcss_path(): CSS
:
{
"markdown_path": "/workspace/my-project/README.md",
"output_path": "/workspace/my-project/README.pdf"
}
analyze_code_flow
.
:
project_path():entry_point():
:
{
"project_path": "/workspace/my-project",
"entry_point": "main.py"
}
find_related_code
.
:
project_path():target_function():target_class():target_import(): import
:
{
"project_path": "/workspace/my-project",
"target_function": "process_data"
}
get_code_reusability
.
:
project_path():language(): (: python)
:
{
"project_path": "/workspace/my-project",
"language": "python"
}
list_databases
.
:
db_name(): DBconnection_string(): (:postgresql+asyncpg://user:pass@host:5432/db)use_dotenv(): .env (: true)use_aws_secrets(): AWS Secrets Manageraws_secret_name(): AWSuse_github_secrets(): GitHub Secretsgithub_secret_name(): GitHubgithub_repo(): GitHub
:
{
"connection_string": "postgresql+asyncpg://user:pass@localhost:5432/mydb"
}
describe_tables
.
:
db_name(): DBconnection_string():database():use_dotenv,use_aws_secrets,aws_secret_name,use_github_secrets,github_secret_name,github_repo():
:
{
"connection_string": "sqlite+aiosqlite:///./test.db"
}
run_query
SQL ( read-only, read-write ).
:
query(): SQLdb_name(): DBconnection_string():parameters(): (dict)limit(): (: 100)mode(): -read_onlyread_write(:read_only)use_dotenv,use_aws_secrets,aws_secret_name,use_github_secrets,github_secret_name,github_repo():
:
{
"query": "SELECT * FROM users WHERE id = :id",
"parameters": {"id": 1},
"connection_string": "postgresql+asyncpg://user:pass@localhost:5432/mydb",
"mode": "read_only"
}
:
read_only, INSERT/UPDATE/DELETE .-
`mode: "read_write"` . .envDATABASE_URLDB .- AWS Secrets Manager GitHub Secrets .
sync_official_docs
.
:
names():force(): ( false)
list_official_docs
.
search_official_docs
.
:
query():name():limit(): ( 5)structured():true/
resolve_library_id
ID .
:
name(): ) react, next.js, typescript, python, spring, mysql
list_libraries
.
:
category(): framework | language | orm | database | cloudavailable_only():
get_library_docs
Context7 .
:
library_id(): )/libraries/reactmode():info|code( info)topic(): (: hooks, routing)limit(): ( 5, topic )
MCP
gary-mcp Cursor MCP . MCP .
gary-mcp MCP :
~/.cursor/mcp.json~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsoncursor-mcp-local.json
MCP
MCP ( ):
- sequential-thinking: ( :
thinking_*) - chrome-devtools: Chrome ( :
chrome_*)
MCP . :
sequential-thinkingthinking_chrome-devtoolschrome_
MCP , gary-mcp .
gary-mcp/
src/
__init__.py
server.py # MCP ()
servers/ # MCP
__init__.py
base_server.py #
aws_server.py # AWS
flyio_server.py # Fly.io
github_server.py # GitHub
db_server.py #
pdf_server.py # PDF
official_docs_server.py #
tools/ #
__init__.py
document_tool.py #
aws_tool.py # AWS CLI
flyio_tool.py # Fly.io
pdf_tool.py # PDF
code_analysis_tool.py #
db_tool.py #
infrastructure/
db/
connection_manager.py # DB
utils/
__init__.py
file_utils.py #
env_loader.py # /
docker/ # Dockerfile
base.Dockerfile #
aws-cli-mcp.Dockerfile
flyio-mcp.Dockerfile
github-cli-mcp.Dockerfile
db-mcp.Dockerfile
pdf-mcp.Dockerfile
official-docs-mcp.Dockerfile
docker-compose.mcp.yml # Docker Compose
tests/
__init__.py
test_document_service.py
test_pdf_service.py
test_code_analysis_service.py
test_cli_services.py
test_db_tool.py # DB
pyproject.toml # uv
Dockerfile # Docker ()
.dockerignore # Docker
.env.example #
README.md #
- Python 3.12: Python
- uv: Python
- MCP SDK: Model Context Protocol Python SDK
- asyncio: /
- SQLAlchemy: ORM DB
- asyncpg/aiomysql/aiosqlite: DB
- weasyprint: PDF
- AWS CLI: AWS
- Fly.io CLI: Fly.io
- boto3: AWS Secrets Manager
- python-dotenv: .env
AWS CLI
****: AWS CLI .
** :**
- AWS :
aws configure list --profile jongmun - Docker AWS :
docker run -it --rm -v ~/.aws:/root/.aws:ro gary-mcp-server ls /root/.aws
Fly.io CLI
****: Fly.io .
** :**
- Fly.io CLI :
docker run -it --rm gary-mcp-server flyctl version - Fly.io :
docker run -it --rm gary-mcp-server flyctl auth login
****: PDF .
** :**
- WeasyPrint
****: .
** :**
- Docker
/workspace(Docker )
****: DB .
** :**
.env:
# .env
DATABASE_URL=postgresql+asyncpg://user:password@host:5432/dbname
#
DB_TYPE=postgresql
DB_HOST=localhost
DB_PORT=5432
DB_USER=user
DB_PASSWORD=password
DB_NAME=dbname
- AWS Secrets Manager :
- IAM
aws_secret_name
- GitHub Secrets :
gh auth login
- Docker DB :
--network host
****: sync_official_docs scripts/sync_docs.py .
** :**
git,tar,zip.- /
HTTPS_PROXY. docs/manifest.yamlURL .rm -rf docs/mirror docs/sources.
#
git clone <repository-url>
cd gary-mcp
# uv
pip install uv
#
uv pip install -e .
#
python -m src.server
- Python 3.12+
async/await- docstring
.
, .