This is page 1 of 11. Use http://codebase.md/saidsurucu/yargi-mcp?lines=true&page={x} to view the full context.
# Directory Structure
```
├── __main__.py
├── .dockerignore
├── .env.example
├── .gitattributes
├── .github
│ └── workflows
│ └── publish.yml
├── .gitignore
├── .serena
│ ├── .gitignore
│ └── project.yml
├── 5ire-settings.png
├── analyze_kik_hash_generation.py
├── anayasa_mcp_module
│ ├── __init__.py
│ ├── bireysel_client.py
│ ├── client.py
│ ├── models.py
│ └── unified_client.py
├── asgi_app.py
├── bddk_mcp_module
│ ├── __init__.py
│ ├── client.py
│ └── models.py
├── bedesten_mcp_module
│ ├── __init__.py
│ ├── client.py
│ ├── enums.py
│ └── models.py
├── check_response_format.py
├── CLAUDE.md
├── danistay_mcp_module
│ ├── __init__.py
│ ├── client.py
│ └── models.py
├── docker-compose.yml
├── Dockerfile
├── docs
│ └── DEPLOYMENT.md
├── emsal_mcp_module
│ ├── __init__.py
│ ├── client.py
│ └── models.py
├── example_fastapi_app.py
├── fly-no-auth.toml
├── fly.toml
├── kik_mcp_module
│ ├── __init__.py
│ ├── client_v2.py
│ ├── client.py
│ ├── models_v2.py
│ └── models.py
├── kvkk_mcp_module
│ ├── __init__.py
│ ├── client.py
│ └── models.py
├── LICENSE
├── mcp_auth
│ ├── __init__.py
│ ├── clerk_config.py
│ ├── middleware.py
│ ├── oauth.py
│ ├── policy.py
│ └── storage.py
├── mcp_auth_factory.py
├── mcp_auth_http_adapter.py
├── mcp_auth_http_simple.py
├── mcp_server_main.py
├── nginx.conf
├── ornek.png
├── Procfile
├── pyproject.toml
├── railway.json
├── README.md
├── redis_session_store.py
├── rekabet_mcp_module
│ ├── __init__.py
│ ├── client.py
│ └── models.py
├── requirements.txt
├── run_asgi.py
├── saidsurucu-yargi-mcp-f5fa007
│ ├── __main__.py
│ ├── .dockerignore
│ ├── .env.example
│ ├── .gitattributes
│ ├── .github
│ │ └── workflows
│ │ └── publish.yml
│ ├── .gitignore
│ ├── 5ire-settings.png
│ ├── anayasa_mcp_module
│ │ ├── __init__.py
│ │ ├── bireysel_client.py
│ │ ├── client.py
│ │ ├── models.py
│ │ └── unified_client.py
│ ├── asgi_app.py
│ ├── bddk_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── models.py
│ ├── bedesten_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ ├── enums.py
│ │ └── models.py
│ ├── check_response_format.py
│ ├── danistay_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── models.py
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── docs
│ │ └── DEPLOYMENT.md
│ ├── emsal_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── models.py
│ ├── example_fastapi_app.py
│ ├── kik_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── models.py
│ ├── kvkk_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── models.py
│ ├── LICENSE
│ ├── mcp_auth
│ │ ├── __init__.py
│ │ ├── clerk_config.py
│ │ ├── middleware.py
│ │ ├── oauth.py
│ │ ├── policy.py
│ │ └── storage.py
│ ├── mcp_auth_factory.py
│ ├── mcp_auth_http_adapter.py
│ ├── mcp_auth_http_simple.py
│ ├── mcp_server_main.py
│ ├── nginx.conf
│ ├── ornek.png
│ ├── Procfile
│ ├── pyproject.toml
│ ├── railway.json
│ ├── README.md
│ ├── redis_session_store.py
│ ├── rekabet_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── models.py
│ ├── run_asgi.py
│ ├── sayistay_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ ├── enums.py
│ │ ├── models.py
│ │ └── unified_client.py
│ ├── starlette_app.py
│ ├── stripe_webhook.py
│ ├── uyusmazlik_mcp_module
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── models.py
│ └── yargitay_mcp_module
│ ├── __init__.py
│ ├── client.py
│ └── models.py
├── sayistay_mcp_module
│ ├── __init__.py
│ ├── client.py
│ ├── enums.py
│ ├── models.py
│ └── unified_client.py
├── starlette_app.py
├── stripe_webhook.py
├── uv.lock
├── uyusmazlik_mcp_module
│ ├── __init__.py
│ ├── client.py
│ └── models.py
└── yargitay_mcp_module
├── __init__.py
├── client.py
└── models.py
```
# Files
--------------------------------------------------------------------------------
/.serena/.gitignore:
--------------------------------------------------------------------------------
```
1 | /cache
2 |
```
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
```
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
```
--------------------------------------------------------------------------------
/saidsurucu-yargi-mcp-f5fa007/.gitattributes:
--------------------------------------------------------------------------------
```
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
```
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
```
1 | # flyctl launch added from .gitignore
2 | # Byte-compiled / optimized / DLL files
3 | **/__pycache__
4 | **/*.py[cod]
5 | **/*$py.class
6 |
7 | # C extensions
8 | **/*.so
9 |
10 | # Distribution / packaging
11 | **/.Python
12 | **/build
13 | **/develop-eggs
14 | **/dist
15 | **/downloads
16 | **/eggs
17 | **/.eggs
18 | **/lib
19 | **/lib64
20 | **/parts
21 | **/sdist
22 | **/var
23 | **/wheels
24 | **/share/python-wheels
25 | **/*.egg-info
26 | **/.installed.cfg
27 | **/*.egg
28 | **/MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | **/*.manifest
34 | **/*.spec
35 |
36 | # Installer logs
37 | **/pip-log.txt
38 | **/pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | **/htmlcov
42 | **/.tox
43 | **/.nox
44 | **/.coverage
45 | **/.coverage.*
46 | **/.cache
47 | **/nosetests.xml
48 | **/coverage.xml
49 | **/*.cover
50 | **/*.py,cover
51 | **/.hypothesis
52 | **/.pytest_cache
53 | **/cover
54 |
55 | # Translations
56 | **/*.mo
57 | **/*.pot
58 |
59 | # Django stuff:
60 | **/*.log
61 | **/local_settings.py
62 | **/db.sqlite3
63 | **/db.sqlite3-journal
64 |
65 | # Flask stuff:
66 | **/instance
67 | **/.webassets-cache
68 |
69 | # Scrapy stuff:
70 | **/.scrapy
71 |
72 | # Sphinx documentation
73 | **/docs/_build
74 |
75 | # PyBuilder
76 | **/.pybuilder
77 | **/target
78 |
79 | # Jupyter Notebook
80 | **/.ipynb_checkpoints
81 |
82 | # IPython
83 | **/profile_default
84 | **/ipython_config.py
85 |
86 | # pyenv
87 | # For a library or package, you might want to ignore these files since the code is
88 | # intended to run in multiple environments; otherwise, check them in:
89 | # .python-version
90 |
91 | # pipenv
92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
95 | # install all needed dependencies.
96 | #Pipfile.lock
97 |
98 | # poetry
99 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
100 | # This is especially recommended for binary packages to ensure reproducibility, and is more
101 | # commonly ignored for libraries.
102 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
103 | #poetry.lock
104 |
105 | # pdm
106 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
107 | #pdm.lock
108 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
109 | # in version control.
110 | # https://pdm.fming.dev/#use-with-ide
111 | **/.pdm.toml
112 |
113 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
114 | **/__pypackages__
115 |
116 | # Celery stuff
117 | **/celerybeat-schedule
118 | **/celerybeat.pid
119 |
120 | # SageMath parsed files
121 | **/*.sage.py
122 |
123 | # Environments
124 | **/.env
125 | **/.venv
126 | **/env
127 | **/venv
128 | **/ENV
129 | **/env.bak
130 | **/venv.bak
131 |
132 | # Spyder project settings
133 | **/.spyderproject
134 | **/.spyproject
135 |
136 | # Rope project settings
137 | **/.ropeproject
138 |
139 | # mkdocs documentation
140 | site
141 |
142 | # mypy
143 | **/.mypy_cache
144 | **/.dmypy.json
145 | **/dmypy.json
146 |
147 | # Pyre type checker
148 | **/.pyre
149 |
150 | # pytype static type analyzer
151 | **/.pytype
152 |
153 | # Cython debug symbols
154 | **/cython_debug
155 |
156 | # PyCharm
157 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
158 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
159 | # and can be added to the global gitignore or merged into this file. For a more nuclear
160 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
161 | #.idea/
162 | **/.DS_Store
163 | **/hello.py
164 |
165 | **/*.html
166 | **/fast-mcp-docs.md
167 |
168 | # Debug and test files
169 | **/debug_*
170 | **/test_*
171 | **/CLAUDE.md
172 |
173 | # ASGI/Deployment files
174 | **/ssl
175 | **/*.pem
176 | **/*.key
177 | **/*.crt
178 |
179 | # Docker volumes
180 | **/redis-data
181 |
182 | # Production logs
183 | **/logs/*.log.*
184 | **/Dockerfile
185 | **/Dockerfile
186 | fly.toml
187 |
```
--------------------------------------------------------------------------------
/saidsurucu-yargi-mcp-f5fa007/.dockerignore:
--------------------------------------------------------------------------------
```
1 | # flyctl launch added from .gitignore
2 | # Byte-compiled / optimized / DLL files
3 | **/__pycache__
4 | **/*.py[cod]
5 | **/*$py.class
6 |
7 | # C extensions
8 | **/*.so
9 |
10 | # Distribution / packaging
11 | **/.Python
12 | **/build
13 | **/develop-eggs
14 | **/dist
15 | **/downloads
16 | **/eggs
17 | **/.eggs
18 | **/lib
19 | **/lib64
20 | **/parts
21 | **/sdist
22 | **/var
23 | **/wheels
24 | **/share/python-wheels
25 | **/*.egg-info
26 | **/.installed.cfg
27 | **/*.egg
28 | **/MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | **/*.manifest
34 | **/*.spec
35 |
36 | # Installer logs
37 | **/pip-log.txt
38 | **/pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | **/htmlcov
42 | **/.tox
43 | **/.nox
44 | **/.coverage
45 | **/.coverage.*
46 | **/.cache
47 | **/nosetests.xml
48 | **/coverage.xml
49 | **/*.cover
50 | **/*.py,cover
51 | **/.hypothesis
52 | **/.pytest_cache
53 | **/cover
54 |
55 | # Translations
56 | **/*.mo
57 | **/*.pot
58 |
59 | # Django stuff:
60 | **/*.log
61 | **/local_settings.py
62 | **/db.sqlite3
63 | **/db.sqlite3-journal
64 |
65 | # Flask stuff:
66 | **/instance
67 | **/.webassets-cache
68 |
69 | # Scrapy stuff:
70 | **/.scrapy
71 |
72 | # Sphinx documentation
73 | **/docs/_build
74 |
75 | # PyBuilder
76 | **/.pybuilder
77 | **/target
78 |
79 | # Jupyter Notebook
80 | **/.ipynb_checkpoints
81 |
82 | # IPython
83 | **/profile_default
84 | **/ipython_config.py
85 |
86 | # pyenv
87 | # For a library or package, you might want to ignore these files since the code is
88 | # intended to run in multiple environments; otherwise, check them in:
89 | # .python-version
90 |
91 | # pipenv
92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
95 | # install all needed dependencies.
96 | #Pipfile.lock
97 |
98 | # poetry
99 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
100 | # This is especially recommended for binary packages to ensure reproducibility, and is more
101 | # commonly ignored for libraries.
102 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
103 | #poetry.lock
104 |
105 | # pdm
106 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
107 | #pdm.lock
108 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
109 | # in version control.
110 | # https://pdm.fming.dev/#use-with-ide
111 | **/.pdm.toml
112 |
113 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
114 | **/__pypackages__
115 |
116 | # Celery stuff
117 | **/celerybeat-schedule
118 | **/celerybeat.pid
119 |
120 | # SageMath parsed files
121 | **/*.sage.py
122 |
123 | # Environments
124 | **/.env
125 | **/.venv
126 | **/env
127 | **/venv
128 | **/ENV
129 | **/env.bak
130 | **/venv.bak
131 |
132 | # Spyder project settings
133 | **/.spyderproject
134 | **/.spyproject
135 |
136 | # Rope project settings
137 | **/.ropeproject
138 |
139 | # mkdocs documentation
140 | site
141 |
142 | # mypy
143 | **/.mypy_cache
144 | **/.dmypy.json
145 | **/dmypy.json
146 |
147 | # Pyre type checker
148 | **/.pyre
149 |
150 | # pytype static type analyzer
151 | **/.pytype
152 |
153 | # Cython debug symbols
154 | **/cython_debug
155 |
156 | # PyCharm
157 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
158 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
159 | # and can be added to the global gitignore or merged into this file. For a more nuclear
160 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
161 | #.idea/
162 | **/.DS_Store
163 | **/hello.py
164 |
165 | **/*.html
166 | **/fast-mcp-docs.md
167 |
168 | # Debug and test files
169 | **/debug_*
170 | **/test_*
171 | **/CLAUDE.md
172 |
173 | # ASGI/Deployment files
174 | **/ssl
175 | **/*.pem
176 | **/*.key
177 | **/*.crt
178 |
179 | # Docker volumes
180 | **/redis-data
181 |
182 | # Production logs
183 | **/logs/*.log.*
184 | **/Dockerfile
185 | **/Dockerfile
186 | fly.toml
187 |
```
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
```
1 | # OAuth Configuration for Clerk + Google
2 | # Copy this file to .env and fill in your actual values
3 |
4 | # =============================================================================
5 | # AUTHENTICATION SETTINGS
6 | # =============================================================================
7 |
8 | # Enable/disable authentication (set to "true" to enable OAuth)
9 | ENABLE_AUTH=false
10 |
11 | # =============================================================================
12 | # CLERK CONFIGURATION
13 | # =============================================================================
14 |
15 | # Clerk API keys (get from https://dashboard.clerk.com/)
16 | CLERK_SECRET_KEY=sk_test_your_secret_key_here
17 | CLERK_PUBLISHABLE_KEY=pk_test_your_publishable_key_here
18 |
19 | # OAuth Redirect URLs
20 | CLERK_OAUTH_REDIRECT_URL=http://localhost:8000/auth/callback
21 | CLERK_FRONTEND_URL=http://localhost:3000
22 |
23 | # Clerk domain issuer (usually auto-configured)
24 | CLERK_ISSUER=https://your-clerk-domain.clerk.accounts.dev
25 | CLERK_DOMAIN=your-clerk-domain
26 |
27 | # =============================================================================
28 | # GOOGLE OAUTH SETTINGS
29 | # =============================================================================
30 | # Note: Google OAuth is configured through Clerk dashboard
31 | # You need to:
32 | # 1. Go to Clerk Dashboard > Social Connections
33 | # 2. Enable Google provider
34 | # 3. Add your Google OAuth client ID and secret
35 | # 4. Configure redirect URIs in Google Console
36 |
37 | # =============================================================================
38 | # STRIPE CONFIGURATION (for payments/subscriptions)
39 | # =============================================================================
40 |
41 | STRIPE_SECRET=sk_test_your_stripe_secret_key_here
42 | STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret_here
43 |
44 | # =============================================================================
45 | # SERVER CONFIGURATION
46 | # =============================================================================
47 |
48 | # CORS origins (comma-separated list)
49 | ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8000,https://yourdomain.com
50 |
51 | # Server settings
52 | HOST=0.0.0.0
53 | PORT=8000
54 | LOG_LEVEL=info
55 |
56 | # Base URL for the application (used for OAuth callbacks and API URLs)
57 | BASE_URL=http://localhost:8000
58 |
59 | # JWT Secret for MCP token generation
60 | JWT_SECRET_KEY=your_jwt_secret_key_here
61 |
62 | # =============================================================================
63 | # MCP SERVER SETTINGS
64 | # =============================================================================
65 |
66 | # Additional MCP server configuration can go here
67 | # For example, rate limiting, feature flags, etc.
68 |
69 | # Example: Rate limiting
70 | # MAX_REQUESTS_PER_MINUTE=60
71 | # BURST_CAPACITY=20
72 |
73 | # =============================================================================
74 | # USAGE INSTRUCTIONS
75 | # =============================================================================
76 |
77 | # 1. Copy this file to .env:
78 | # cp .env.example .env
79 |
80 | # 2. Get Clerk credentials:
81 | # - Sign up at https://clerk.com/
82 | # - Create a new application
83 | # - Go to API Keys tab
84 | # - Copy Secret Key and Publishable Key
85 |
86 | # 3. Configure Google OAuth in Clerk:
87 | # - In Clerk Dashboard, go to Social Connections
88 | # - Enable Google provider
89 | # - Get Google OAuth credentials from Google Console
90 | # - Add redirect URI: http://localhost:8000/auth/callback
91 |
92 | # 4. Update OAuth URLs:
93 | # - Set CLERK_OAUTH_REDIRECT_URL to your callback URL
94 | # - Set CLERK_FRONTEND_URL to your frontend application URL
95 |
96 | # 5. Enable authentication:
97 | # - Set ENABLE_AUTH=true
98 |
99 | # 6. Test the OAuth flow:
100 | # - Start server: uvicorn asgi_app:app --reload
101 | # - Visit: http://localhost:8000/auth/login
102 | # - Complete OAuth flow with Google
103 | # - Check: http://localhost:8000/auth/user
```
--------------------------------------------------------------------------------
/saidsurucu-yargi-mcp-f5fa007/.env.example:
--------------------------------------------------------------------------------
```
1 | # OAuth Configuration for Clerk + Google
2 | # Copy this file to .env and fill in your actual values
3 |
4 | # =============================================================================
5 | # AUTHENTICATION SETTINGS
6 | # =============================================================================
7 |
8 | # Enable/disable authentication (set to "true" to enable OAuth)
9 | ENABLE_AUTH=false
10 |
11 | # =============================================================================
12 | # CLERK CONFIGURATION
13 | # =============================================================================
14 |
15 | # Clerk API keys (get from https://dashboard.clerk.com/)
16 | CLERK_SECRET_KEY=sk_test_your_secret_key_here
17 | CLERK_PUBLISHABLE_KEY=pk_test_your_publishable_key_here
18 |
19 | # OAuth Redirect URLs
20 | CLERK_OAUTH_REDIRECT_URL=http://localhost:8000/auth/callback
21 | CLERK_FRONTEND_URL=http://localhost:3000
22 |
23 | # Clerk domain issuer (usually auto-configured)
24 | CLERK_ISSUER=https://your-clerk-domain.clerk.accounts.dev
25 | CLERK_DOMAIN=your-clerk-domain
26 |
27 | # =============================================================================
28 | # GOOGLE OAUTH SETTINGS
29 | # =============================================================================
30 | # Note: Google OAuth is configured through Clerk dashboard
31 | # You need to:
32 | # 1. Go to Clerk Dashboard > Social Connections
33 | # 2. Enable Google provider
34 | # 3. Add your Google OAuth client ID and secret
35 | # 4. Configure redirect URIs in Google Console
36 |
37 | # =============================================================================
38 | # STRIPE CONFIGURATION (for payments/subscriptions)
39 | # =============================================================================
40 |
41 | STRIPE_SECRET=sk_test_your_stripe_secret_key_here
42 | STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret_here
43 |
44 | # =============================================================================
45 | # SERVER CONFIGURATION
46 | # =============================================================================
47 |
48 | # CORS origins (comma-separated list)
49 | ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8000,https://yourdomain.com
50 |
51 | # Server settings
52 | HOST=0.0.0.0
53 | PORT=8000
54 | LOG_LEVEL=info
55 |
56 | # Base URL for the application (used for OAuth callbacks and API URLs)
57 | BASE_URL=http://localhost:8000
58 |
59 | # JWT Secret for MCP token generation
60 | JWT_SECRET_KEY=your_jwt_secret_key_here
61 |
62 | # =============================================================================
63 | # MCP SERVER SETTINGS
64 | # =============================================================================
65 |
66 | # Additional MCP server configuration can go here
67 | # For example, rate limiting, feature flags, etc.
68 |
69 | # Example: Rate limiting
70 | # MAX_REQUESTS_PER_MINUTE=60
71 | # BURST_CAPACITY=20
72 |
73 | # =============================================================================
74 | # USAGE INSTRUCTIONS
75 | # =============================================================================
76 |
77 | # 1. Copy this file to .env:
78 | # cp .env.example .env
79 |
80 | # 2. Get Clerk credentials:
81 | # - Sign up at https://clerk.com/
82 | # - Create a new application
83 | # - Go to API Keys tab
84 | # - Copy Secret Key and Publishable Key
85 |
86 | # 3. Configure Google OAuth in Clerk:
87 | # - In Clerk Dashboard, go to Social Connections
88 | # - Enable Google provider
89 | # - Get Google OAuth credentials from Google Console
90 | # - Add redirect URI: http://localhost:8000/auth/callback
91 |
92 | # 4. Update OAuth URLs:
93 | # - Set CLERK_OAUTH_REDIRECT_URL to your callback URL
94 | # - Set CLERK_FRONTEND_URL to your frontend application URL
95 |
96 | # 5. Enable authentication:
97 | # - Set ENABLE_AUTH=true
98 |
99 | # 6. Test the OAuth flow:
100 | # - Start server: uvicorn asgi_app:app --reload
101 | # - Visit: http://localhost:8000/auth/login
102 | # - Complete OAuth flow with Google
103 | # - Check: http://localhost:8000/auth/user
```
--------------------------------------------------------------------------------
/saidsurucu-yargi-mcp-f5fa007/.gitignore:
--------------------------------------------------------------------------------
```
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | *.py,cover
50 | .hypothesis/
51 | .pytest_cache/
52 | cover/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | .pybuilder/
76 | target/
77 |
78 | # Jupyter Notebook
79 | .ipynb_checkpoints
80 |
81 | # IPython
82 | profile_default/
83 | ipython_config.py
84 |
85 | # pyenv
86 | # For a library or package, you might want to ignore these files since the code is
87 | # intended to run in multiple environments; otherwise, check them in:
88 | # .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # poetry
98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99 | # This is especially recommended for binary packages to ensure reproducibility, and is more
100 | # commonly ignored for libraries.
101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102 | #poetry.lock
103 |
104 | # pdm
105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106 | #pdm.lock
107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108 | # in version control.
109 | # https://pdm.fming.dev/#use-with-ide
110 | .pdm.toml
111 |
112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113 | __pypackages__/
114 |
115 | # Celery stuff
116 | celerybeat-schedule
117 | celerybeat.pid
118 |
119 | # SageMath parsed files
120 | *.sage.py
121 |
122 | # Environments
123 | .env
124 | .venv
125 | env/
126 | venv/
127 | ENV/
128 | env.bak/
129 | venv.bak/
130 |
131 | # Spyder project settings
132 | .spyderproject
133 | .spyproject
134 |
135 | # Rope project settings
136 | .ropeproject
137 |
138 | # mkdocs documentation
139 | /site
140 |
141 | # mypy
142 | .mypy_cache/
143 | .dmypy.json
144 | dmypy.json
145 |
146 | # Pyre type checker
147 | .pyre/
148 |
149 | # pytype static type analyzer
150 | .pytype/
151 |
152 | # Cython debug symbols
153 | cython_debug/
154 |
155 | # PyCharm
156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158 | # and can be added to the global gitignore or merged into this file. For a more nuclear
159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160 | #.idea/
161 | .DS_Store
162 | hello.py
163 |
164 | *.html
165 | fast-mcp-docs.md
166 |
167 | # Debug and test files
168 | debug_*
169 | test_*
170 | CLAUDE.md
171 |
172 | # ASGI/Deployment files
173 | ssl/
174 | *.pem
175 | *.key
176 | *.crt
177 |
178 | # Docker volumes
179 | redis-data/
180 |
181 | # Production logs
182 | logs/*.log.*
183 |
184 | # Remove these lines - we need deployment files in git:
185 | # Dockerfile - NEEDED for SaaS deployment
186 | # fly.toml - NEEDED for Fly.io deployment
187 | # .github/workflows/fly-deploy.yml - NEEDED for GitHub Actions
188 |
189 | GEMINI.md
190 | fly.toml
191 | scripts/deploy-flyio.sh
192 | docs/DEPLOYMENT_FLYIO.md
193 | setup_jwt_template.py
194 | mcp_server_main.py.backup
195 | mcp_overhead_content.json
196 | ANTHROPIC_TEST_README.md
197 | extract_mcp_overhead.py
198 | mcp_overhead_content.txt
199 | mcp_overhead_summary.txt
200 | run_http_server.py
201 | run_local_test.py
202 |
203 | # MCP overhead analysis files
204 | mcp_overhead_*.json
205 | mcp_overhead_*.txt
206 | mcp_test_results_*.json
207 | mcp_quick_test_*.json
208 |
209 | # General text files (temporary notes, etc)
210 | *.txt
211 | analyze_playwright_mcp.py
212 | measure_mcp_directly.py
213 | playwright_mcp_overhead.json
214 | simple_test.py
215 | analyze_anayasa_html.py
216 |
```
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
```
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | *.py,cover
50 | .hypothesis/
51 | .pytest_cache/
52 | cover/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | .pybuilder/
76 | target/
77 |
78 | # Jupyter Notebook
79 | .ipynb_checkpoints
80 |
81 | # IPython
82 | profile_default/
83 | ipython_config.py
84 |
85 | # pyenv
86 | # For a library or package, you might want to ignore these files since the code is
87 | # intended to run in multiple environments; otherwise, check them in:
88 | # .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # poetry
98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99 | # This is especially recommended for binary packages to ensure reproducibility, and is more
100 | # commonly ignored for libraries.
101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102 | #poetry.lock
103 |
104 | # pdm
105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106 | #pdm.lock
107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108 | # in version control.
109 | # https://pdm.fming.dev/#use-with-ide
110 | .pdm.toml
111 |
112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113 | __pypackages__/
114 |
115 | # Celery stuff
116 | celerybeat-schedule
117 | celerybeat.pid
118 |
119 | # SageMath parsed files
120 | *.sage.py
121 |
122 | # Environments
123 | .env
124 | .venv
125 | env/
126 | venv/
127 | ENV/
128 | env.bak/
129 | venv.bak/
130 |
131 | # Spyder project settings
132 | .spyderproject
133 | .spyproject
134 |
135 | # Rope project settings
136 | .ropeproject
137 |
138 | # mkdocs documentation
139 | /site
140 |
141 | # mypy
142 | .mypy_cache/
143 | .dmypy.json
144 | dmypy.json
145 |
146 | # Pyre type checker
147 | .pyre/
148 |
149 | # pytype static type analyzer
150 | .pytype/
151 |
152 | # Cython debug symbols
153 | cython_debug/
154 |
155 | # PyCharm
156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158 | # and can be added to the global gitignore or merged into this file. For a more nuclear
159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160 | #.idea/
161 | .DS_Store
162 | hello.py
163 |
164 | *.html
165 | fast-mcp-docs.md
166 |
167 | # Debug and test files
168 | debug_*
169 | test_*
170 | CLAUDE.md
171 |
172 | # ASGI/Deployment files
173 | ssl/
174 | *.pem
175 | *.key
176 | *.crt
177 |
178 | # Docker volumes
179 | redis-data/
180 |
181 | # Production logs
182 | logs/*.log.*
183 |
184 | # Remove these lines - we need deployment files in git:
185 | # Dockerfile - NEEDED for SaaS deployment
186 | # fly.toml - NEEDED for Fly.io deployment
187 | # .github/workflows/fly-deploy.yml - NEEDED for GitHub Actions
188 |
189 | GEMINI.md
190 | fly.toml
191 | scripts/deploy-flyio.sh
192 | docs/DEPLOYMENT_FLYIO.md
193 | setup_jwt_template.py
194 | mcp_server_main.py.backup
195 | mcp_overhead_content.json
196 | ANTHROPIC_TEST_README.md
197 | extract_mcp_overhead.py
198 | mcp_overhead_content.txt
199 | mcp_overhead_summary.txt
200 | run_http_server.py
201 | run_local_test.py
202 |
203 | # MCP overhead analysis files
204 | mcp_overhead_*.json
205 | mcp_overhead_*.txt
206 | mcp_test_results_*.json
207 | mcp_quick_test_*.json
208 |
209 | # General text files (temporary notes, etc)
210 | *.txt
211 | analyze_playwright_mcp.py
212 | measure_mcp_directly.py
213 | playwright_mcp_overhead.json
214 | simple_test.py
215 | analyze_anayasa_html.py
216 | CLAUDE.md
217 |
```
--------------------------------------------------------------------------------
/saidsurucu-yargi-mcp-f5fa007/README.md:
--------------------------------------------------------------------------------
```markdown
1 | # Yargı MCP: Türk Hukuk Kaynakları için MCP Sunucusu
2 |
3 | [](https://www.star-history.com/#saidsurucu/yargi-mcp&Date)
4 |
5 | Bu proje, çeşitli Türk hukuk kaynaklarına (Yargıtay, Danıştay, Emsal Kararlar, Uyuşmazlık Mahkemesi, Anayasa Mahkemesi - Norm Denetimi ile Bireysel Başvuru Kararları, Kamu İhale Kurulu Kararları, Rekabet Kurumu Kararları, Sayıştay Kararları, KVKK Kararları ve BDDK Kararları) erişimi kolaylaştıran bir [FastMCP](https://gofastmcp.com/) sunucusu oluşturur. Bu sayede, bu kaynaklardan veri arama ve belge getirme işlemleri, Model Context Protocol (MCP) destekleyen LLM (Büyük Dil Modeli) uygulamaları (örneğin Claude Desktop veya [5ire](https://5ire.app)) ve diğer istemciler tarafından araç (tool) olarak kullanılabilir hale gelir.
6 |
7 | 
8 |
9 | 🎯 **Temel Özellikler**
10 |
11 | 🚀 **YÜKSEK PERFORMANS OPTİMİZASYONU:** Bu MCP sunucusu **%61.8 token azaltma** ile optimize edilmiştir (8,692 token tasarrufu). Claude AI ile daha hızlı yanıt süreleri ve daha verimli etkileşim sağlar.
12 |
13 | * Çeşitli Türk hukuk veritabanlarına programatik erişim için standart bir MCP arayüzü.
14 | * **Kapsamlı Mahkeme Daire/Kurul Filtreleme:** 79 farklı daire/kurul filtreleme seçeneği
15 | * **Dual/Triple API Desteği:** Her mahkeme için birden fazla API kaynağı ile maksimum kapsama
16 | * **Kapsamlı Tarih Filtreleme:** Tüm Bedesten API araçlarında ISO 8601 formatında tarih aralığı filtreleme
17 | * **Kesin Cümle Arama:** Tüm Bedesten API araçlarında çift tırnak ile tam cümle arama desteği
18 | * Aşağıdaki kurumların kararlarını arama ve getirme yeteneği:
19 | * **Yargıtay:** Detaylı kriterlerle karar arama ve karar metinlerini Markdown formatında getirme. **Dual API** (Ana + Bedesten) + **52 Daire/Kurul Filtreleme** + **Tarih & Kesin Cümle Arama** (Hukuk/Ceza Daireleri, Genel Kurullar)
20 | * **Danıştay:** Anahtar kelime bazlı ve detaylı kriterlerle karar arama; karar metinlerini Markdown formatında getirme. **Triple API** (Keyword + Detailed + Bedesten) + **27 Daire/Kurul Filtreleme** + **Tarih & Kesin Cümle Arama** (İdari Daireler, Vergi/İdare Kurulları, Askeri Yüksek İdare Mahkemesi)
21 | * **Yerel Hukuk Mahkemeleri:** Bedesten API ile yerel hukuk mahkemesi kararlarına erişim + **Tarih & Kesin Cümle Arama**
22 | * **İstinaf Hukuk Mahkemeleri:** Bedesten API ile istinaf mahkemesi kararlarına erişim + **Tarih & Kesin Cümle Arama**
23 | * **Kanun Yararına Bozma (KYB):** Bedesten API ile olağanüstü kanun yoluna erişim + **Tarih & Kesin Cümle Arama**
24 | * **Emsal (UYAP):** Detaylı kriterlerle emsal karar arama ve karar metinlerini Markdown formatında getirme.
25 | * **Uyuşmazlık Mahkemesi:** Form tabanlı kriterlerle karar arama ve karar metinlerini (URL ile erişilen) Markdown formatında getirme.
26 | * **Anayasa Mahkemesi (Norm Denetimi):** Kapsamlı kriterlerle norm denetimi kararlarını arama; uzun karar metinlerini (5.000 karakterlik) sayfalanmış Markdown formatında getirme.
27 | * **Anayasa Mahkemesi (Bireysel Başvuru):** Kapsamlı kriterlerle bireysel başvuru "Karar Arama Raporu" oluşturma ve listedeki kararların metinlerini (5.000 karakterlik) sayfalanmış Markdown formatında getirme.
28 | * **KİK (Kamu İhale Kurulu):** Çeşitli kriterlerle Kurul kararlarını arama; uzun karar metinlerini (varsayılan 5.000 karakterlik) sayfalanmış Markdown formatında getirme.
29 | * **Rekabet Kurumu:** Çeşitli kriterlerle Kurul kararlarını arama; karar metinlerini Markdown formatında getirme.
30 | * **Sayıştay:** 3 karar türü ile kapsamlı denetim kararlarına erişim + **8 Daire Filtreleme** + **Tarih Aralığı & İçerik Arama** (Genel Kurul yorumlayıcı kararları, Temyiz Kurulu itiraz kararları, Daire ilk derece denetim kararları)
31 | * **KVKK (Kişisel Verilerin Korunması Kurulu):** Brave Search API ile veri koruma kararlarını arama; uzun karar metinlerini (5.000 karakterlik) sayfalanmış Markdown formatında getirme + **Türkçe Arama** + **Site Hedeflemeli Arama** (kvkk.gov.tr kararları)
32 | * **BDDK (Bankacılık Düzenleme ve Denetleme Kurumu):** Bankacılık düzenleme kararlarını arama; karar metinlerini Markdown formatında getirme + **Optimized Search** + **"Karar Sayısı" Targeting** + **Spesifik URL Filtreleme** (bddk.org.tr/Mevzuat/DokumanGetir)
33 |
34 | * Karar metinlerinin daha kolay işlenebilmesi için Markdown formatına çevrilmesi.
35 | * Claude Desktop uygulaması ile `fastmcp install` komutu kullanılarak kolay entegrasyon.
36 | * Yargı MCP artık [5ire](https://5ire.app) gibi Claude Desktop haricindeki MCP istemcilerini de destekliyor!
37 | ---
38 | <details>
39 | <summary>🚀 <strong>Claude Haricindeki Modellerle Kullanmak İçin Çok Kolay Kurulum (Örnek: 5ire için)</strong></summary>
40 |
41 | Bu bölüm, Yargı MCP aracını 5ire gibi Claude Desktop dışındaki MCP istemcileriyle kullanmak isteyenler içindir.
42 |
43 | * **Python Kurulumu:** Sisteminizde Python 3.11 veya üzeri kurulu olmalıdır. Kurulum sırasında "**Add Python to PATH**" (Python'ı PATH'e ekle) seçeneğini işaretlemeyi unutmayın. [Buradan](https://www.python.org/downloads/) indirebilirsiniz.
44 | * **Git Kurulumu (Windows):** Bilgisayarınıza [git](https://git-scm.com/downloads/win) yazılımını indirip kurun. "Git for Windows/x64 Setup" seçeneğini indirmelisiniz.
45 | * **`uv` Kurulumu:**
46 | * **Windows Kullanıcıları (PowerShell):** Bir CMD ekranı açın ve bu kodu çalıştırın: `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
47 | * **Mac/Linux Kullanıcıları (Terminal):** Bir Terminal ekranı açın ve bu kodu çalıştırın: `curl -LsSf https://astral.sh/uv/install.sh | sh`
48 | * **Microsoft Visual C++ Redistributable (Windows):** Bazı Python paketlerinin doğru çalışması için gereklidir. [Buradan](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) indirip kurun.
49 | * İşletim sisteminize uygun [5ire](https://5ire.app) MCP istemcisini indirip kurun.
50 | * 5ire'ı açın. **Workspace -> Providers** menüsünden kullanmak istediğiniz LLM servisinin API anahtarını girin.
51 | * **Tools** menüsüne girin. **+Local** veya **New** yazan butona basın.
52 | * **Tool Key:** `yargimcp`
53 | * **Name:** `Yargı MCP`
54 | * **Command:**
55 | ```
56 | uvx yargi-mcp
57 | ```
58 | * **Save** butonuna basarak kaydedin.
59 | 
60 | * Şimdi **Tools** altında **Yargı MCP**'yi görüyor olmalısınız. Üstüne geldiğinizde sağda çıkan butona tıklayıp etkinleştirin (yeşil ışık yanmalı).
61 | * Artık Yargı MCP ile konuşabilirsiniz.
62 |
63 | </details>
64 |
65 | ---
66 | <details>
67 | <summary>⚙️ <strong>Claude Desktop Manuel Kurulumu</strong></summary>
68 |
69 | 1. **Ön Gereksinimler:** Python, `uv`, (Windows için) Microsoft Visual C++ Redistributable'ın sisteminizde kurulu olduğundan emin olun. Detaylı bilgi için yukarıdaki "5ire için Kurulum" bölümündeki ilgili adımlara bakabilirsiniz.
70 | 2. Claude Desktop **Settings -> Developer -> Edit Config**.
71 | 3. Açılan `claude_desktop_config.json` dosyasına `mcpServers` altına ekleyin:
72 |
73 | ```json
74 | {
75 | "mcpServers": {
76 | // ... (varsa diğer sunucularınız) ...
77 | "Yargı MCP": {
78 | "command": "uvx",
79 | "args": [
80 | "yargi-mcp"
81 | ]
82 | }
83 | }
84 | }
85 | ```
86 | 4. Claude Desktop'ı kapatıp yeniden başlatın.
87 |
88 | </details>
89 |
90 | ---
91 | <details>
92 | <summary>🌟 <strong>Gemini CLI ile Kullanım</strong></summary>
93 |
94 | Yargı MCP'yi Gemini CLI ile kullanmak için:
95 |
96 | 1. **Ön Gereksinimler:** Python, `uv`, (Windows için) Microsoft Visual C++ Redistributable'ın sisteminizde kurulu olduğundan emin olun. Detaylı bilgi için yukarıdaki "5ire için Kurulum" bölümündeki ilgili adımlara bakabilirsiniz.
97 |
98 | 2. **Gemini CLI ayarlarını yapılandırın:**
99 |
100 | Gemini CLI'ın ayar dosyasını düzenleyin:
101 | - **macOS/Linux:** `~/.gemini/settings.json`
102 | - **Windows:** `%USERPROFILE%\.gemini\settings.json`
103 |
104 | Aşağıdaki `mcpServers` bloğunu ekleyin:
105 | ```json
106 | {
107 | "theme": "Default",
108 | "selectedAuthType": "###",
109 | "mcpServers": {
110 | "yargi_mcp": {
111 | "command": "uvx",
112 | "args": [
113 | "yargi-mcp"
114 | ]
115 | }
116 | }
117 | }
118 | ```
119 |
120 | **Yapılandırma açıklamaları:**
121 | - `"yargi_mcp"`: Sunucunuz için yerel bir isim
122 | - `"command"`: `uvx` komutu (uv'nin paket çalıştırma aracı)
123 | - `"args"`: GitHub'dan doğrudan Yargı MCP'yi çalıştırmak için gerekli argümanlar
124 |
125 | 3. **Kullanım:**
126 | - Gemini CLI'ı başlatın
127 | - Yargı MCP araçları otomatik olarak kullanılabilir olacaktır
128 | - Örnek komutlar:
129 | - "Yargıtay'ın mülkiyet hakkı ile ilgili son kararlarını ara"
130 | - "Danıştay'ın imar planı iptaline ilişkin kararlarını bul"
131 | - "Anayasa Mahkemesi'nin ifade özgürlüğü kararlarını getir"
132 |
133 | </details>
134 |
135 | <details>
136 | <summary>🛠️ <strong>Kullanılabilir Araçlar (MCP Tools)</strong></summary>
137 |
138 | Bu FastMCP sunucusu **19 optimize edilmiş MCP aracı** sunar (token verimliliği için optimize edilmiş):
139 |
140 | ### **Yargıtay Araçları (Birleşik Bedesten API - Token Optimized)**
141 | *Not: Yargıtay araçları token verimliliği için birleşik Bedesten API'ye entegre edilmiştir*
142 |
143 | ### **Danıştay Araçları (Birleşik Bedesten API - Token Optimized)**
144 | *Not: Danıştay araçları token verimliliği için birleşik Bedesten API'ye entegre edilmiştir*
145 |
146 | ### **Birleşik Bedesten API Araçları (5 Mahkeme) - 🚀 TOKEN OPTİMİZE**
147 | 1. `search_bedesten_unified(phrase, court_types, birimAdi, kararTarihiStart, kararTarihiEnd, ...)`: **5 mahkeme türünü** birleşik arama (Yargıtay, Danıştay, Yerel Hukuk, İstinaf Hukuk, KYB) + **79 daire filtreleme** + **Tarih & Kesin Cümle Arama**
148 | 2. `get_bedesten_document_markdown(documentId: str)`: Bedesten API'den herhangi bir belgeyi Markdown formatında getirir (HTML/PDF → Markdown)
149 |
150 | ### **Emsal Karar Araçları (UYAP)**
151 | 3. `search_emsal_detailed_decisions(keyword, ...)`: Emsal (UYAP) kararlarını detaylı kriterlerle arar.
152 | 4. `get_emsal_document_markdown(id: str)`: Belirli bir Emsal kararının metnini Markdown formatında getirir.
153 |
154 | ### **Uyuşmazlık Mahkemesi Araçları**
155 | 5. `search_uyusmazlik_decisions(icerik, ...)`: Uyuşmazlık Mahkemesi kararlarını çeşitli form kriterleriyle arar.
156 | 6. `get_uyusmazlik_document_markdown_from_url(document_url)`: Bir Uyuşmazlık kararını tam URL'sinden alıp Markdown formatında getirir.
157 |
158 | ### **Anayasa Mahkemesi Araçları (Birleşik API) - 🚀 TOKEN OPTİMİZE**
159 | 7. `search_anayasa_unified(decision_type, keywords_all, ...)`: AYM kararlarını birleşik arama (Norm Denetimi + Bireysel Başvuru) - **4 araç → 2 araç optimizasyonu**
160 | 8. `get_anayasa_document_unified(document_url, page_number)`: AYM kararlarını birleşik belge getirme - **sayfalanmış Markdown** içeriği
161 |
162 | ### **KİK (Kamu İhale Kurulu) Araçları**
163 | 9. `search_kik_decisions(karar_tipi, ...)`: KİK (Kamu İhale Kurulu) kararlarını arar.
164 | 10. `get_kik_document_markdown(karar_id, page_number)`: Belirli bir KİK kararını, Base64 ile encode edilmiş `karar_id`'sini kullanarak alır ve **sayfalanmış Markdown** içeriğini getirir.
165 | ### **Rekabet Kurumu Araçları**
166 | * `search_rekabet_kurumu_decisions(KararTuru: Literal[...], ...) -> RekabetSearchResult`: Rekabet Kurumu kararlarını arar. `KararTuru` için kullanıcı dostu isimler kullanılır (örn: "Birleşme ve Devralma").
167 | * `get_rekabet_kurumu_document(karar_id: str, page_number: Optional[int] = 1) -> RekabetDocument`: Belirli bir Rekabet Kurumu kararını `karar_id` ile alır. Kararın PDF formatındaki orijinalinden istenen sayfayı ayıklar ve Markdown formatında döndürür.
168 |
169 |
170 | ---
171 |
172 | * **Sayıştay Araçları (3 Karar Türü + 8 Daire Filtreleme):**
173 | * `search_sayistay_genel_kurul(karar_no, karar_tarih_baslangic, karar_tamami, ...)`: Sayıştay Genel Kurul (yorumlayıcı) kararlarını arar. **Tarih aralığı** (2006-2024) + **İçerik arama** (400 karakter)
174 | * `search_sayistay_temyiz_kurulu(ilam_dairesi, kamu_idaresi_turu, temyiz_karar, ...)`: Temyiz Kurulu (itiraz) kararlarını arar. **8 Daire filtreleme** + **Kurum türü** + **Konu sınıflandırması**
175 | * `search_sayistay_daire(yargilama_dairesi, web_karar_metni, hesap_yili, ...)`: Daire (ilk derece denetim) kararlarını arar. **8 Daire filtreleme** + **Hesap yılı** + **İçerik arama**
176 | * `get_sayistay_genel_kurul_document_markdown(decision_id: str)`: Genel Kurul kararının tam metnini Markdown formatında getirir
177 | * `get_sayistay_temyiz_kurulu_document_markdown(decision_id: str)`: Temyiz Kurulu kararının tam metnini Markdown formatında getirir
178 | * `get_sayistay_daire_document_markdown(decision_id: str)`: Daire kararının tam metnini Markdown formatında getirir
179 |
180 | * **KVKK Araçları (Brave Search API + Türkçe Arama):**
181 | * `search_kvkk_decisions(keywords, page, pageSize, ...)`: KVKK (Kişisel Verilerin Korunması Kurulu) kararlarını Brave Search API ile arar. **Türkçe arama** + **Site hedeflemeli** (`site:kvkk.gov.tr "karar özeti"`) + **Sayfalama desteği**
182 | * `get_kvkk_document_markdown(decision_url: str, page_number: Optional[int] = 1)`: KVKK kararının tam metnini **sayfalanmış Markdown** formatında getirir (5.000 karakterlik sayfa)
183 |
184 | ### BDDK Araçları
185 | * `search_bddk_decisions(keywords, page)`: BDDK (Bankacılık Düzenleme ve Denetleme Kurumu) kararlarını arar. **"Karar Sayısı" targeting** + **Spesifik URL filtreleme** (`bddk.org.tr/Mevzuat/DokumanGetir`) + **Optimized search**
186 | * `get_bddk_document_markdown(document_id: str, page_number: Optional[int] = 1)`: BDDK kararının tam metnini **sayfalanmış Markdown** formatında getirir (5.000 karakterlik sayfa)
187 |
188 | </details>
189 |
190 | ---
191 |
192 | <details>
193 | <summary>📊 <strong>Kapsamlı İstatistikler & Optimizasyon Başarıları</strong></summary>
194 |
195 | 🚀 **TOKEN OPTİMİZASYON BAŞARISI:**
196 | - **%61.8 Token Azaltma:** 14,061 → 5,369 tokens (8,692 token tasarrufu)
197 | - **Hedef Aşım:** 10,000 token hedefini 4,631 token aştık
198 | - **Daha Hızlı Yanıt:** Claude AI ile optimize edilmiş etkileşim
199 | - **Korunan İşlevsellik:** %100 özellik desteği devam ediyor
200 |
201 | **GENEL İSTATİSTİKLER:**
202 | - **Toplam Mahkeme/Kurum:** 13 farklı hukuki kurum (KVKK dahil)
203 | - **Toplam MCP Tool:** 19 optimize edilmiş arama ve belge getirme aracı
204 | - **Daire/Kurul Filtreleme:** 87 farklı seçenek (52 Yargıtay + 27 Danıştay + 8 Sayıştay)
205 | - **Tarih Filtreleme:** Birleşik Bedesten API aracında ISO 8601 formatında tam tarih aralığı desteği
206 | - **Kesin Cümle Arama:** Birleşik Bedesten API aracında çift tırnak ile tam cümle arama (`"\"mülkiyet kararı\""` formatı)
207 | - **Birleşik API:** 10 ayrı Bedesten aracı → 2 birleşik araç (search_bedesten_unified + get_bedesten_document_markdown)
208 | - **API Kaynağı:** Dual/Triple API desteği ile maksimum kapsama
209 | - **Tam Türk Adalet Sistemi:** Yerel mahkemelerden en yüksek mahkemelere kadar
210 |
211 | **🏛️ Desteklenen Mahkeme Hiyerarşisi:**
212 | ```
213 | Yerel Mahkemeler → İstinaf → Yargıtay/Danıştay → Anayasa Mahkemesi
214 | ↓ ↓ ↓ ↓
215 | Bedesten API Bedesten API Dual/Triple API Norm+Bireysel API
216 | + Tarih + Kesin + Tarih + Kesin + Daire + Tarih + Gelişmiş
217 | Cümle Arama Cümle Arama + Kesin Cümle Arama
218 | ```
219 |
220 | **⚖️ Kapsamlı Filtreleme Özellikleri:**
221 | - **Daire Filtreleme:** 79 seçenek (52 Yargıtay + 27 Danıştay)
222 | - **Yargıtay:** 52 seçenek (1-23 Hukuk, 1-23 Ceza, Genel Kurullar, Başkanlar Kurulu)
223 | - **Danıştay:** 27 seçenek (1-17 Daireler, İdare/Vergi Kurulları, Askeri Mahkemeler)
224 | - **Tarih Filtreleme:** 5 Bedesten API aracında ISO 8601 formatı (YYYY-MM-DDTHH:MM:SS.000Z)
225 | - Tek tarih, tarih aralığı, tek taraflı filtreleme desteği
226 | - Yargıtay, Danıştay, Yerel Hukuk, İstinaf Hukuk, KYB kararları
227 | - **Kesin Cümle Arama:** 5 Bedesten API aracında çift tırnak formatı
228 | - Normal arama: `"mülkiyet kararı"` (kelimeler ayrı ayrı)
229 | - Kesin arama: `"\"mülkiyet kararı\""` (tam cümle olarak)
230 | - Daha kesin sonuçlar için hukuki terimler ve kavramlar
231 |
232 | **🔧 OPTİMİZASYON DETAYLARI:**
233 | - **Anayasa Mahkemesi:** 4 araç → 2 birleşik araç (search_anayasa_unified + get_anayasa_document_unified)
234 | - **Yargıtay & Danıştay:** Ana API araçları birleşik Bedesten API'ye entegre edildi
235 | - **Sayıştay:** 6 araç → 2 birleşik araç (search_sayistay_unified + get_sayistay_document_unified)
236 | - **Parameter Optimizasyonu:** pageSize parametreleri optimize edildi
237 | - **Açıklama Optimizasyonu:** Uzun açıklamalar kısaltıldı (örn: KIK karar_metni)
238 |
239 | </details>
240 |
241 | ---
242 |
243 | <details>
244 | <summary>🌐 <strong>Web Service / ASGI Deployment</strong></summary>
245 |
246 | Yargı MCP artık web servisi olarak da çalıştırılabilir! ASGI desteği sayesinde:
247 |
248 | - **Web API olarak erişim**: HTTP endpoint'leri üzerinden MCP araçlarına erişim
249 | - **Cloud deployment**: Heroku, Railway, Google Cloud Run, AWS Lambda desteği
250 | - **Docker desteği**: Production-ready Docker container
251 | - **FastAPI entegrasyonu**: REST API ve interaktif dokümantasyon
252 |
253 | **Hızlı başlangıç:**
254 | ```bash
255 | # ASGI dependencies yükle
256 | pip install yargi-mcp[asgi]
257 |
258 | # Web servisi olarak başlat
259 | python run_asgi.py
260 | # veya
261 | uvicorn asgi_app:app --host 0.0.0.0 --port 8000
262 | ```
263 |
264 | Detaylı deployment rehberi için: [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)
265 |
266 | </details>
267 |
268 | ---
269 |
270 | 📜 **Lisans**
271 |
272 | Bu proje MIT Lisansı altında lisanslanmıştır. Detaylar için `LICENSE` dosyasına bakınız.
273 |
```
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
```markdown
1 | # Yargı MCP: Türk Hukuk Kaynakları için MCP Sunucusu
2 |
3 | [](https://www.star-history.com/#saidsurucu/yargi-mcp&Date)
4 |
5 | Bu proje, çeşitli Türk hukuk kaynaklarına (Yargıtay, Danıştay, Emsal Kararlar, Uyuşmazlık Mahkemesi, Anayasa Mahkemesi - Norm Denetimi ile Bireysel Başvuru Kararları, Kamu İhale Kurulu Kararları, Rekabet Kurumu Kararları, Sayıştay Kararları, KVKK Kararları ve BDDK Kararları) erişimi kolaylaştıran bir [FastMCP](https://gofastmcp.com/) sunucusu oluşturur. Bu sayede, bu kaynaklardan veri arama ve belge getirme işlemleri, Model Context Protocol (MCP) destekleyen LLM (Büyük Dil Modeli) uygulamaları (örneğin Claude Desktop veya [5ire](https://5ire.app)) ve diğer istemciler tarafından araç (tool) olarak kullanılabilir hale gelir.
6 |
7 | ---
8 |
9 | ## 🚀 5 Dakikada Başla (Remote MCP)
10 |
11 | ### ✅ Kurulum Gerektirmez! Hemen Kullan!
12 |
13 | 🔗 **Remote MCP Adresi:** `https://yargimcp.fastmcp.app/mcp`
14 |
15 | ### Claude Desktop ile Kullanım
16 |
17 | 1. **Claude Desktop'ı açın**
18 | 2. **Settings → Connectors → Add Custom Connector**
19 | 3. **Bilgileri girin:**
20 | - **Name:** `Yargı MCP`
21 | - **URL:** `https://yargimcp.fastmcp.app/mcp`
22 | 4. **Add** butonuna tıklayın
23 | 5. **Hemen kullanmaya başlayın!** 🎉
24 |
25 | > 💡 **İpucu:** Remote MCP sayesinde Python, uv veya herhangi bir kurulum yapmadan doğrudan Claude Desktop üzerinden Türk hukuk kaynaklarına erişebilirsiniz!
26 |
27 | ---
28 |
29 | 
30 |
31 | 🎯 **Temel Özellikler**
32 |
33 | 🚀 **YÜKSEK PERFORMANS OPTİMİZASYONU:** Bu MCP sunucusu **%61.8 token azaltma** ile optimize edilmiştir (8,692 token tasarrufu). Claude AI ile daha hızlı yanıt süreleri ve daha verimli etkileşim sağlar.
34 |
35 | * Çeşitli Türk hukuk veritabanlarına programatik erişim için standart bir MCP arayüzü.
36 | * **Kapsamlı Mahkeme Daire/Kurul Filtreleme:** 79 farklı daire/kurul filtreleme seçeneği
37 | * **Dual/Triple API Desteği:** Her mahkeme için birden fazla API kaynağı ile maksimum kapsama
38 | * **Kapsamlı Tarih Filtreleme:** Tüm Bedesten API araçlarında ISO 8601 formatında tarih aralığı filtreleme
39 | * **Kesin Cümle Arama:** Tüm Bedesten API araçlarında çift tırnak ile tam cümle arama desteği
40 | * Aşağıdaki kurumların kararlarını arama ve getirme yeteneği:
41 | * **Yargıtay:** Detaylı kriterlerle karar arama ve karar metinlerini Markdown formatında getirme. **Dual API** (Ana + Bedesten) + **52 Daire/Kurul Filtreleme** + **Tarih & Kesin Cümle Arama** (Hukuk/Ceza Daireleri, Genel Kurullar)
42 | * **Danıştay:** Anahtar kelime bazlı ve detaylı kriterlerle karar arama; karar metinlerini Markdown formatında getirme. **Triple API** (Keyword + Detailed + Bedesten) + **27 Daire/Kurul Filtreleme** + **Tarih & Kesin Cümle Arama** (İdari Daireler, Vergi/İdare Kurulları, Askeri Yüksek İdare Mahkemesi)
43 | * **Yerel Hukuk Mahkemeleri:** Bedesten API ile yerel hukuk mahkemesi kararlarına erişim + **Tarih & Kesin Cümle Arama**
44 | * **İstinaf Hukuk Mahkemeleri:** Bedesten API ile istinaf mahkemesi kararlarına erişim + **Tarih & Kesin Cümle Arama**
45 | * **Kanun Yararına Bozma (KYB):** Bedesten API ile olağanüstü kanun yoluna erişim + **Tarih & Kesin Cümle Arama**
46 | * **Emsal (UYAP):** Detaylı kriterlerle emsal karar arama ve karar metinlerini Markdown formatında getirme.
47 | * **Uyuşmazlık Mahkemesi:** Form tabanlı kriterlerle karar arama ve karar metinlerini (URL ile erişilen) Markdown formatında getirme.
48 | * **Anayasa Mahkemesi (Norm Denetimi):** Kapsamlı kriterlerle norm denetimi kararlarını arama; uzun karar metinlerini (5.000 karakterlik) sayfalanmış Markdown formatında getirme.
49 | * **Anayasa Mahkemesi (Bireysel Başvuru):** Kapsamlı kriterlerle bireysel başvuru "Karar Arama Raporu" oluşturma ve listedeki kararların metinlerini (5.000 karakterlik) sayfalanmış Markdown formatında getirme.
50 | * **KİK (Kamu İhale Kurulu):** Çeşitli kriterlerle Kurul kararlarını arama; uzun karar metinlerini (varsayılan 5.000 karakterlik) sayfalanmış Markdown formatında getirme.
51 | * **Rekabet Kurumu:** Çeşitli kriterlerle Kurul kararlarını arama; karar metinlerini Markdown formatında getirme.
52 | * **Sayıştay:** 3 karar türü ile kapsamlı denetim kararlarına erişim + **8 Daire Filtreleme** + **Tarih Aralığı & İçerik Arama** (Genel Kurul yorumlayıcı kararları, Temyiz Kurulu itiraz kararları, Daire ilk derece denetim kararları)
53 | * **KVKK (Kişisel Verilerin Korunması Kurulu):** Brave Search API ile veri koruma kararlarını arama; uzun karar metinlerini (5.000 karakterlik) sayfalanmış Markdown formatında getirme + **Türkçe Arama** + **Site Hedeflemeli Arama** (kvkk.gov.tr kararları)
54 | * **BDDK (Bankacılık Düzenleme ve Denetleme Kurumu):** Bankacılık düzenleme kararlarını arama; karar metinlerini Markdown formatında getirme + **Optimized Search** + **"Karar Sayısı" Targeting** + **Spesifik URL Filtreleme** (bddk.org.tr/Mevzuat/DokumanGetir)
55 |
56 | * Karar metinlerinin daha kolay işlenebilmesi için Markdown formatına çevrilmesi.
57 | * Claude Desktop uygulaması ile `fastmcp install` komutu kullanılarak kolay entegrasyon.
58 | * Yargı MCP artık [5ire](https://5ire.app) gibi Claude Desktop haricindeki MCP istemcilerini de destekliyor!
59 | ---
60 | <details>
61 | <summary>🚀 <strong>Claude Haricindeki Modellerle Kullanmak İçin Çok Kolay Kurulum (Örnek: 5ire için)</strong></summary>
62 |
63 | Bu bölüm, Yargı MCP aracını 5ire gibi Claude Desktop dışındaki MCP istemcileriyle kullanmak isteyenler içindir.
64 |
65 | * **Python Kurulumu:** Sisteminizde Python 3.11 veya üzeri kurulu olmalıdır. Kurulum sırasında "**Add Python to PATH**" (Python'ı PATH'e ekle) seçeneğini işaretlemeyi unutmayın. [Buradan](https://www.python.org/downloads/) indirebilirsiniz.
66 | * **Git Kurulumu (Windows):** Bilgisayarınıza [git](https://git-scm.com/downloads/win) yazılımını indirip kurun. "Git for Windows/x64 Setup" seçeneğini indirmelisiniz.
67 | * **`uv` Kurulumu:**
68 | * **Windows Kullanıcıları (PowerShell):** Bir CMD ekranı açın ve bu kodu çalıştırın: `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
69 | * **Mac/Linux Kullanıcıları (Terminal):** Bir Terminal ekranı açın ve bu kodu çalıştırın: `curl -LsSf https://astral.sh/uv/install.sh | sh`
70 | * **Microsoft Visual C++ Redistributable (Windows):** Bazı Python paketlerinin doğru çalışması için gereklidir. [Buradan](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) indirip kurun.
71 | * İşletim sisteminize uygun [5ire](https://5ire.app) MCP istemcisini indirip kurun.
72 | * 5ire'ı açın. **Workspace -> Providers** menüsünden kullanmak istediğiniz LLM servisinin API anahtarını girin.
73 | * **Tools** menüsüne girin. **+Local** veya **New** yazan butona basın.
74 | * **Tool Key:** `yargimcp`
75 | * **Name:** `Yargı MCP`
76 | * **Command:**
77 | ```
78 | uvx yargi-mcp
79 | ```
80 | * **Save** butonuna basarak kaydedin.
81 | 
82 | * Şimdi **Tools** altında **Yargı MCP**'yi görüyor olmalısınız. Üstüne geldiğinizde sağda çıkan butona tıklayıp etkinleştirin (yeşil ışık yanmalı).
83 | * Artık Yargı MCP ile konuşabilirsiniz.
84 |
85 | </details>
86 |
87 | ---
88 | <details>
89 | <summary>⚙️ <strong>Claude Desktop Manuel Kurulumu</strong></summary>
90 |
91 | 1. **Ön Gereksinimler:** Python, `uv`, (Windows için) Microsoft Visual C++ Redistributable'ın sisteminizde kurulu olduğundan emin olun. Detaylı bilgi için yukarıdaki "5ire için Kurulum" bölümündeki ilgili adımlara bakabilirsiniz.
92 | 2. Claude Desktop **Settings -> Developer -> Edit Config**.
93 | 3. Açılan `claude_desktop_config.json` dosyasına `mcpServers` altına ekleyin:
94 |
95 | ```json
96 | {
97 | "mcpServers": {
98 | // ... (varsa diğer sunucularınız) ...
99 | "Yargı MCP": {
100 | "command": "uvx",
101 | "args": [
102 | "yargi-mcp"
103 | ]
104 | }
105 | }
106 | }
107 | ```
108 | 4. Claude Desktop'ı kapatıp yeniden başlatın.
109 |
110 | </details>
111 |
112 | ---
113 | <details>
114 | <summary>🌟 <strong>Gemini CLI ile Kullanım</strong></summary>
115 |
116 | Yargı MCP'yi Gemini CLI ile kullanmak için:
117 |
118 | 1. **Ön Gereksinimler:** Python, `uv`, (Windows için) Microsoft Visual C++ Redistributable'ın sisteminizde kurulu olduğundan emin olun. Detaylı bilgi için yukarıdaki "5ire için Kurulum" bölümündeki ilgili adımlara bakabilirsiniz.
119 |
120 | 2. **Gemini CLI ayarlarını yapılandırın:**
121 |
122 | Gemini CLI'ın ayar dosyasını düzenleyin:
123 | - **macOS/Linux:** `~/.gemini/settings.json`
124 | - **Windows:** `%USERPROFILE%\.gemini\settings.json`
125 |
126 | Aşağıdaki `mcpServers` bloğunu ekleyin:
127 | ```json
128 | {
129 | "theme": "Default",
130 | "selectedAuthType": "###",
131 | "mcpServers": {
132 | "yargi_mcp": {
133 | "command": "uvx",
134 | "args": [
135 | "yargi-mcp"
136 | ]
137 | }
138 | }
139 | }
140 | ```
141 |
142 | **Yapılandırma açıklamaları:**
143 | - `"yargi_mcp"`: Sunucunuz için yerel bir isim
144 | - `"command"`: `uvx` komutu (uv'nin paket çalıştırma aracı)
145 | - `"args"`: GitHub'dan doğrudan Yargı MCP'yi çalıştırmak için gerekli argümanlar
146 |
147 | 3. **Kullanım:**
148 | - Gemini CLI'ı başlatın
149 | - Yargı MCP araçları otomatik olarak kullanılabilir olacaktır
150 | - Örnek komutlar:
151 | - "Yargıtay'ın mülkiyet hakkı ile ilgili son kararlarını ara"
152 | - "Danıştay'ın imar planı iptaline ilişkin kararlarını bul"
153 | - "Anayasa Mahkemesi'nin ifade özgürlüğü kararlarını getir"
154 |
155 | </details>
156 |
157 | <details>
158 | <summary>🛠️ <strong>Kullanılabilir Araçlar (MCP Tools)</strong></summary>
159 |
160 | Bu FastMCP sunucusu **19 optimize edilmiş MCP aracı** sunar (token verimliliği için optimize edilmiş):
161 |
162 | ### **Yargıtay Araçları (Birleşik Bedesten API - Token Optimized)**
163 | *Not: Yargıtay araçları token verimliliği için birleşik Bedesten API'ye entegre edilmiştir*
164 |
165 | ### **Danıştay Araçları (Birleşik Bedesten API - Token Optimized)**
166 | *Not: Danıştay araçları token verimliliği için birleşik Bedesten API'ye entegre edilmiştir*
167 |
168 | ### **Birleşik Bedesten API Araçları (5 Mahkeme) - 🚀 TOKEN OPTİMİZE**
169 | 1. `search_bedesten_unified(phrase, court_types, birimAdi, kararTarihiStart, kararTarihiEnd, ...)`: **5 mahkeme türünü** birleşik arama (Yargıtay, Danıştay, Yerel Hukuk, İstinaf Hukuk, KYB) + **79 daire filtreleme** + **Tarih & Kesin Cümle Arama**
170 | 2. `get_bedesten_document_markdown(documentId: str)`: Bedesten API'den herhangi bir belgeyi Markdown formatında getirir (HTML/PDF → Markdown)
171 |
172 | ### **Emsal Karar Araçları (UYAP)**
173 | 3. `search_emsal_detailed_decisions(keyword, ...)`: Emsal (UYAP) kararlarını detaylı kriterlerle arar.
174 | 4. `get_emsal_document_markdown(id: str)`: Belirli bir Emsal kararının metnini Markdown formatında getirir.
175 |
176 | ### **Uyuşmazlık Mahkemesi Araçları**
177 | 5. `search_uyusmazlik_decisions(icerik, ...)`: Uyuşmazlık Mahkemesi kararlarını çeşitli form kriterleriyle arar.
178 | 6. `get_uyusmazlik_document_markdown_from_url(document_url)`: Bir Uyuşmazlık kararını tam URL'sinden alıp Markdown formatında getirir.
179 |
180 | ### **Anayasa Mahkemesi Araçları (Birleşik API) - 🚀 TOKEN OPTİMİZE**
181 | 7. `search_anayasa_unified(decision_type, keywords_all, ...)`: AYM kararlarını birleşik arama (Norm Denetimi + Bireysel Başvuru) - **4 araç → 2 araç optimizasyonu**
182 | 8. `get_anayasa_document_unified(document_url, page_number)`: AYM kararlarını birleşik belge getirme - **sayfalanmış Markdown** içeriği
183 |
184 | ### **KİK (Kamu İhale Kurulu) Araçları**
185 | 9. `search_kik_decisions(karar_tipi, ...)`: KİK (Kamu İhale Kurulu) kararlarını arar.
186 | 10. `get_kik_document_markdown(karar_id, page_number)`: Belirli bir KİK kararını, Base64 ile encode edilmiş `karar_id`'sini kullanarak alır ve **sayfalanmış Markdown** içeriğini getirir.
187 | ### **Rekabet Kurumu Araçları**
188 | * `search_rekabet_kurumu_decisions(KararTuru: Literal[...], ...) -> RekabetSearchResult`: Rekabet Kurumu kararlarını arar. `KararTuru` için kullanıcı dostu isimler kullanılır (örn: "Birleşme ve Devralma").
189 | * `get_rekabet_kurumu_document(karar_id: str, page_number: Optional[int] = 1) -> RekabetDocument`: Belirli bir Rekabet Kurumu kararını `karar_id` ile alır. Kararın PDF formatındaki orijinalinden istenen sayfayı ayıklar ve Markdown formatında döndürür.
190 |
191 |
192 | ---
193 |
194 | * **Sayıştay Araçları (3 Karar Türü + 8 Daire Filtreleme):**
195 | * `search_sayistay_genel_kurul(karar_no, karar_tarih_baslangic, karar_tamami, ...)`: Sayıştay Genel Kurul (yorumlayıcı) kararlarını arar. **Tarih aralığı** (2006-2024) + **İçerik arama** (400 karakter)
196 | * `search_sayistay_temyiz_kurulu(ilam_dairesi, kamu_idaresi_turu, temyiz_karar, ...)`: Temyiz Kurulu (itiraz) kararlarını arar. **8 Daire filtreleme** + **Kurum türü** + **Konu sınıflandırması**
197 | * `search_sayistay_daire(yargilama_dairesi, web_karar_metni, hesap_yili, ...)`: Daire (ilk derece denetim) kararlarını arar. **8 Daire filtreleme** + **Hesap yılı** + **İçerik arama**
198 | * `get_sayistay_genel_kurul_document_markdown(decision_id: str)`: Genel Kurul kararının tam metnini Markdown formatında getirir
199 | * `get_sayistay_temyiz_kurulu_document_markdown(decision_id: str)`: Temyiz Kurulu kararının tam metnini Markdown formatında getirir
200 | * `get_sayistay_daire_document_markdown(decision_id: str)`: Daire kararının tam metnini Markdown formatında getirir
201 |
202 | * **KVKK Araçları (Brave Search API + Türkçe Arama):**
203 | * `search_kvkk_decisions(keywords, page, pageSize, ...)`: KVKK (Kişisel Verilerin Korunması Kurulu) kararlarını Brave Search API ile arar. **Türkçe arama** + **Site hedeflemeli** (`site:kvkk.gov.tr "karar özeti"`) + **Sayfalama desteği**
204 | * `get_kvkk_document_markdown(decision_url: str, page_number: Optional[int] = 1)`: KVKK kararının tam metnini **sayfalanmış Markdown** formatında getirir (5.000 karakterlik sayfa)
205 |
206 | ### BDDK Araçları
207 | * `search_bddk_decisions(keywords, page)`: BDDK (Bankacılık Düzenleme ve Denetleme Kurumu) kararlarını arar. **"Karar Sayısı" targeting** + **Spesifik URL filtreleme** (`bddk.org.tr/Mevzuat/DokumanGetir`) + **Optimized search**
208 | * `get_bddk_document_markdown(document_id: str, page_number: Optional[int] = 1)`: BDDK kararının tam metnini **sayfalanmış Markdown** formatında getirir (5.000 karakterlik sayfa)
209 |
210 | </details>
211 |
212 | ---
213 |
214 | <details>
215 | <summary>📊 <strong>Kapsamlı İstatistikler & Optimizasyon Başarıları</strong></summary>
216 |
217 | 🚀 **TOKEN OPTİMİZASYON BAŞARISI:**
218 | - **%61.8 Token Azaltma:** 14,061 → 5,369 tokens (8,692 token tasarrufu)
219 | - **Hedef Aşım:** 10,000 token hedefini 4,631 token aştık
220 | - **Daha Hızlı Yanıt:** Claude AI ile optimize edilmiş etkileşim
221 | - **Korunan İşlevsellik:** %100 özellik desteği devam ediyor
222 |
223 | **GENEL İSTATİSTİKLER:**
224 | - **Toplam Mahkeme/Kurum:** 13 farklı hukuki kurum (KVKK dahil)
225 | - **Toplam MCP Tool:** 19 optimize edilmiş arama ve belge getirme aracı
226 | - **Daire/Kurul Filtreleme:** 87 farklı seçenek (52 Yargıtay + 27 Danıştay + 8 Sayıştay)
227 | - **Tarih Filtreleme:** Birleşik Bedesten API aracında ISO 8601 formatında tam tarih aralığı desteği
228 | - **Kesin Cümle Arama:** Birleşik Bedesten API aracında çift tırnak ile tam cümle arama (`"\"mülkiyet kararı\""` formatı)
229 | - **Birleşik API:** 10 ayrı Bedesten aracı → 2 birleşik araç (search_bedesten_unified + get_bedesten_document_markdown)
230 | - **API Kaynağı:** Dual/Triple API desteği ile maksimum kapsama
231 | - **Tam Türk Adalet Sistemi:** Yerel mahkemelerden en yüksek mahkemelere kadar
232 |
233 | **🏛️ Desteklenen Mahkeme Hiyerarşisi:**
234 | ```
235 | Yerel Mahkemeler → İstinaf → Yargıtay/Danıştay → Anayasa Mahkemesi
236 | ↓ ↓ ↓ ↓
237 | Bedesten API Bedesten API Dual/Triple API Norm+Bireysel API
238 | + Tarih + Kesin + Tarih + Kesin + Daire + Tarih + Gelişmiş
239 | Cümle Arama Cümle Arama + Kesin Cümle Arama
240 | ```
241 |
242 | **⚖️ Kapsamlı Filtreleme Özellikleri:**
243 | - **Daire Filtreleme:** 79 seçenek (52 Yargıtay + 27 Danıştay)
244 | - **Yargıtay:** 52 seçenek (1-23 Hukuk, 1-23 Ceza, Genel Kurullar, Başkanlar Kurulu)
245 | - **Danıştay:** 27 seçenek (1-17 Daireler, İdare/Vergi Kurulları, Askeri Mahkemeler)
246 | - **Tarih Filtreleme:** 5 Bedesten API aracında ISO 8601 formatı (YYYY-MM-DDTHH:MM:SS.000Z)
247 | - Tek tarih, tarih aralığı, tek taraflı filtreleme desteği
248 | - Yargıtay, Danıştay, Yerel Hukuk, İstinaf Hukuk, KYB kararları
249 | - **Kesin Cümle Arama:** 5 Bedesten API aracında çift tırnak formatı
250 | - Normal arama: `"mülkiyet kararı"` (kelimeler ayrı ayrı)
251 | - Kesin arama: `"\"mülkiyet kararı\""` (tam cümle olarak)
252 | - Daha kesin sonuçlar için hukuki terimler ve kavramlar
253 |
254 | **🔧 OPTİMİZASYON DETAYLARI:**
255 | - **Anayasa Mahkemesi:** 4 araç → 2 birleşik araç (search_anayasa_unified + get_anayasa_document_unified)
256 | - **Yargıtay & Danıştay:** Ana API araçları birleşik Bedesten API'ye entegre edildi
257 | - **Sayıştay:** 6 araç → 2 birleşik araç (search_sayistay_unified + get_sayistay_document_unified)
258 | - **Parameter Optimizasyonu:** pageSize parametreleri optimize edildi
259 | - **Açıklama Optimizasyonu:** Uzun açıklamalar kısaltıldı (örn: KIK karar_metni)
260 |
261 | </details>
262 |
263 | ---
264 |
265 | <details>
266 | <summary>🌐 <strong>Web Service / ASGI Deployment</strong></summary>
267 |
268 | Yargı MCP artık web servisi olarak da çalıştırılabilir! ASGI desteği sayesinde:
269 |
270 | - **Web API olarak erişim**: HTTP endpoint'leri üzerinden MCP araçlarına erişim
271 | - **Cloud deployment**: Heroku, Railway, Google Cloud Run, AWS Lambda desteği
272 | - **Docker desteği**: Production-ready Docker container
273 | - **FastAPI entegrasyonu**: REST API ve interaktif dokümantasyon
274 |
275 | **Hızlı başlangıç:**
276 | ```bash
277 | # ASGI dependencies yükle
278 | pip install yargi-mcp[asgi]
279 |
280 | # Web servisi olarak başlat
281 | python run_asgi.py
282 | # veya
283 | uvicorn asgi_app:app --host 0.0.0.0 --port 8000
284 | ```
285 |
286 | Detaylı deployment rehberi için: [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)
287 |
288 | </details>
289 |
290 | ---
291 |
292 | 📜 **Lisans**
293 |
294 | Bu proje MIT Lisansı altında lisanslanmıştır. Detaylar için `LICENSE` dosyasına bakınız.
295 |
```