mcp-dblp 1.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. mcp_dblp-1.2.0/.gitignore +179 -0
  2. mcp_dblp-1.2.0/LICENSE +21 -0
  3. mcp_dblp-1.2.0/PKG-INFO +394 -0
  4. mcp_dblp-1.2.0/README.md +370 -0
  5. mcp_dblp-1.2.0/evaluation/README.md +52 -0
  6. mcp_dblp-1.2.0/evaluation/RESULTS.md +180 -0
  7. mcp_dblp-1.2.0/evaluation/SUPP/README.md +109 -0
  8. mcp_dblp-1.2.0/evaluation/SUPP/classifications/averaged.csv +7 -0
  9. mcp_dblp-1.2.0/evaluation/SUPP/classifications/exp1.csv +105 -0
  10. mcp_dblp-1.2.0/evaluation/SUPP/classifications/exp2.csv +105 -0
  11. mcp_dblp-1.2.0/evaluation/SUPP/classifications/exp3.csv +105 -0
  12. mcp_dblp-1.2.0/evaluation/SUPP/ground_truth/ground_truth.bib +2052 -0
  13. mcp_dblp-1.2.0/evaluation/SUPP/inputs/batch1.txt +35 -0
  14. mcp_dblp-1.2.0/evaluation/SUPP/inputs/batch2.txt +35 -0
  15. mcp_dblp-1.2.0/evaluation/SUPP/inputs/batch3.txt +34 -0
  16. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/mcp_m/batch1.bib +505 -0
  17. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/mcp_m/batch2.bib +244 -0
  18. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/mcp_m/batch3.bib +471 -0
  19. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/mcp_u/batch1.bib +661 -0
  20. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/mcp_u/batch2.bib +773 -0
  21. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/mcp_u/batch3.bib +733 -0
  22. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/web/batch1.bib +228 -0
  23. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/web/batch2.bib +218 -0
  24. mcp_dblp-1.2.0/evaluation/SUPP/results/exp1/web/batch3.bib +233 -0
  25. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/mcp_m/batch1.bib +369 -0
  26. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/mcp_m/batch2.bib +518 -0
  27. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/mcp_m/batch3.bib +360 -0
  28. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/mcp_u/batch1.bib +684 -0
  29. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/mcp_u/batch2.bib +772 -0
  30. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/mcp_u/batch3.bib +724 -0
  31. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/web/batch1.bib +293 -0
  32. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/web/batch2.bib +305 -0
  33. mcp_dblp-1.2.0/evaluation/SUPP/results/exp2/web/batch3.bib +330 -0
  34. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/mcp_m/batch1.bib +515 -0
  35. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/mcp_m/batch2.bib +242 -0
  36. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/mcp_m/batch3.bib +363 -0
  37. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/mcp_u/batch1.bib +737 -0
  38. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/mcp_u/batch2.bib +746 -0
  39. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/mcp_u/batch3.bib +734 -0
  40. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/web/batch1.bib +327 -0
  41. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/web/batch2.bib +335 -0
  42. mcp_dblp-1.2.0/evaluation/SUPP/results/exp3/web/batch3.bib +346 -0
  43. mcp_dblp-1.2.0/evaluation/data/archive/control_output_batch1.bib +192 -0
  44. mcp_dblp-1.2.0/evaluation/data/archive/control_output_batch2.bib +198 -0
  45. mcp_dblp-1.2.0/evaluation/data/archive/control_output_batch3.bib +294 -0
  46. mcp_dblp-1.2.0/evaluation/data/archive/control_output_v2.bib +679 -0
  47. mcp_dblp-1.2.0/evaluation/data/archive/evaluation_framework_v1_old.md +119 -0
  48. mcp_dblp-1.2.0/evaluation/data/archive/evaluation_output_v2.txt +657 -0
  49. mcp_dblp-1.2.0/evaluation/data/archive/evaluation_summary.md +265 -0
  50. mcp_dblp-1.2.0/evaluation/data/archive/full_evaluation_results.txt +1259 -0
  51. mcp_dblp-1.2.0/evaluation/data/archive/manual_comparison/all_comparisons.txt +5134 -0
  52. mcp_dblp-1.2.0/evaluation/data/archive/manual_comparison/batch_1_citations_1-20.txt +1026 -0
  53. mcp_dblp-1.2.0/evaluation/data/archive/manual_comparison/batch_2_citations_21-40.txt +1016 -0
  54. mcp_dblp-1.2.0/evaluation/data/archive/manual_comparison/batch_3_citations_41-60.txt +1116 -0
  55. mcp_dblp-1.2.0/evaluation/data/archive/manual_comparison/batch_4_citations_61-80.txt +1086 -0
  56. mcp_dblp-1.2.0/evaluation/data/archive/manual_comparison/batch_5_citations_81-100.txt +1089 -0
  57. mcp_dblp-1.2.0/evaluation/data/archive/manual_comparison/batch_6_citations_101-104.txt +217 -0
  58. mcp_dblp-1.2.0/evaluation/data/archive/notable_examples.md +178 -0
  59. mcp_dblp-1.2.0/evaluation/data/archive/paper_tables.md +204 -0
  60. mcp_dblp-1.2.0/evaluation/data/archive/previous_evaluation/detailed_ratings_v2.csv +105 -0
  61. mcp_dblp-1.2.0/evaluation/data/archive/previous_evaluation/evaluation_results_gemf_v2.md +68 -0
  62. mcp_dblp-1.2.0/evaluation/data/archive/test_input_v2.txt +104 -0
  63. mcp_dblp-1.2.0/evaluation/data/archive/three_way_evaluation.txt +160 -0
  64. mcp_dblp-1.2.0/evaluation/data/archive/three_way_examples.md +437 -0
  65. mcp_dblp-1.2.0/evaluation/data/archive/three_way_summary.md +133 -0
  66. mcp_dblp-1.2.0/evaluation/data/archive/treatment_metadata.csv +9 -0
  67. mcp_dblp-1.2.0/evaluation/data/archive/treatment_output_batch1.bib +441 -0
  68. mcp_dblp-1.2.0/evaluation/data/archive/treatment_output_batch2.bib +750 -0
  69. mcp_dblp-1.2.0/evaluation/data/archive/treatment_output_batch3.bib +560 -0
  70. mcp_dblp-1.2.0/evaluation/data/archive/treatment_output_v2.bib +1849 -0
  71. mcp_dblp-1.2.0/evaluation/data/archive/v1_pilot/control_output.bib +684 -0
  72. mcp_dblp-1.2.0/evaluation/data/archive/v1_pilot/evaluation_output.txt +148 -0
  73. mcp_dblp-1.2.0/evaluation/data/archive/v1_pilot/test_input.txt +104 -0
  74. mcp_dblp-1.2.0/evaluation/data/archive/v1_pilot/treatment_output.bib +1751 -0
  75. mcp_dblp-1.2.0/evaluation/data/classification_archive/classification_first_exp.csv +105 -0
  76. mcp_dblp-1.2.0/evaluation/data/classification_archive/classification_new.csv +109 -0
  77. mcp_dblp-1.2.0/evaluation/data/classification_corrected.csv +105 -0
  78. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/control_group_verified.csv +105 -0
  79. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/corrected_three_way_evaluation.txt +504 -0
  80. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/corrected_three_way_summary.md +263 -0
  81. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/evaluation_framework_v3.md +154 -0
  82. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/full_104_analysis.md +109 -0
  83. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_analysis_2025-11-21.csv +105 -0
  84. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_analysis_2025-11-21_v2.csv +105 -0
  85. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_analysis_consolidated.csv +105 -0
  86. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_analysis_final.csv +105 -0
  87. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_summary_2025-11-21.md +110 -0
  88. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_summary_2025-11-21_v2.md +46 -0
  89. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_summary_consolidated.md +75 -0
  90. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/gemini_flash_summary_verified.md +64 -0
  91. mcp_dblp-1.2.0/evaluation/data/evaluation/archive_2025-11-22/verification_report.md +87 -0
  92. mcp_dblp-1.2.0/evaluation/data/inputs/test_input_v2_batch1.txt +35 -0
  93. mcp_dblp-1.2.0/evaluation/data/inputs/test_input_v2_batch2.txt +35 -0
  94. mcp_dblp-1.2.0/evaluation/data/inputs/test_input_v2_batch3.txt +34 -0
  95. mcp_dblp-1.2.0/evaluation/data/results_control/control_output_v2_batch1.bib +228 -0
  96. mcp_dblp-1.2.0/evaluation/data/results_control/control_output_v2_batch2.bib +218 -0
  97. mcp_dblp-1.2.0/evaluation/data/results_control/control_output_v2_batch3.bib +233 -0
  98. mcp_dblp-1.2.0/evaluation/data/results_control/control_v2_timing.txt +51 -0
  99. mcp_dblp-1.2.0/evaluation/data/results_mcp_m/batch1.bib +505 -0
  100. mcp_dblp-1.2.0/evaluation/data/results_mcp_m/batch2.bib +244 -0
  101. mcp_dblp-1.2.0/evaluation/data/results_mcp_m/batch3.bib +471 -0
  102. mcp_dblp-1.2.0/evaluation/data/results_treatment_v2/treatment_output_v2_batch1.bib +641 -0
  103. mcp_dblp-1.2.0/evaluation/data/results_treatment_v2/treatment_output_v2_batch2.bib +734 -0
  104. mcp_dblp-1.2.0/evaluation/data/results_treatment_v2/treatment_output_v2_batch3.bib +701 -0
  105. mcp_dblp-1.2.0/evaluation/data/results_treatment_v3/treatment_output_v3_batch1.bib +661 -0
  106. mcp_dblp-1.2.0/evaluation/data/results_treatment_v3/treatment_output_v3_batch2.bib +773 -0
  107. mcp_dblp-1.2.0/evaluation/data/results_treatment_v3/treatment_output_v3_batch3.bib +733 -0
  108. mcp_dblp-1.2.0/evaluation/ground_truth/ground_truth.bib +2052 -0
  109. mcp_dblp-1.2.0/evaluation/ground_truth/ground_truth_metadata.csv +105 -0
  110. mcp_dblp-1.2.0/evaluation/ground_truth/ground_truth_metadata_regenerated.csv +464 -0
  111. mcp_dblp-1.2.0/evaluation/ground_truth/ground_truth_v1.bib +4010 -0
  112. mcp_dblp-1.2.0/evaluation/ground_truth/ground_truth_v2_190papers.bib +3829 -0
  113. mcp_dblp-1.2.0/evaluation/ground_truth/metadata_v1.csv +201 -0
  114. mcp_dblp-1.2.0/evaluation/ground_truth/metadata_v2_190papers.csv +191 -0
  115. mcp_dblp-1.2.0/evaluation/ground_truth/pilot_batch_20.bib +463 -0
  116. mcp_dblp-1.2.0/evaluation/ground_truth/pilot_batch_metadata.txt +161 -0
  117. mcp_dblp-1.2.0/evaluation/ground_truth/venue_year_assignments_v2.json +902 -0
  118. mcp_dblp-1.2.0/evaluation/prompts/README.md +44 -0
  119. mcp_dblp-1.2.0/evaluation/prompts/archive/create_ground_truth.md +109 -0
  120. mcp_dblp-1.2.0/evaluation/prompts/archive/create_test_input.md +37 -0
  121. mcp_dblp-1.2.0/evaluation/prompts/archive/evaluate.md +48 -0
  122. mcp_dblp-1.2.0/evaluation/prompts/archive/evaluate_v2.md +128 -0
  123. mcp_dblp-1.2.0/evaluation/prompts/archive/treatment_group_auto_only.md +40 -0
  124. mcp_dblp-1.2.0/evaluation/prompts/archive/treatment_group_manual_save.md +27 -0
  125. mcp_dblp-1.2.0/evaluation/prompts/control_group.md +27 -0
  126. mcp_dblp-1.2.0/evaluation/prompts/treatment_group.md +28 -0
  127. mcp_dblp-1.2.0/evaluation/scripts/analyze_ratings_v2.py +194 -0
  128. mcp_dblp-1.2.0/evaluation/scripts/classify_entries.py +250 -0
  129. mcp_dblp-1.2.0/evaluation/scripts/collect_ground_truth_mcp.py +296 -0
  130. mcp_dblp-1.2.0/evaluation/scripts/create_all_comparison_batches.py +146 -0
  131. mcp_dblp-1.2.0/evaluation/scripts/create_test_input.py +311 -0
  132. mcp_dblp-1.2.0/evaluation/scripts/detailed_analysis.py +240 -0
  133. mcp_dblp-1.2.0/evaluation/scripts/evaluate_experiment.py +467 -0
  134. mcp_dblp-1.2.0/evaluation/scripts/evaluate_results.py +340 -0
  135. mcp_dblp-1.2.0/evaluation/scripts/filter_ground_truth.py +129 -0
  136. mcp_dblp-1.2.0/evaluation/scripts/fix_test_input.py +12 -0
  137. mcp_dblp-1.2.0/evaluation/scripts/rebalance_ground_truth.py +180 -0
  138. mcp_dblp-1.2.0/evaluation/scripts/regenerate_test_input_v2.py +15 -0
  139. mcp_dblp-1.2.0/evaluation/second/archive/classification_new.csv +105 -0
  140. mcp_dblp-1.2.0/evaluation/second/archive/classification_prompt.md +63 -0
  141. mcp_dblp-1.2.0/evaluation/second/archive/classification_prompt_v2.md +118 -0
  142. mcp_dblp-1.2.0/evaluation/second/archive/classification_second_exp.csv +105 -0
  143. mcp_dblp-1.2.0/evaluation/second/archive/classification_strict.csv +105 -0
  144. mcp_dblp-1.2.0/evaluation/second/archive/classifications_final.csv +105 -0
  145. mcp_dblp-1.2.0/evaluation/second/archive/classifications_verified.csv +105 -0
  146. mcp_dblp-1.2.0/evaluation/second/archive/consolidated.csv +105 -0
  147. mcp_dblp-1.2.0/evaluation/second/archive/flash_run1.csv +105 -0
  148. mcp_dblp-1.2.0/evaluation/second/archive/flash_run2.csv +105 -0
  149. mcp_dblp-1.2.0/evaluation/second/archive/flash_run3.csv +105 -0
  150. mcp_dblp-1.2.0/evaluation/second/archive/flash_run4.csv +105 -0
  151. mcp_dblp-1.2.0/evaluation/second/archive/flash_run5.csv +105 -0
  152. mcp_dblp-1.2.0/evaluation/second/classification_corrected.csv +105 -0
  153. mcp_dblp-1.2.0/evaluation/second/inputs/test_input_v2_batch1.txt +35 -0
  154. mcp_dblp-1.2.0/evaluation/second/inputs/test_input_v2_batch2.txt +35 -0
  155. mcp_dblp-1.2.0/evaluation/second/inputs/test_input_v2_batch3.txt +34 -0
  156. mcp_dblp-1.2.0/evaluation/second/instructions_mcp_m.md +106 -0
  157. mcp_dblp-1.2.0/evaluation/second/prompt_mcp_m.md +25 -0
  158. mcp_dblp-1.2.0/evaluation/second/prompt_mcp_u.md +25 -0
  159. mcp_dblp-1.2.0/evaluation/second/results_control/batch1.bib +293 -0
  160. mcp_dblp-1.2.0/evaluation/second/results_control/batch2.bib +305 -0
  161. mcp_dblp-1.2.0/evaluation/second/results_control/batch3.bib +330 -0
  162. mcp_dblp-1.2.0/evaluation/second/results_mcp_m/batch1.bib +369 -0
  163. mcp_dblp-1.2.0/evaluation/second/results_mcp_m/batch2.bib +518 -0
  164. mcp_dblp-1.2.0/evaluation/second/results_mcp_m/batch3.bib +360 -0
  165. mcp_dblp-1.2.0/evaluation/second/results_mcp_u/batch1.bib +684 -0
  166. mcp_dblp-1.2.0/evaluation/second/results_mcp_u/batch2.bib +772 -0
  167. mcp_dblp-1.2.0/evaluation/second/results_mcp_u/batch3.bib +724 -0
  168. mcp_dblp-1.2.0/evaluation/third/README.md +196 -0
  169. mcp_dblp-1.2.0/evaluation/third/archive/classification_flash.csv +298 -0
  170. mcp_dblp-1.2.0/evaluation/third/archive/classification_run1.csv +0 -0
  171. mcp_dblp-1.2.0/evaluation/third/archive/classification_run2.csv +105 -0
  172. mcp_dblp-1.2.0/evaluation/third/archive/classification_run2_updated.csv +107 -0
  173. mcp_dblp-1.2.0/evaluation/third/archive/classification_v2.csv +105 -0
  174. mcp_dblp-1.2.0/evaluation/third/classification_final.csv +105 -0
  175. mcp_dblp-1.2.0/evaluation/third/inputs/test_input_v2_batch1.txt +35 -0
  176. mcp_dblp-1.2.0/evaluation/third/inputs/test_input_v2_batch2.txt +35 -0
  177. mcp_dblp-1.2.0/evaluation/third/inputs/test_input_v2_batch3.txt +34 -0
  178. mcp_dblp-1.2.0/evaluation/third/prompts/classification_prompt.md +118 -0
  179. mcp_dblp-1.2.0/evaluation/third/prompts/instructions_mcp_m.md +106 -0
  180. mcp_dblp-1.2.0/evaluation/third/prompts/prompt_mcp_m.md +66 -0
  181. mcp_dblp-1.2.0/evaluation/third/prompts/prompt_mcp_u.md +53 -0
  182. mcp_dblp-1.2.0/evaluation/third/prompts/prompt_web.md +36 -0
  183. mcp_dblp-1.2.0/evaluation/third/results_control/batch1.bib +327 -0
  184. mcp_dblp-1.2.0/evaluation/third/results_control/batch2.bib +335 -0
  185. mcp_dblp-1.2.0/evaluation/third/results_control/batch3.bib +346 -0
  186. mcp_dblp-1.2.0/evaluation/third/results_mcp_m/batch1.bib +515 -0
  187. mcp_dblp-1.2.0/evaluation/third/results_mcp_m/batch2.bib +242 -0
  188. mcp_dblp-1.2.0/evaluation/third/results_mcp_m/batch3.bib +363 -0
  189. mcp_dblp-1.2.0/evaluation/third/results_mcp_u/batch1.bib +737 -0
  190. mcp_dblp-1.2.0/evaluation/third/results_mcp_u/batch2.bib +746 -0
  191. mcp_dblp-1.2.0/evaluation/third/results_mcp_u/batch3.bib +734 -0
  192. mcp_dblp-1.2.0/instructions_prompt.md +175 -0
  193. mcp_dblp-1.2.0/pyproject.toml +77 -0
  194. mcp_dblp-1.2.0/src/mcp_dblp/__init__.py +7 -0
  195. mcp_dblp-1.2.0/src/mcp_dblp/dblp_client.py +533 -0
  196. mcp_dblp-1.2.0/src/mcp_dblp/server.py +603 -0
  197. mcp_dblp-1.2.0/src/mcp_dblp/tools.py +52 -0
  198. mcp_dblp-1.2.0/uv.lock +895 -0
@@ -0,0 +1,179 @@
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
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+
110
+ # pdm
111
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
112
+ #pdm.lock
113
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
114
+ # in version control.
115
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
116
+ .pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
121
+ __pypackages__/
122
+
123
+ # Celery stuff
124
+ celerybeat-schedule
125
+ celerybeat.pid
126
+
127
+ # SageMath parsed files
128
+ *.sage.py
129
+
130
+ # Environments
131
+ .env
132
+ .venv
133
+ env/
134
+ venv/
135
+ ENV/
136
+ env.bak/
137
+ venv.bak/
138
+
139
+ # Spyder project settings
140
+ .spyderproject
141
+ .spyproject
142
+
143
+ # Rope project settings
144
+ .ropeproject
145
+
146
+ # mkdocs documentation
147
+ /site
148
+
149
+ # mypy
150
+ .mypy_cache/
151
+ .dmypy.json
152
+ dmypy.json
153
+
154
+ # Pyre type checker
155
+ .pyre/
156
+
157
+ # pytype static type analyzer
158
+ .pytype/
159
+
160
+ # Cython debug symbols
161
+ cython_debug/
162
+
163
+ # PyCharm
164
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
165
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
166
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
167
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
168
+ #.idea/
169
+
170
+ # PyPI configuration file
171
+ .pypirc
172
+
173
+ # macOS
174
+ .DS_Store
175
+
176
+ # Project-specific (development artifacts not tracked in git)
177
+ CLAUDE.md
178
+ test/
179
+ paper/
mcp_dblp-1.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Stefan Szeider
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,394 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp-dblp
3
+ Version: 1.2.0
4
+ Summary: An MCP server that provides access to the DBLP computer science bibliography for LLMs.
5
+ Project-URL: Homepage, https://github.com/szeider/mcp-dblp
6
+ Project-URL: Repository, https://github.com/szeider/mcp-dblp
7
+ Project-URL: Issues, https://github.com/szeider/mcp-dblp/issues
8
+ Author-email: Stefan Szeider <stefan@szeider.net>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: ai,bibliography,bibtex,citations,dblp,llm,mcp
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Scientific/Engineering
20
+ Requires-Python: >=3.11
21
+ Requires-Dist: mcp>=1.20.0
22
+ Requires-Dist: requests>=2.32.5
23
+ Description-Content-Type: text/markdown
24
+
25
+ # MCP-DBLP
26
+
27
+ [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Python Version](https://img.shields.io/badge/Python-3.11%2B-blue.svg)](https://www.python.org/)
28
+
29
+ A Model Context Protocol (MCP) server that provides access to the DBLP computer science bibliography database for Large Language Models.
30
+
31
+ <a href="https://glama.ai/mcp/servers/cm42scf3iv">
32
+ <img width="380" height="200" src="https://glama.ai/mcp/servers/cm42scf3iv/badge" alt="MCP-DBLP MCP server" />
33
+ </a>
34
+
35
+ ------
36
+
37
+ ## Overview
38
+
39
+ The MCP-DBLP integrates the DBLP (Digital Bibliography & Library Project) API with LLMs through the Model Context Protocol, enabling AI models to:
40
+
41
+ - Search and retrieve academic publications from the DBLP database
42
+ - Process citations and generate BibTeX entries
43
+ - Perform fuzzy matching on publication titles and author names
44
+ - Extract and format bibliographic information
45
+ - Process embedded references in documents
46
+ - Direct BibTeX export that bypasses LLM processing for maximum accuracy
47
+
48
+ ## Features
49
+
50
+ - Comprehensive search capabilities with boolean queries
51
+ - Fuzzy title and author name matching
52
+ - BibTeX entry retrieval directly from DBLP
53
+ - Publication filtering by year and venue
54
+ - Statistical analysis of publication data
55
+ - Direct BibTeX export capability that bypasses LLM processing for maximum accuracy
56
+
57
+ ## Available Tools
58
+
59
+ | Tool Name | Description |
60
+ | ------------------------- | -------------------------------------------------- |
61
+ | `get_instructions` | Get usage instructions and workflow guidance |
62
+ | `search` | Search DBLP for publications using boolean queries |
63
+ | `fuzzy_title_search` | Search publications with fuzzy title matching |
64
+ | `get_author_publications` | Retrieve publications for a specific author |
65
+ | `get_venue_info` | Get detailed information about a publication venue |
66
+ | `calculate_statistics` | Generate statistics from publication results |
67
+ | `add_bibtex_entry` | Add a BibTeX entry to collection by DBLP key |
68
+ | `export_bibtex` | Export all collected BibTeX entries to a .bib file |
69
+
70
+
71
+ ## Feedback
72
+
73
+ Provide feedback to the author via this [form](https://form.jotform.com/szeider/mcp-dblp-feedback-form).
74
+
75
+ ## System Requirements
76
+
77
+ - Python 3.11+
78
+ - [uv](https://docs.astral.sh/uv/getting-started/installation/)
79
+
80
+ ------
81
+
82
+ ## Installation
83
+
84
+ ### Claude Code
85
+
86
+ Simply run:
87
+
88
+ ```bash
89
+ claude mcp add mcp-dblp -- uvx mcp-dblp
90
+ ```
91
+
92
+ ### Claude Desktop
93
+
94
+ Add to your Claude Desktop configuration file:
95
+
96
+ - macOS/Linux: `~/Library/Application Support/Claude/claude_desktop_config.json`
97
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
98
+
99
+ ```json
100
+ {
101
+ "mcpServers": {
102
+ "mcp-dblp": {
103
+ "command": "uvx",
104
+ "args": ["mcp-dblp"]
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ ### From Source (Development)
111
+
112
+ ```bash
113
+ git clone https://github.com/szeider/mcp-dblp.git
114
+ cd mcp-dblp
115
+ uv venv && source .venv/bin/activate
116
+ uv pip install -e .
117
+ ```
118
+
119
+ Then configure Claude Desktop with:
120
+
121
+ ```json
122
+ {
123
+ "mcpServers": {
124
+ "mcp-dblp": {
125
+ "command": "uv",
126
+ "args": ["--directory", "/path/to/mcp-dblp/", "run", "mcp-dblp"]
127
+ }
128
+ }
129
+ }
130
+ ```
131
+
132
+ ------
133
+
134
+ ## Prompt
135
+
136
+ Included is an [instructions prompt](./instructions_prompt.md) which should be used together with the text containing citations. On Claude Desktop, the instructions prompt is available via the electrical plug icon.
137
+
138
+
139
+ ## Tool Details
140
+
141
+ ### search
142
+
143
+ Search DBLP for publications using a boolean query string.
144
+
145
+ **Parameters:**
146
+
147
+ - `query` (string, required): A query string that may include boolean operators 'and' and 'or' (case-insensitive)
148
+ - `max_results` (number, optional): Maximum number of publications to return. Default is 10
149
+ - `year_from` (number, optional): Lower bound for publication year
150
+ - `year_to` (number, optional): Upper bound for publication year
151
+ - `venue_filter` (string, optional): Case-insensitive substring filter for publication venues (e.g., 'iclr')
152
+ - `include_bibtex` (boolean, optional): Whether to include BibTeX entries in the results. Default is false
153
+
154
+ ### fuzzy_title_search
155
+
156
+ Search DBLP for publications with fuzzy title matching.
157
+
158
+ **Parameters:**
159
+
160
+ - `title` (string, required): Full or partial title of the publication (case-insensitive)
161
+ - `similarity_threshold` (number, required): A float between 0 and 1 where 1.0 means an exact match
162
+ - `max_results` (number, optional): Maximum number of publications to return. Default is 10
163
+ - `year_from` (number, optional): Lower bound for publication year
164
+ - `year_to` (number, optional): Upper bound for publication year
165
+ - `venue_filter` (string, optional): Case-insensitive substring filter for publication venues
166
+ - `include_bibtex` (boolean, optional): Whether to include BibTeX entries in the results. Default is false
167
+
168
+ ### get_author_publications
169
+
170
+ Retrieve publication details for a specific author with fuzzy matching.
171
+
172
+ **Parameters:**
173
+
174
+ - `author_name` (string, required): Full or partial author name (case-insensitive)
175
+ - `similarity_threshold` (number, required): A float between 0 and 1 where 1.0 means an exact match
176
+ - `max_results` (number, optional): Maximum number of publications to return. Default is 20
177
+ - `include_bibtex` (boolean, optional): Whether to include BibTeX entries in the results. Default is false
178
+
179
+ ### get_venue_info
180
+
181
+ Retrieve detailed information about a publication venue.
182
+
183
+ **Parameters:**
184
+
185
+ - `venue_name` (string, required): Venue name or abbreviation (e.g., 'ICLR' or full name)
186
+
187
+ ### calculate_statistics
188
+
189
+ Calculate statistics from a list of publication results.
190
+
191
+ **Parameters:**
192
+
193
+ - `results` (array, required): An array of publication objects, each with at least 'title', 'authors', 'venue', and 'year'
194
+
195
+ ### add_bibtex_entry
196
+
197
+ Add a BibTeX entry to the collection for later export.
198
+
199
+ **Parameters:**
200
+
201
+ - `dblp_key` (string, required): The DBLP key from search results (e.g., "conf/nips/VaswaniSPUJGKP17")
202
+ - `citation_key` (string, required): The citation key to use in the .bib file (e.g., "Vaswani2017")
203
+
204
+ **Behavior:**
205
+
206
+ - Fetches BibTeX entry directly from DBLP using the provided key
207
+ - Replaces the citation key with your custom key
208
+ - Adds to session collection (duplicate keys are overwritten)
209
+ - Returns immediate success/failure feedback with collection count
210
+ - Allows retry of individual failed entries
211
+
212
+ ### export_bibtex
213
+
214
+ Export all collected BibTeX entries to a .bib file.
215
+
216
+ **Parameters:**
217
+
218
+ - `path` (string, required): Absolute path for the .bib file (e.g., "/path/to/refs.bib")
219
+
220
+ **Behavior:**
221
+
222
+ - Saves all entries added via `add_bibtex_entry` to the specified path
223
+ - The .bib extension is added automatically if missing
224
+ - Parent directories are created if needed
225
+ - Clears the collection after successful export
226
+ - Returns the full path to the saved file
227
+ - Returns error if collection is empty
228
+
229
+ **Important Note:** The BibTeX entries are fetched directly from DBLP with a 10-second timeout protection and are not processed, modified, or hallucinated by the LLM. This ensures maximum accuracy and trustworthiness of the bibliographic data. Only the citation keys are modified as specified. If a request times out, an error message is returned and the entry is not added to the collection.
230
+
231
+ ------
232
+
233
+ ## Example
234
+
235
+ ### Input text:
236
+
237
+ > Our exploration focuses on two types of explanation problems, abductive and contrastive, in local and global contexts (Marques-Silva 2023). Abductive explanations (Ignatiev, Narodytska, and Marques-Silva 2019), corresponding to prime-implicant explanations (Shih, Choi, and Darwiche 2018) and sufficient reason explanations (Darwiche and Ji 2022), clarify specific decision-making instances, while contrastive explanations (Miller 2019; Ignatiev et al. 2020), corresponding to necessary reason explanations (Darwiche and Ji 2022), make explicit the reasons behind the non-selection of alternatives. Conversely, global explanations (Ribeiro, Singh, and Guestrin 2016; Ignatiev, Narodytska, and Marques-Silva 2019) aim to unravel models' decision patterns across various inputs.
238
+
239
+ ### Output text:
240
+
241
+ > Our exploration focuses on two types of explanation problems, abductive and contrastive, in local and global contexts \cite{MarquesSilvaI23}. Abductive explanations \cite{IgnatievNM19}, corresponding to prime-implicant explanations \cite{ShihCD18} and sufficient reason explanations \cite{DarwicheJ22}, clarify specific decision-making instances, while contrastive explanations \cite{Miller19}; \cite{IgnatievNA020}, corresponding to necessary reason explanations \cite{DarwicheJ22}, make explicit the reasons behind the non-selection of alternatives. Conversely, global explanations \cite{Ribeiro0G16}; \cite{IgnatievNM19} aim to unravel models' decision patterns across various inputs.
242
+
243
+ ### Output Bibtex
244
+
245
+ > All references have been successfully exported to a BibTeX file at: /absolute/path/to/bibtex/20250305_231431.bib
246
+
247
+ ```
248
+ @article{MarquesSilvaI23,
249
+ author = {Jo{\~{a}}o Marques{-}Silva and
250
+ Alexey Ignatiev},
251
+ title = {No silver bullet: interpretable {ML} models must be explained},
252
+ journal = {Frontiers Artif. Intell.},
253
+ volume = {6},
254
+ year = {2023},
255
+ url = {https://doi.org/10.3389/frai.2023.1128212},
256
+ doi = {10.3389/FRAI.2023.1128212},
257
+ timestamp = {Tue, 07 May 2024 20:23:47 +0200},
258
+ biburl = {https://dblp.org/rec/journals/frai/MarquesSilvaI23.bib},
259
+ bibsource = {dblp computer science bibliography, https://dblp.org}
260
+ }
261
+
262
+ @inproceedings{IgnatievNM19,
263
+ author = {Alexey Ignatiev and
264
+ Nina Narodytska and
265
+ Jo{\~{a}}o Marques{-}Silva},
266
+ title = {Abduction-Based Explanations for Machine Learning Models},
267
+ booktitle = {The Thirty-Third {AAAI} Conference on Artificial Intelligence, {AAAI}
268
+ 2019, The Thirty-First Innovative Applications of Artificial Intelligence
269
+ Conference, {IAAI} 2019, The Ninth {AAAI} Symposium on Educational
270
+ Advances in Artificial Intelligence, {EAAI} 2019, Honolulu, Hawaii,
271
+ USA, January 27 - February 1, 2019},
272
+ pages = {1511--1519},
273
+ publisher = {{AAAI} Press},
274
+ year = {2019},
275
+ url = {https://doi.org/10.1609/aaai.v33i01.33011511},
276
+ doi = {10.1609/AAAI.V33I01.33011511},
277
+ timestamp = {Mon, 04 Sep 2023 12:29:24 +0200},
278
+ biburl = {https://dblp.org/rec/conf/aaai/IgnatievNM19.bib},
279
+ bibsource = {dblp computer science bibliography, https://dblp.org}
280
+ }
281
+
282
+ @inproceedings{ShihCD18,
283
+ author = {Andy Shih and
284
+ Arthur Choi and
285
+ Adnan Darwiche},
286
+ editor = {J{\'{e}}r{\^{o}}me Lang},
287
+ title = {A Symbolic Approach to Explaining Bayesian Network Classifiers},
288
+ booktitle = {Proceedings of the Twenty-Seventh International Joint Conference on
289
+ Artificial Intelligence, {IJCAI} 2018, July 13-19, 2018, Stockholm,
290
+ Sweden},
291
+ pages = {5103--5111},
292
+ publisher = {ijcai.org},
293
+ year = {2018},
294
+ url = {https://doi.org/10.24963/ijcai.2018/708},
295
+ doi = {10.24963/IJCAI.2018/708},
296
+ timestamp = {Tue, 20 Aug 2019 16:19:08 +0200},
297
+ biburl = {https://dblp.org/rec/conf/ijcai/ShihCD18.bib},
298
+ bibsource = {dblp computer science bibliography, https://dblp.org}
299
+ }
300
+
301
+ @inproceedings{DarwicheJ22,
302
+ author = {Adnan Darwiche and
303
+ Chunxi Ji},
304
+ title = {On the Computation of Necessary and Sufficient Explanations},
305
+ booktitle = {Thirty-Sixth {AAAI} Conference on Artificial Intelligence, {AAAI}
306
+ 2022, Thirty-Fourth Conference on Innovative Applications of Artificial
307
+ Intelligence, {IAAI} 2022, The Twelveth Symposium on Educational Advances
308
+ in Artificial Intelligence, {EAAI} 2022 Virtual Event, February 22
309
+ - March 1, 2022},
310
+ pages = {5582--5591},
311
+ publisher = {{AAAI} Press},
312
+ year = {2022},
313
+ url = {https://doi.org/10.1609/aaai.v36i5.20498},
314
+ doi = {10.1609/AAAI.V36I5.20498},
315
+ timestamp = {Mon, 04 Sep 2023 16:50:24 +0200},
316
+ biburl = {https://dblp.org/rec/conf/aaai/DarwicheJ22.bib},
317
+ bibsource = {dblp computer science bibliography, https://dblp.org}
318
+ }
319
+
320
+ @article{Miller19,
321
+ author = {Tim Miller},
322
+ title = {Explanation in artificial intelligence: Insights from the social sciences},
323
+ journal = {Artif. Intell.},
324
+ volume = {267},
325
+ pages = {1--38},
326
+ year = {2019},
327
+ url = {https://doi.org/10.1016/j.artint.2018.07.007},
328
+ doi = {10.1016/J.ARTINT.2018.07.007},
329
+ timestamp = {Thu, 25 May 2023 12:52:41 +0200},
330
+ biburl = {https://dblp.org/rec/journals/ai/Miller19.bib},
331
+ bibsource = {dblp computer science bibliography, https://dblp.org}
332
+ }
333
+
334
+ @inproceedings{IgnatievNA020,
335
+ author = {Alexey Ignatiev and
336
+ Nina Narodytska and
337
+ Nicholas Asher and
338
+ Jo{\~{a}}o Marques{-}Silva},
339
+ editor = {Matteo Baldoni and
340
+ Stefania Bandini},
341
+ title = {From Contrastive to Abductive Explanations and Back Again},
342
+ booktitle = {AIxIA 2020 - Advances in Artificial Intelligence - XIXth International
343
+ Conference of the Italian Association for Artificial Intelligence,
344
+ Virtual Event, November 25-27, 2020, Revised Selected Papers},
345
+ series = {Lecture Notes in Computer Science},
346
+ volume = {12414},
347
+ pages = {335--355},
348
+ publisher = {Springer},
349
+ year = {2020},
350
+ url = {https://doi.org/10.1007/978-3-030-77091-4\_21},
351
+ doi = {10.1007/978-3-030-77091-4\_21},
352
+ timestamp = {Tue, 15 Jun 2021 17:23:54 +0200},
353
+ biburl = {https://dblp.org/rec/conf/aiia/IgnatievNA020.bib},
354
+ bibsource = {dblp computer science bibliography, https://dblp.org}
355
+ }
356
+
357
+ @inproceedings{Ribeiro0G16,
358
+ author = {Marco T{\'{u}}lio Ribeiro and
359
+ Sameer Singh and
360
+ Carlos Guestrin},
361
+ editor = {Balaji Krishnapuram and
362
+ Mohak Shah and
363
+ Alexander J. Smola and
364
+ Charu C. Aggarwal and
365
+ Dou Shen and
366
+ Rajeev Rastogi},
367
+ title = {"Why Should {I} Trust You?": Explaining the Predictions of Any Classifier},
368
+ booktitle = {Proceedings of the 22nd {ACM} {SIGKDD} International Conference on
369
+ Knowledge Discovery and Data Mining, San Francisco, CA, USA, August
370
+ 13-17, 2016},
371
+ pages = {1135--1144},
372
+ publisher = {{ACM}},
373
+ year = {2016},
374
+ url = {https://doi.org/10.1145/2939672.2939778},
375
+ doi = {10.1145/2939672.2939778},
376
+ timestamp = {Fri, 25 Dec 2020 01:14:16 +0100},
377
+ biburl = {https://dblp.org/rec/conf/kdd/Ribeiro0G16.bib},
378
+ bibsource = {dblp computer science bibliography, https://dblp.org}
379
+ }
380
+ ```
381
+
382
+ ------
383
+
384
+ ## Disclaimer
385
+
386
+ This MCP-DBLP is in its prototype stage and should be used with caution. Users are encouraged to experiment, but any use in critical environments is at their own risk.
387
+
388
+ ------
389
+
390
+ ## License
391
+
392
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
393
+
394
+ ------